今年2月初,高雄發生了規模6.6級的美濃大地震,但是,災情最慘烈的卻是遠在四、五十公里遠的臺南永康市。8秒狂震,讓17樓高的維冠金龍大樓瞬間腰斬成不到5樓,三分之二樓體下陷或損毀,導致115人死亡,震驚全臺,甚至,臺南災情不只一處,更有多處房屋,因為這次地震而傾斜。臺南不是震央卻災情慘重的關鍵正是土壤液化問題。這也促使當時的行政院院長張善政下令,要求經濟部旗下中央地質調查所(簡稱地調所),在30天內公布全臺各地的土壤液化潛勢區資料。
2月15日,就在張善政下令的隔天,10萬民眾湧入地調所網站,查詢自家是否位於地質敏感區。即使土壤液化資料還未開放,截至2月底,瀏覽活動斷層、地下水相關網頁資訊的民眾,已經達到75萬人。
這個瀏覽數據,讓總管地調所IT業務的中央地質調查所地質資料組科長邵屏華,心中有一個衡量標準。他的目標,就是在3月14日,開放土壤液化資料的當天,至少要撐住75萬人次流量。
早在開放前,地調所也和資策會雲端創新研究所合作,進行3次壓力測試,而對方一再認為,地調所系統無法通過百萬民眾瀏覽的壓力。
但系統火爆程度,仍超乎了邵屏華的預測,光是土壤液化潛勢查詢系統在開放的那一天,就湧進了將近172.5萬人次,根據流量監控系統數據統計,「流量最高時,每秒有1萬人同時在上線查詢資料。」
一整天下來,地調所的伺服器,總共傳出2.7TB的圖資資料。地調所的後端基礎架構不僅撐過當天的考驗,後端系統所用每一臺VM的負載量也都維持在50%之下。
邵屏華透露:「Node.js是撐住流量的重要功臣。」這個早在2015年時的系統架構轉換決策,一年後讓地調所得到了大眾的掌聲,也讓帶領地調所IT架構擁抱開源的邵屏華,再次肯定自己的堅持。
這套土壤液化潛勢查詢系統屬於地調所委外開發的地質騰雲PaaS專案。從2013年開始,地調所總共投入超過5,000萬元的預算,投入3名全職開發人力和3名處理法規業務的助理,再加上5名委外廠商的程式設計師,展開了這個龐大的臺灣地質PaaS系統建置計畫。邵屏華要整合散布在地調所各單位的資訊系統,讓地質騰雲PaaS成為地調所IT架構的核心,「未來地調所,只需要有這一朵雲。」邵屏華說。
靠Node.js的非同步特性撐流量
過去,地調所後端系統仍是使用C#開發,多部署在Windows Server環境中執行,2014年完成的第一代地質騰雲PaaS後端系統也不例外。
到了2015年時,邵屏華決定重新改寫後端系統,改用JavaScript和Node.js來開發後端,他解釋,地質騰雲網服務,目標是將地調所內部資料結合外部資源(如外部免費圖資)透過網站提供給民眾,而非用來進行地質運算。
「我最看重的是,程式碼收到請求,後端系統回傳資料的過程中,瀏覽器是否能順暢運作。」這正是他改用Node.js的原因之一。
邵屏華表示,Node.js使用Google所開發的V8 JavaScript引擎,能夠達到相當不錯的效能表現。Node.js也具有非同步執行的特性,能夠多工處理單執行緒(Single Thread)。
非同步執行的概念,相比過去的批次程式設計(Batch Programming)理念:執行程序是由開發者所決定,在Node.js中,程式碼的執行與否,得靠系統事件所驅動,因此可在短時間內可以處理大量、密集的運算工作,即使系統位在高負載的運算中,仍然可以維持一定效能。
邵屏華表示,例如用來應用大量使用者請求的Http Listening背景執行程式,就是利用Node.js實作,包含觸發TCP/IP的程式、監聽(Listening)80 port的服務,以及應用程式串流(Application stream)、資料串流(Data Stream)的指令。
而內部監控系統也是利用Node.js實作,直至特定事件觸發,才會讀取Log紀錄檔,「藉此減少資源消耗」,邵屏華表示,除非流量高達一定程度,才會開啟另外一個監控機制,主動回報當前流量為何。
除了改用Node.js開發服務程式,還使用Docker容器來打包後端系統,再部署到VM中運行。如此一來,邵屏華表示,過去租用中華電信1臺8G記憶體的伺服器,僅能開啟4臺VM,每個VM只能執行一套後端服務。但改用Docker後,一個VM可以運作100個用容器打包個後端服務。
計畫用Docker劃分資料庫
此外,邵屏華表示目前臺灣北、中、南、東四區的地質資料,都是儲存在部署於VM上的資料庫系統,但他計畫未來捨棄直接在VM上部署,改在PaaS上使用Docker化的開源資料庫PostgreSQL,「不須介入底層系統的運作,只要專心管理資料庫就好。」
開源PostgreSQL比商用解決方案更好用
地質騰雲網並不是地調所第一次使用開源技術的專案,其實早在10多年前,邵屏華就導入了開源資料庫PostgreSQL。他表示,在第8版之後,PostgreSQL已經宣布原生支援Windows環境,「許多外國政府機關也都選擇PostgreSQL作為資料庫系統。」也有企業如Konica相機公司旗下預約洗照片服務系統,也利用PostgreSQL來儲存200萬人的帳號資料。
邵屏華表示,一般使用者也許感受不到PostgreSQL的特色,例如PostgreSQL能儲存陣列(Array)型態的資料,像是地圖上的直線,由許多相異二維座標所組成。邵屏華舉例,其他的關聯式資料庫,每條斷層線都得使用一個完整資料表格(Table)儲存,「如果使用陣列,想要在地圖上要呈現一條直線,就簡單很多。」
不僅如此,PostgreSQL社群積極地開發新功能也是邵屏華決定導入的理由。PostgreSQL從1997年的第6版本釋出後,就已經開始支援儲存幾何類型的資料,可以計算地圖上的A、B區域是否有交集,以及交集的範圍多大。他表示,但Oracle資料庫要到2003年的第9版時,才加入類似功能,「對地理資訊系統(GIS)需求,PostgreSQL的威力相當強。」他說。
逐步淘汰商業解決方案,引入開源
邵屏華笑著說,雖然大多人認為,必須有充足預算,才能進行系統優化,「但窮則變,變則通。」早在學生時代,他就自行撰寫了資料庫系統,儲存、分析地質研究資料。而江山易改,本性難移,直到現在,「我就是這樣土炮地建置系統。」他笑著說。
近幾年,邵屏華也逐步淘汰商用軟體產品,改租用雲端服務或使用開源軟體,像是將Windows Server搭vSphere的架構,改租用IaaS服務,並在VM的Linux環境中,用Docker容器執行資料庫,來提供地質查詢服務。
在設計雲端服務平臺時,邵屏華就不打算單靠自家基礎架構疏散所有的人潮,「雲端服務的概念,就是串接外部服務」,像是地調所自建的地質騰雲網PaaS平臺,其中就整合了45個外部服務。
例如,儲存服務就使用了Google以及Dropbox。而地圖背景的選擇,則可連結Google、Open Street Map,甚至是中研院所釋出的日治時期臺灣堡圖、美軍繪製城市地圖等資料,也都可以作為背景,「地調所不負責所有的運算工作,只負責提供程式碼框架、土壤液化及活動斷層等資訊。」
導入有核心團隊維護的開源專案較有保障
雖然他經常遭受質疑,為何不使用現成解決方案,但是邵屏華認為,開源解決方案不僅成熟、便宜,在挑選時,他必定會選擇有核心團隊在維護的專案,像是底層作業系統,就是導入源自紅帽RHEL的CentOS,資料庫系統則是挑選擁有活躍社群的PostgreSQL。
除此之外,邵屏華也積極參加比賽,藉由比賽成績,增加外界對他使用開源方案的信心。像是在今年12月,地調所的地質騰雲PaaS平臺在亞太資通訊科技奧斯卡獎之稱的APICTA Awards中,與亞太十多國專案競爭而得到政府與公共服務類獎項。「誰說開源不好?真正的問題是在人,而不是開源專案。」他霸氣的說著,自從地調所一年拿了7個獎項後,再也沒有人批評、質疑他使用開源專案了。
擁抱開放格式才能走得長遠
邵屏華除了在閒暇時,會參與開源專案測試計畫,他也要求外部合作廠商要閱讀程式碼,「學習他人的開發想法。」他認為,使用開源專案總共有三大好處。首先,使用者可以根據自己的需求客製化,不需遷就於現成解決方案,「花錢購買的50個新功能,當中卻只有1個是我需要的。」
再者,透過使用開源專案,也可培養本地技術人才、投資本地廠商,而非一味地使用外國廠商的解決方案。
最後則是擁抱開放格式,則可免於被廠商綁死的困境,隨時能追上最新的尖端技術。
「網路只有一個標準,就是全球資訊網協會(W3C)。」邵屏華表示,只要盡量符合W3C所制定的開發規格,在整合、串接資料時就會很輕鬆。
對於地調所走上開源這條路,邵屏華的立場相當堅定,「開源保證走得下去,除非有一天網際網路消失了。」他笑著說。
CIO小檔案
邵屏華
中央地質調查所地質資料組科長
學歷:成功大學資源工程所博士候選人
經歷:曾任成功大學地球科學系助教,而一路從經濟部中央地質調查所技士升遷至地質資料組科長,目前掌管地調所的IT架構,在2015年後逐漸導入Node.js、Docker以及PostgreSQL等開源技術,未來也計畫以地質騰雲PaaS平臺作為地調所的IT架構核心
機關檔案
經濟部中央地質調查所
● 地址:新北市中和區華新街109巷2號
● 成立時間:1978年
● 主要業務:為執行地質法及進行國土地質調查研究等相關各項工作,包括基本地質調查、災害地質調查、資源地質調查及地質資料資訊化、公開化等業務
● 員工數:93人
● 機關預算:4.5億元
● 所長:江崇榮
資訊部門檔案
● 資訊部門主管職稱:科長
● 資訊部門主管姓名:邵屏華
● 直屬主管:侯進雄
● 資訊部門人數:3人
IT部門大事紀
● 2003年:展開國土資訊系統計畫
● 2004年:工程地質探勘資料庫查詢系統上線
● 2004年:推出臺灣地質知識服務網
● 2009年:地質資料整合查詢系統上線
● 2016年:推出地質騰雲PaaS平臺
● 2016年:推出土壤液化潛勢查詢系統
● 2016年:獲得APICTA Awards政府與公共服務類獎項