技術汰舊換新,是每個經營超過十年的組織,都必須經歷的過程。營運邁入第12個年頭的均一教育平臺,也正在面對這項挑戰。
均一教育平臺,是目前全臺最大的免費線上教育平臺,由非營利的均一平台教育基金會(簡稱均一)負責營運,提供超過9萬2千題練習題、3萬5千部教學影片,涵蓋國小至高中的教學資源,至今服務超過440萬名師生。
均一平臺的基礎程式碼專案junyiacademy,複製自全球最大免費線上教學平臺可汗學院(Khan academy)2013年所釋出的開源程式碼,這是一套單體式架構的線上課程平臺系統。均一開發團隊更以此為基礎,十年來打造了許多在地化功能。隨著帳戶數和內容逐漸擴增,程式碼的複雜度與日俱增,後續的開發和維運也變得越來越不容易。
平臺發展超過十年,程式碼過時且架構複雜雙重挑戰
「早期看到蠻多產品發展機會、市場對接點,在基礎不夠好時就行動,造成了後續的疊床架屋。」均一平台教育基金會平臺營運總監蕭仲廷坦言。
他回憶,組織草創初期,技術團隊尚未建立成熟的開發和管理知識,開發過程沒有確保程式碼的品質,隨著平臺內容和客製化功能越來越豐富,技術債也不斷累積,逐漸拖慢了開發新功能的速度。
程式碼的架構複雜,不僅造成開發速度緩慢,後續維運不易,甚至,也讓開發團隊的自信心越來越低落。每當產品經理提出需求,技術人員往往得花大量時間改動相關的程式碼,越來越不敢給出太大的承諾,久而久之,「慢慢變成只做小功能,無法讓平臺大幅進展。」蕭仲廷說。雖無法治標,均一先建立監控機制,將程式臭蟲資訊視覺化,也調整開發流程來因應,但均一還有更大的挑戰。
均一平臺所用的開發語言是Python 2,長年來,開發團隊都用同樣版本的開發語言,來打造各種新功能。但在2020年,Python軟體基金會宣布停止維護Python 2,無疑對均一投下一枚震撼彈。
蕭仲廷表示,Python的優勢是豐富的生態圈,但在官方停止支援舊版語言後,新套件開發者可能會放棄支援舊版,這也意味著,開發語言不升級,恐怕未來無法使用新出現的好工具,「均一想不斷迭代各種新功能,無法使用新套件,對工程師是一件痛苦的事。」
更大的風險是,「繼續使用舊版語言,就像溫水煮青蛙,」蕭仲廷解釋,系統乍看沒有問題,「一旦發生問題就會很難處理。」
為了避免陷入這樣的困境,均一決定在2019年展開程式碼大升級,從Python 2升級至Python 3。
小規模嘗試微服務架構,卻造成後續維運不易
均一更希望趁著語言升級之際,同時改善程式碼架構的複雜度,蕭仲廷決定改用微服務架構,來改造原本的大型單體式系統。
不過,是不是能夠直接用新版語言就地重構呢?均一志工先在2018年繪製出平臺母專案junyiacademy的相依性架構圖,發現不同節點間的相依性遠比想像中更複雜,不僅無法找出模組的邊界,模組之間也很難定義出上下層的位階,來進一步拆解。這也是可汗學院升級系統時遇到的同樣挑戰。
均一所用的公雲環境,對Python 2和 3所支援的SDK截然不同,得花很大比例的程式碼人工修改才能支援新版。後來,均一決定放棄花了十年維護的母專案程式碼,不用新版語言重構,而是用Python 3直接開發全新版本的功能。均一也沒有一口氣同時改寫全套系統,而是從既有架構中,先拆出一支可以獨立提供的元件服務,先翻新該服務的程式碼,再陸續解除服務中多餘的依賴關係。經過小規模試做,均一成功將拆解出內容管理服務,先用Pyhone 3開發出了微服務的版本。
均一原以為照著同樣的作法,就能慢慢將老舊架構上的元件和功能一一翻新,沒想到又遇到另一個難關,內容管理服務上線後,後續在維運上卻問題不斷。
蕭仲廷解釋,平臺的核心是內容和帳號管理,許多案例和功能都依賴內容服務,彼此會有許多程式碼串接和整合。當這個核心功能獨立之後,反而提高了維運的困難度。例如,每次系統修改時,開發團隊得同時修改舊版平臺和新版內容服務兩邊的程式碼,增加了不少工作時間,有時開發人員修改程式碼時,忽略了另一邊的調整,反而衍生更多系統故障的可能性。
經歷一番波折,均一決定將用新版語言開發的內容管理功能,再次整合回舊有單體式架構的系統中,暫時放棄獨立成微服務的做法。一切看似重頭來過,但蕭仲廷樂觀看待這一段過程,「至少我們嘗試過了架構精簡和升級Python 3,過程中也培養出升級程式碼的選題判斷力。」
重整旗鼓,歷經4年完成程式碼升級
即使遭遇架構轉換挫敗,均一並未因此停住腳步。2021年,他們轉而專注在程式碼升級工程,先逐步淘汰Python 2,將程式碼更換為Python 3。均一不是一口氣汰換所有程式碼,而是將舊版語言的程式碼,和新版語言的程式碼,分成兩支不同的服務同時執行,蕭仲廷以「邊開車邊換輪子」來形容這個做法,如此一來,「可以逐步修改程式碼,同時確保系統不會斷線。」
在重整過時程式碼時,蕭仲廷坦言,「最大挑戰的是建立一步步的處理策略。」均一花了不少時間,
才制定出一套程式碼升級的修改步驟,指派團隊中少數幾位工程師負責系統升級,歷經了4年,他們總共升級了400個API、200個頁面,也更新了20個第三方套件。
在開發Python 3新版程式碼前,均一技術團隊先盤點出升級範圍,要求技術團隊不再用Python 2開發新功能,避免增加更多升級負擔,才開始改寫既有程式碼與Python 3相容,並且同步精簡程式碼。
到了2021年第四季,均一完成了第一階段工程,不只完成了多項升級,更清除了一半的程式碼。到了2022年初,均一技術團隊開始更新所用的第三方Python套件,共計20個套件。他們也升級雲端基礎設施,來提供Python 3的執行環境。到了2022年,均一先完成了所有網頁頁面程式的升級。
由於技術團隊中並非所有工程師都投入升級工程,因此,均一也在開發流程中設置了Python 3的程式碼檢核機制,確保新開發的功能不再使用過時程式碼。到了2023年,正式環境預設改用Python 3,3月時將內容管理服務整合回主站,陸續將相關API從v1版升級到了v2版本後,均一在2024年初完成了全部的升級,並在今年2月時移除了老舊程式碼,完成全平臺的升級工程。
最近,均一技術團隊的焦點重新回到架構重整課題,再次挑戰將既有架構改為微服務架構。
有了過往的經驗,均一團隊不再大刀闊斧,而是先從架構明確或周邊的功能開始著手。若產品經理期望改動較複雜的功能,技術團隊也會參考以往經驗,來評估可行性和時程。不只如此,均一也趁重整架構之際,同步找出可淘汰的平臺功能,來節省不必要的重構工作。目前,他們也將平臺前端伺服器部署到容器化雲端環境。未來,均一架構重整工程會對齊發展策略來調整。
(攝影/洪政偉)
投入生成式AI應用,靠提示工程打造AI助教
除了汰換程式碼和架構重整,去年,均一也看準生成式AI的潛力,開始發展AI教學助理。蕭仲廷表示,過往均一內容偏重數理科教材,語言科目相對較弱。ChatGPT問世後,蕭仲廷看上其英文能力強,成了均一用來強化語言科目教材的切入點。
例如,去年3月,均一推出英語口說助教Jutor測試版,讓學生同時練習英文檢定標準的聽力與閱讀,AI助教會提供改寫建議,以中文解釋更好的回答方式。正式版還能協助高中生練習學測英文作文,以學測的評分標準來批改使用者上傳的英文作文。
今年四月,均一還推出了一款AI影片學習助教的測試版,可以協助老師生成備課資源,將平臺上的教學影片轉化為課程計畫,輸出搭配影片使用的學習單等,還能隨時回覆學生問題,並以蘇格拉底式的對話方式引導學生思考,而不是直接給予答案。
均一主要透過提示工程來調校LLM模型的回應,打造出多款生成式AI應用。蕭仲廷解釋,他們注重探索更多潛在應用領域,「持續關注和嘗試,但不會躁進,」一旦出現更成熟的新技術或既有技術成本大幅降低,招募人力到位,他們就會更積極發展教育領域不同面向的AI應用。
期望吸引更多認同組織價值的技術人才
擔任平臺營運總監的蕭仲廷,在均一從事軟體開發已邁入第八個年頭。不過,蕭仲廷坦言,物理系畢業後,他無意往本科發展,對未來相當迷惘,為求一份穩定收入,才報名參加創業學校的課程,開始學習軟體開發。受訓時,他發現自己比他人能更快上手,漸漸地萌生了以技術協助他人的想法。結訓後,他留在創業學校協助培訓新創團隊。
但蕭仲廷沒有忘記在培訓時萌生的想法,比起協助一群人,他更希望靠技術力,對社會發揮更大的影響力。蕭仲廷反覆問自己:「是不是我生命中接受的教育出了問題,導致我對未來迷茫?」這個疑問,促使他加入均一,希望靠自己的能力改善教育現況,幫助教育體系中的學生不再迷茫。沒想到,一待就過了8年。
回首均一草創階段,軟體工程團隊人數不到十人,工程師不僅需要自己繪製介面,甚至要擔起產品經理的工作,前往教育現場蒐集第一線使用者需求。蕭仲廷沒有將這些工作視為負擔,反而認為自己十分幸運,能實際接觸到產品開發的全套流程。不同一般企業,「均一團隊成員更主動積極,更感受到自己的付出能對社會有所貢獻。」蕭仲廷說。
進入均一不到一年,蕭仲廷主動接手開發教案共享平臺。菜鳥工程師的他,捲起袖子從零做起,從系統開發、雲端基礎設施管理、測試、設計介面,到部署上線,幾乎一手包辦,他也實際從教師社群尋找關鍵使用者,挖掘使用需求,開發相應的功能。系統正式上線後,不僅協助教師獲得更好的交流環境,也讓效益回饋至學生學習上,讓蕭仲廷得到不少成就感。
有了當時的經驗,蕭仲廷帶領技術團隊時,願意嘗試理解不同工程師的開發願景,讓成員更有成就感。雖然非營利組織的薪資條件不如商業公司,但蕭仲廷相信,均一有機會吸引到更多願意嘗試不同路徑的資訊人才,就像八年前的他,將迷茫化為一份助力,用IT技術來提升臺灣的教育環境。
CIO小檔案
均一平台教育基金會平臺營運總監蕭仲廷
學歷:臺灣師範大學物理學系
經歷:大學畢業後參與課程與自學數位新創知識與撰寫程式碼的技能,曾在新創學校任職。在2016年加入均一,曾任軟體工程師、產品負責人、軟體組長,目前擔任平臺營運總監,帶領20人的平臺營運團隊,組織平臺開發走向,並在今年完成系統升級工程
組織檔案
均一平台教育基金會
●成立時間:2017年(均一教育平臺在 2012 上線,由誠致教育基金會維運,在 2017 年底成立均一平台教育基金會後接手經營)
●主要服務內容:營運線上教學平臺,免費提供全臺國小至高中師生使用、舉辦教師研習活動。累積註冊人次達485萬人。
●員工數:截至2022年共72人
●董事長兼執行長:呂冠緯
平臺營運部門檔案
●平臺營運主管職稱:平臺營運總監
●平臺營運部門主管姓名:蕭仲廷
●平臺營運部門人數:20人
IT大事記
●2012年:取得可汗學院授權後,沿用可汗學院約80萬行程式碼和教學影片,均一教育平臺正式上線
●2013年:對應臺灣教育體制課程設計,開始錄製國小至高中的數學課程,開發對應的練習題
●2014年~2016年:平臺建置更多教材內容,提供教學影片
●2017年:均一教育平臺新增和優化多項功能、ShareClass平臺上線
●2018年:新增教師自組卷功能和共享班級功能
●2019年:運用AI診斷學生的學習能力,自動推薦符合學生能力的題目、小規模嘗試微服務架構
●2021年:開始將Python 2升級至Python 3
●2022年:升級第三方Python套件和雲端基礎設施、將獨立的內容管理功能整合回既有架構、升級頁面和API、建立Python 3單元測試
●2023年:平臺前端伺服器和GAI工具測試環境改部署到公雲容器化服務
●2024年:移除以Python 2撰寫的程式碼、完成程式碼升級工程、推出正式版英語口說助教Jutor和影片學習助教AI狐狸貓測試版
熱門新聞
2024-10-14
2024-10-13
2024-10-13
2024-10-11
2024-10-14
2024-10-12
2024-10-11