均一好省-如何降低系統平台費用

這一篇主要是寫給後端工程師,並且是對於降低系統平台費用有興趣的人看的,如果是對前端、資料有興趣的,請期待我們其他工程師的文章。

隨著平台使用者越來越多、流量越來越大,Google Cloud Platform 的花費越來越高,降低平台費用成為工程師滿重要的一件事情。我們評估了一些可能的方向,短期來說,可以就 API、Backend Code 做優化,長期來說可以考慮調整系統架構,或是尋找更便宜的解決方案,而這一篇是針對短期方案做說明,也記錄我們最近三個月所做的努力。

系統費用分析

降低費用的第一步,我們要先知道我們到底把錢花在哪邊,在 GCP 的 Billing Page 有列各個 GCP 服務的花費,我們統計了一下各項花費,可以得到以下這張圖,Datastore Read、Frontend Instance Hours 這兩項佔了大宗,其實這個滿直觀的,因為均一本來就是架在 GAE 上,把錢花在資料讀取、以及開機器處理 request 這兩件事情上是相當容易理解。因此,我們可以把省錢這個 project 的目標先訂在

  1. 降低 Datastore Read
  2. 降低 Frontend Instance Hours

因為影響 Frontend Instance Hours 的因素滿多的,比較難掌握,而 Datastore Read 則比較直接,只要網站少 fetch 一個 entity,就直接省下一筆錢,所以這篇文章會聚焦於減少 Datastore Read。

為了降低 Datastore read,我們做了一個假設,我們只要知道使用者最常到訪哪個頁面,或者最常發出哪些 API,我們只要優化相關的頁面、API 的 Datastore Read,就可以降低費用了。因此,我們統計了 10 天內常用的 API 執行次數。

統計各個 API 的執行次數

根據統計,執行次數前 10 名的 API,就佔了全部執行次數的 6 成以上,所以只要優化前 10 名的 API,應該就可以降低不少費用,於是,我們開始仔細研究這些 API。不過,我們仔細看完之後,發現能優化的空間不多。

回到我們一開始的假設,執行次數高是不是就代表值得優化呢?其實不然,因為雖然有些 API 的執行次數很高,但是實際 Datastore Read 的次數卻很少,所以再怎麼優化這些 API ,也很難降低費用。我們少考慮了各個 API 的 Datastore Read 次數這項重要因子。

統計各個 API 的 Datastore Read 次數

要在 GAE 上計算各個 API 的 Datastore Read 不會太難,因為有一個叫做 AppStats 的工具,可以讓我們很方便的統計 Datastore Read,如下圖,他不僅告訴我們 Datastore Read,還有其他有用的資訊可以看,像是 server 在 Timeline 中實際到底做了什麼事情。我們開始用 AppStats 統計前 30 名的 API,看看到底是哪些 API 讀了很多資料出來。

統計完各個 API Datastore Read 後,我們現在又離事實更接近了一步,我們發現,有些 API 雖然排名前 10 名,但是他的 Datastore Read 非常低,所以可以先不要選擇他們來進行優化。相對的,我們也發現有些項目的 API 在10名以外 ,但它的 Datastore Read 卻異常地高,每次都會讀取上千筆資料出來,因此這是很值得優化的 API。將這支 API 優化後,大概可以下降 GCP 花費的 5%,不過這只是剛好遇到前人沒寫好後台的情況,不是天天都會發生。

我們期待的是找到 Datastore Read 總量多的項目,然後透過 Cache 、CDN 優化,來降低 Read 次數。在這過程中,也發現了一些 API 是符合上述條件的,像是抓習題的 API,因為習題不會天天改變,所以很適合我們用 Cache 策略降低 Datastore Read,而降低 Datastore Read 的同時也會縮短 Response Time,屬於一舉兩得的優化。

備份的 Datastore Read

但是事情是不是如我們想像的那麼順利呢?當然不是啦!我們將前面 30 名的 API 統計完之後,發現這跟帳單上的 Total Datastore Read 還有一大截距離,就算我們把不必要的 Datastore Read 拿掉,並且用 Cache、CDN 優化之後,也省不超過 10%,一定還有什麼漏算的!

