HKEAA with
Google Cloud Platform

Story Highlight

這次我們用了 Google Kubernetes Engine, Cloud SQL, Cloud KMS, Security Command Center, 及不同的Open Source Technologies 等服務來完成客戶的需求。不只協助他們符合當地政府的資安規條、獲得更好的數據即時性,同時也協助節省超過 70% 的服務與硬體成本。

公司介紹

香港考試及評核局 (Hong Kong Examinations and Assessment Authority, HKEAA) 是專責安排及統籌考試的香港法定機構,主要負責籌辦公開考試及評核,同時亦舉辦多項國際及專業資格考試。考評局是專業考評機構,致力舉辦高質素的考試及教育評核,並由訓練有素,經驗豐富的專業團隊提供各種相關服務。

產業:政府部門
專案所在地:香港

面對到的挑戰

HKEAA 在去年 (2021 年) 開始尋找一個能支援公開考試活動如香港中學文憑考試 (HKDSE) 以及教師語言能力評估 (LPAT) 的 IT 系統。即使舊有的系統在操作及管理上還能運作,但是考量到每次考試皆有大量的人力需求(監考人員等),以及在如今更強調數據驅動 (Data-driven) 和用戶體驗 (如自助式服務等) 的前提下,HKEAA 需要在最短的時間內完成這次的專案。

在過去,每個學生進入試場時需要把條碼 (Barcode) 貼在試題本上,監考人員會拿條碼掃描器去掃描並核對個人資料;考試結束後,老師就會收走所有的試題本,回到教室後再做一次掃描,並把數據傳送至 HKEAA,HKEAA 會確認是否有沒收到試題本等問題,等一切都沒問題才能讓學生離開。而現在整個香港約有 2,500 個考試據點,將來還會有更多,這使得學生等待的時間變得非常久,每次考試也需要有大量的人力支援。此外,由於條碼掃描器屬於硬體設備,已經用了超過十年,因此需要花費大量的硬體成本去修復跟更新(數百萬至千萬港幣/每次軟硬體更換)。

而在資安方面,由於這個專案是完全由第三方負責管理,因為 HKEAA 內部數據牽扯到機密的個人資料,因此在研發及系統管理上有非常高的資安要求,且數據只能存放在香港境內。

解決方案

了解 HKEAA 的挑戰後,時間對於我們在選擇方案是很大的關鍵,若使用傳統的服務器及儲存器等等,一定不能在時間內完成,因此整個專案我們選擇在 Google Cloud Platform 進行。

我們提供的服務主要是讓 HKEAA 能更方便的操作以及取得即時數據,節省在考試期間的人力安排與不必要的等待時間。舉例來說,在過去 HKEAA 使用一個比較舊的 Web Portal 讓主任查看各個考試試場的相關數據,如學生報到、收卷情況等,現在因為有新功能的需求以及更好的操作體驗,我們協助將一些原本的服務直接遷移到雲端轉成 Container 跑在 GKE 上,把沒有使用的服務刪除,額外加入一些新功能,並建構了一個全新的 Web Portal,幫助考試中心的主管可以即時掌握 2,500 個試場或以上的情況。包含這個 Web Portal 在內,我們一共幫助 HKEAA 建構了四個全新的應用程式,包含提供監考人員在考場直接掃描以確認學生身份的 Mobile App 還有讓學生自行報到所用的Mobile App 等。

而在數據備份方面,在 Google Cloud 平台,我們利用了 Google Kubernetes Engine (GKE) 來運行他們的服務。考試期間搜集的數據我們選擇存放在 Cloud SQL,並將所有在 Cloud SQL 中的數據設定了自動化備份,原始碼直接放在 Github 上,而 Container Image 則是放在 Container Registry 上做集中管理,所以當 Container 的 API 服務有問題時,可以直接把 Image 部署到 GKE上運行就可以解決。在考試期間,考試當天的數據會先儲存在 Cloud SQL 中,並在幾個小時後就將數據同步在 Oracle 本地的資料庫裡面,最後再透過 Cloud SQL 作自動化備份,以確保數據的安全性。HKEAA 每年在考試前都做作 Recovery Test,確保所有的資訊及數據都沒問題。 而且因為在考試期間才有大量需求,所以可以很好的確保整個系統的擴展性與成本管理。