我們後來熊熊發現,除了 API 之外,還有一個 Datastore Read 的大宗:備份,我們的備份大概佔了至少 50% 的 Datastore Read,如果按照現在使用者的成長速度,Backup 會越來越多,最終變成基金會費用的絆腳石。過去覺得沒有必要刪除 Datastore,因為覺得保留使用者資料很重要,可以給使用者看他們的學習歷程,還可以拿來訓練 Model,讓我們的推薦越來越精準,但是意識到 Backup 這麼貴,我們一定要想辦法開始刪除 Datastore 的資料。

這時候,我突然理解 Datastore Delete 這個操作的必要性,Datastore Delete 這個操作雖然需要費用,但是他能幫我們省下很多備份的 Datastore Read 花費。

後記

我們的省錢專案還在進行中,我們還在與他奮戰。接下來我們要在不改變使用者服務的情況下,嘗試把資料放到比較便宜的地方,像是 Cloud SQL、Cloud Storage 或是 BigQuery 等等,祝我們好運。

Photo by Fabian Blank on Unsplash

分享這篇文章:

相關文章

生命的改變從教室開始

在孩子長大成人之前,有將近一半的時間在學校度過,許多孩子的成長與改變也在這裡發生。有些孩子從討厭數學到數學成績名列前茅、有些孩子從討厭學習到願意學習,卻也有些孩子無法前進,不論是學習動機低落、教育資源受限,都是可能的原因之一。

也因為看見了這些孩子的困境,我們希望透過科技的力量,提供孩子們優質且免費的學習資源,落實教育平權,打造一座沒有牆的教室。

我發現,原來教學就該是看見孩子真正需要被幫忙的地方,而不是看教學指引而已。

大同國小.林政琦老師

教室裡的改變

均一在一次次與學校、課輔班的合作中,看到許多成長與改變的故事。

我們看到有孩子從一開始放棄數學、不敢發問,到後來能主動舉手發問,甚至能教其他同學;也看到有老師體悟到成績不是一切,重要的是孩子們的學習態度以及如何面對挑戰與困難。

可能有一些東西並不是,成績單上面看得到的,有的時候我們好像,太在乎這個學生的表現是集中在成績這一塊。

文英國中.李延慶老師

孩子有無限多的可能正在教室中發生,邀請你與我們一起,創造更多免費優質的教育資源,讓更多孩子的未來有好的改變。

你也能一起參與改變

均一是一個非營利組織,為了專注於我們的願景使命,我們不承接政府預算、不發展有對價關係的盈利,仰賴與我們有相同願景使命的大眾捐款支持,期待集合眾人之力,實現真實的共創與共好。

邀請你一起參與 >> 公益支持

不分城鄉,教室裡的學習弱勢

不論在都市或是偏鄉,教室裡都存在著學習弱勢。每個孩子的學習步調、吸收知識速度都不同,如果孩子們沒辦法在教室裡學到適合自己步調與發展需求的內容,都有可能處於學習弱勢。我們希望透過平台上免費有趣的學習影片與習題、科技化的平台輔助功能,讓這些孩子能夠按照自己的步調學習,培養自信找回成就感,發揮原生天賦。

我們藉由課輔班合作計畫與學習扶助計畫,讓更多學習速度不同的孩子,得到差異化的教學,弭平學習落差,並在過程中持續鼓勵、陪伴孩子與教師

課輔班合作計畫

透過與課輔班合作,均一提供平板筆電載具、專業師資培訓與觀課陪伴,協助課輔班老師能以遊戲化的數學學習模式,讓弱勢孩子重拾學習興趣、鞏固基本學力。合作期間,也看到許多老師陪伴孩子的動人故事,我們記錄這些過程與故事,也邀請有興趣的你,點擊下列文章更了解計畫成果,也認識課輔班老師的故事!

有位平常學習上較落後的孩子,跟我分享,是磨數營讓她愛上數學。甚至跟我說 : 努力沒有做不到的事!

屏東躍愛課輔班 林綺漩 老師

學習扶助計畫

在 106 學年度,均一與苗栗縣和屏東縣分別合作進行「結合均一的課中補救」試辦計畫。藉由一般課堂的時間,抽離需要額外學習扶助的孩子到「學習扶助班級」,搭配均一平台的使用,有效診斷學生的學習斷點,提供個人化學習。

經過三年的顯著成效與現場教師的正面迴響,109 學年度起,均一在苗栗、屏東推動學習扶助「深化」模式,除了繼續數學課中學習扶助外,期盼藉由更深度投入的專案教師、更具規模的教師社群、更系統性的增能與支持,為學習扶助的師生帶來更有效的教與學。

學習扶助計畫進行的這幾年,我們不只看見許多孩子學習的進步,更看見許多老師教書育人的理念,邀請你點進下方文章,認識其中一位專案教師的故事。

苗栗文英國中李老師照片

帶孩子走出教室裡的無力感 —— 苗栗延慶老師分享

在眾多均一平台上的老師當中,今天想特別與大家分享延慶老師的故事。延慶老師是「均一課中學習扶助深化專案」的老師,他觀察到,傳統一體適用的教學當中,班級內存在的學習落差影響了孩子的學習信心;透過「課中學習扶助」,老師們能用不同的教學方式,幫助孩子建立學習成就感,以及對未來的信心。

了解更多 »

你也能一起參與改變

均一是一個非營利組織,為了專注於我們的願景使命,我們不承接政府預算、不發展有對價關係的盈利,仰賴與我們有相同願景使命的大眾捐款支持,期待集合眾人之力,實現真實的共創與共好。

邀請你一起參與 >> 公益支持

是老師,也是教育創新家

在均一有一群老師,不只出現在第一線教學現場,分享如何利用平台提供孩子們差異化教學,給學校或課輔班的老師,更設計出多元跨領域的課程,激發孩子們的學習動機。

我們在台灣擴大推廣 Code.org 的 Hour of Code 一小時玩程式,團隊夥伴製作中文化插電與不插電的程式課程、結合創意的教學設計,讓 Code.org 這套全球廣受好評的程式課程,在台灣的使用濃度達到世界排名第九、亞洲排名第二,讓臺灣的程式教育能夠與國際接軌。課程資源與師資培育,都逐步與國際接軌。

「模組化的課程設計,不論對教師教學、學生學習都有很大的幫助;因為課程規劃得很完整,老師能很清楚第一步要如何開始、接下來又該怎麼做,以及背後的教學目標,搭配程式闖關遊戲,小朋友會更有動機去嘗試、思考,甚至他們做完後、還會想再做一次,主動地去複習所學!」

太平國小 陳宜均老師

為了讓孩子透過程式學習運算思維,均一也設計了一系列 Scratch 課程,採取專案導向學習 (Project-Based Learning),以深入淺出的講義或影片引導,經由不同領域主題,’當孩子面對給予的任務,將學習如何解構問題、摘要重點、發現規律,循序漸進地練習程式的思考。

數電快閃教室

數電快閃教室計畫,是團隊夥伴到教學現場透過「數學 X 電腦科學」的跨領域課程,將好玩、互動性高的電腦科學融入數學的課程內容,讓孩子覺得原來數學可以這麼有趣,學到的知識也可以加以應用。均一也透過此課程和現場老師分享跨領域教學,探索更多的學習可能

後續雖遇上五月份的疫情,團隊發揮創意推出「線上快閃教室」,以線上的形式,快閃 18 所國小的線上教室,帶來「自學力就是你的超能力」主題分享,總計有 329 位學生參與,我們希望藉由這個活動,讓孩子在疫情期間能夠找到自己學習的目標和節奏。

當我們 Code 在一起說故事