由於考試及考生資訊都是存放在 Oracle 本地端的資料庫,若要存取相關數據,則必須在安全網路如:VPN 或是加密網路進行,但我們考慮到若使用 VPN 對於成本控管並不好,且如果網路中斷時也會影響到整個服務,因此我們決定安裝 API 服務在本地的數據中心,透過與雲端 API 服務的串接把數據從 Oracle 遷移到 Cloud SQL (PostgresQL),同時利用 Cloud SQL 本身的加密機制 AES-256 來保護數據,並在 Cloud KMS 存放與管理加密金鑰。此外,也透過本地的防火牆控制來源地及目的地都是 Google Cloud Platform,中間的 API 傳送也是透過傳輸層安全性協定(TLS),這樣就不用擔心網路中斷時帶來的煩惱。除了將 Oracle 資料庫的數據遷移到 Cloud SQL ,每次考完試後的幾個小時 Cloud SQL 的數據也會同步到 Oracle 資料庫上。

考量到客戶對於安全性非常重視,我們也借助了第三方的雲開發軟件 GitHub 和 Synk 確保在過程中可以保護和維護 Source Code 並監控是否有漏洞,然後放在Google Container registry 再部署到 GKE。不過由於 Container 在 GKE 上運行時也沒有其他監控服務,所以我們也用了 Security Command Center premium 上的 container security,以偵測及排除有問題的container。此外,我們還使用了 Cloud Load Balancing,用於管理所有外部流量路由至內部設定的Kubernetes 資源;VPC,用於用於使用防火牆規則管理整體網路連接,以限制傳入和傳出流量;以及 IAM,作為身分識別與存取管理以確保資料存取的安全。

成果

在整個專案中,我們幫助 HKEAA 在以下四個層面皆大幅提升了成效:

  1. 大幅降低成本
    因為服務只需要在考試期間運行,雲端服務隨需隨用的特性使的 HKEAA 將服務搬遷到 GCP 後成功節省大量成本。原本在本地端資料中心的成本大約是 5 年 6-700 萬港幣,現在透過 GCP 只需要 200 萬港幣;而條碼掃瞄槍則是每十年需要再重新採購一批,每次採購的成本是 150 萬,如今直接透過手機 App 進行掃描,也額外省下這筆費用。整體降低大約 75% 的成本。

  2. 數據的即時性與備份
    現在的解決方案,透過將數據即時輸出,所有資訊都可以即時取得,監考人員可以在 App 上直接知道資訊是否有問題,考試中心的人也不需要太久的時間就可以知道 2,500 個試場的狀況,無論是現場是否有任何異常的現象,或是是否有因為塞車而造成大規模的遲到等,進而進行後續的決策;若有學生跟老師意外走錯試場,也能立即追蹤即時位置。而我們也幫助 HKEAA 做到了數據備份,以確保數據的安全性。

  3. 更順暢的溝通體驗
    在過去如果試場發生異常情況,只能透過電話或Email 進行一對一的溝通,我們在這次專案所建構的 Message Box 能幫助試場和考試中心兩邊做到更即時交流與通知。

  4. 更好的安全性
    考量到 HKEAA 對於安全的考量,我們在專案中使用了許多服務來加強這個環節,像是GitHub 和 Synk 確保在過程中可以保護和維護 Source Code 並監控是否有漏洞、以及 Cloud Load Balancing 來用於管理所有外部流量路由至內部設定的Kubernetes 資源、VPC 則是用於用於使用防火牆規則管理整體網路連接,以限制傳入和傳出流量等,以最大化的確保數據本身以及存取的安全性。