「當我們 Code 在一起說故事」專案計畫,也就是平台上「電腦科學起步走|一起說故事」課程,是源自 Google 開發的 CS First,均一除了將其中文化翻譯,並且配合 108 課綱將課程內容和教學模組在地化。課程內容以程式作為跨域學習的槓桿,融合電腦科學、語文、音樂、藝術,鼓勵孩子用想像力編寫動人的故事,並且練習程式的思考。

此課程也獲選「 第三屆未來教育.臺灣100 – 全臺年度百大創新教學專案」的獎項殊榮。

每個孩子都希望能創造屬於自己的故事,細緻的課程架構,並附有專人引導的自學影片,孩子可以根據自己的學習和創作速度前進,人人都有成就感!

KIST: 拯民國小.宋亭緻老師

你也能一起參與改變

均一是一個非營利組織,為了專注於我們的願景使命,我們不承接政府預算、不發展有對價關係的盈利,仰賴與我們有相同願景使命的大眾捐款支持,期待集合眾人之力,實現真實的共創與共好。

 邀請你一起參與 >> 公益支持

教室裡的風景

每個人的生命當中,都有那麼幾位令人印象深刻的老師。有的老師幽默風趣、有的嚴厲而堅毅,有的老師像是再生父母,讓我們從學習與探索中,發揮生命更大的價值。

在 2021 年 的停課期間,有一種老師大量增加了,他們是守護孩子學習不中斷的「抗疫老師」,在短短幾天內,設法與孩子取得聯繫、使用各種數位工具,並給予遠距支持。

事實上,在在台灣的每一個角落,一直都能看見這些義無反顧為孩子付出的身影。以下是均一在推動教育改變的路上,遇到的幾位老師,希望透過簡短的文字、影片,與你一起分享,均一在教育現場的看見。

均一教師的身影

安溪國中——靜怡老師

靜怡老師任教於新北市安溪國中數學科,七年前開始使用均一教育平台,並將均一應用在「適性分組班」與自己的班級教學當中。

「讓孩子不會只是之前的挫折一直累積到最後,讓他可以在這裡找到讓他產生信心的地方。」/ 靜怡老師

點我看靜怡老師的完整分享 >>

 

安溪國中靜怡老師

 

高雄岡山教會課輔班——子婕老師  

子婕老師雖罹患罕病,仍完成中央大學數學、資工雙主修,更因為從小便與媽媽在教會服務弱勢孩童。研究所時對數位教學產生興趣、畢業後即投入弱勢教育。2020 年導入均一教學後,子婕老師與課輔團隊投入其中,幾乎天天討論到深夜。雖然孩子的學習成就並沒有一飛沖天,但她認為,孩子的正面心態、學習品格才是第一順位。

「我希望這些孩子記得,小時候有這麼一群人拼 死拼活努力去愛他們,他們是值得被愛的。」/ 子婕老師

點我認識「弱勢課輔班計畫」>>

均一如何支持教師

均一經由支持教師,更規模化地影響孩子。

在子婕老師參與的弱勢課輔班計畫中,均一在兩年內培訓了 110 位教師,其中有 87% 的老師過去未曾使用數位平台輔助教學,在經過師資培訓後,提升了 20% 老師的教學信心,大多數老師更能夠獨立於課堂中教學,陪伴孩子探索數位學習平台,找到適合的學習內容。

除了弱勢課輔班計畫之外,均一長期與苗栗、屏東學習扶助班級合作,培養學習扶助科技教師。疫情期間,更曾累積上千名老師同時在線參與研習培訓,支持全台教師、家長陪伴孩子停課不停學。疫情之後,超過半數的現場教師仍持續採取科技搭配教學,數位學習將是教師、學生、家長不可或缺的關鍵能力。我們期待持續投入培訓資源與教學法開發,支持現場教師,進而支持更多孩子。

你也能一起參與改變

均一是一個非營利組織,為了專注於我們的願景使命,我們不承接政府預算、不發展有對價關係的盈利,仰賴與我們有相同願景使命的大眾捐款支持,期待集合眾人之力,實現真實的共創與共好。

邀請你一起參與 >> 公益支持