天下大勢,合久必分,分久必合,縱觀資訊系統的架構,何嘗不是分分合合?
口述/孫培然‧彙整/CIO編輯室
如果你夠資深,已經有二十幾年的工作經驗,或許你會聽過大型主機(Mainframe),像台大醫院、台北榮總、台中榮總等醫院,早期都是使用這種大型主機,也就是在前端的電腦是沒有 CPU 的終端機(Terminals),而是由大型主機集中了所有運算,大型主機時代也造就了 IBM 這家公司,集中式的大型主機時代,就是屬於「合」的時代。
到了PC時代,運算能力則是分佈在每一台個人電腦,此時就已經有 CPU 的概念。這個時代也造就了微軟(Microsoft),Windows 作業系統也在此時「分」散到各個個人電腦上。
進入雲端運算的時代後,因為網際網路(Internet)的盛行,導致分散管理變得太過複雜,所以很多的企業邏輯運算規則,例如申報要用的一些計算,或者是薪資的一些計算規則,又集中到雲端運算上面,此時就是回到「合」的狀況。
後來到了公有雲、私有雲的時代,像公有雲就有 Amazon 的 AWS、微軟的 Azure、Google 的 GCP,還有阿里雲、騰訊雲等,也就是企業要面對很多不同的雲端平台,等於又開始在「分」了。
[ 2023年企業IT投資重點為何?資安、人才、ESG如何部署?下載 CIO大調查報告 立即揭曉! ]
但雲端平台這麼多種,不管是管理或應用都變得很麻煩,因此最近就有一個名詞叫「分散式雲端服務」,又開始萌起「合」的意念。這次的「合」又是要怎麼的「合」呢?它是借助 Google 設計出來用於自動化部署、擴展與管理容器化應用程式的開源系統,並融合開放原始碼社群寶貴的貢獻,才建構出 Kubernetes 來整合混合雲(Hybrid Cloud)、多雲平台(Multi-Cloud)。
這也是在中國醫藥大學附設醫院總院新的 HIS 所用的開源技術,未來希望能夠以此來整合中國醫藥大學體系醫院的混合雲基礎架構。
所以其實整個資訊系統架構就是不斷的分分合合。至於怎麼分合,如果從軟體的系統架構來看,大概會分三個層面:
第一個層面是「資訊呈現層」(Presentation layer),也就是畫面要呈現什麼資料;第二層是「企業邏輯層」(Business Logic Layer),就是前面提到包括薪資核算、健保申報的相關邏輯規則。第三層就是「資料存取層」(Data access layer),也就是資料庫的概念。
以大型主機系統架構來講,它就只有一層(1-tier),也就是大型主機會把資料存取層、企業邏輯層跟資訊呈現層,都放在大型主機,至於前端的電腦其實只是終端機,只是負責顯示資料及提供鍵盤輸入,並沒有運算能力。
1-tier 的系統架構優點是系統架構簡單,易於管理,適用於處理線上交易系統,同時已經有豐富的管理經驗及各式管理工具。缺點則是屬於專屬系統,僅能處理純文字的資料,與開放式系統整合時有其困難度,再來系統架構疊床架屋。而且每一個系統因為都要跟大型主機來回溝通,如果使用量很大的時候,就會造成主機沉重的負擔,而且主機以後需要更換時,就得整個全部換掉,維護費用單價相當高。
因為 1-tier 有上述缺點,因而發展出 2-tier 的系統架構,也叫做 Client/Server 架構,也就是把程式分成 2 層,Server 端為純粹儲存資料的就放在資料庫,另外,將企業邏輯規則跟畫面呈現則放在 Client 端的應用程式,這也是現在許多舊HIS系統採用的方法。如 Windows 系統會把很多的健保申報、計算薪資的規則都寫在前端,有人會稱它為 Fat Client,後端只是用來做儲存資料的資料庫管理系統。
2-tier 的系統架構雖然可以處理大型主機系統大部分的功能,也可與開放式系統輕易整合,同時可以降低伺服器主機的維護費用單價,但 Client/Server 經過這 20 幾年來的考驗下來,已經被證實是一個不好的架構,因為分散管理不易,需要很多人力去維護前端架構,增加前端電腦管理成本,Client/Server 溝通太頻繁也會影響效能。
也因此才會出現讓前端保有 Thin Client 的系統架構概念,以後若要更換系統,如有個健保申報的規則要換,就不用去換掉每一台電腦的程式,只要集中在企業邏輯層,又稱為應用伺服器(Application Server)這一層,把一些程式規則換掉即可。
這種系統架構叫做 n-tier,n 代表 n≧3,也就是說三層、四層、五層、六層…都可以,最簡單的是把畫面的呈現、企業邏輯規則跟存取資料等分成三層。n-tier 系統架構的優點是管理方式由分散式回歸集中式,前端使用者工具管理簡化,具有可調整性與易擴充性。缺點則是開發技術門檻較高,中介層如果當機,則無法提供前端服務。
從實體主機、虛擬化、容器化到雲原生
看到上圖從地端到雲端的演進過程,或許有些剛接觸雲端的讀者已經眼花撩亂了,怎麼從實體主機、虛擬化、容器化演進到雲原生是一頭霧水。沒關係,我現在就用一個比較淺顯易懂的方式來比喻,譬如實體主機就好像你們家的透天厝,不管是水電、瓦斯、網路、電話等等,那裡有問題你都要管,頓時就會感到很辛苦很累。
但如果把實體電腦看成是一座大廈,因為它的資源很強大,就可以在裡面灌了 20 台的虛擬主機(Virtual Machine,VM),就好像大廈裡面有許多樓層,我只是住在某一樓層,相關公共設施,甚至水電、瓦斯、網路、電話等等都有統一的管委會在統籌維護管理,不用我們去操心維護管理,只要使用虛擬主機的資源就好。
虛擬主機的虛擬化是將作業系統(Operating System,OS),例如若要將 Windows 作業系統虛擬化,也至少要占用 2GB 的空間,許多人會覺得太浪費資源。所以為了減少不必要的資源浪費,因而發展出只要將應用程式所需要的程式碼、函式庫、環境配置檔等打包成一個標準單元「Container」,就像貨櫃一樣。獨立封裝成映像檔(Image)不會受到其他系統的干擾,且用耗的資源也變少,又可以從一個環境快速並可靠地運行到另一個環境。就像去租一間套房來住就好,每個月付租金就好,且若不喜歡還可以隨時更換地方來租屋,不會有任何疑慮來去自如。
[ 加入 CIO Taiwan 官方 LINE 與 Facebook ,與全球 CIO 同步獲取精華見解 ]
最後,是雲原生(Cloud Native),就是將系統上雲。就像有的人也認為自己不要買房子,就去飯店租一個房間,高興住多久就住多久,也不用自己打掃,因為每天都會有人來幫我打掃。
所以從實體主機、虛擬化、容器化到雲原生,我把它們比喻成透天厝、大廈、套房,或者是去租一個飯店房間來住,可以讓系統資源能做更好的應用,可以減少資訊人員的負荷,也才可以確保治安的長治久安。
綜觀整個資訊架構演化就是分分合合,但在這過程中你會看到有著既是分又是合的演進概念。讓我們來看看怎麼把地端(On Premises)的東西搬到雲端(Cloud)呢?
如圖二左邊藍色的部分就是地端,都是屬於要自己管理的部分,包括網路(Networking)、儲存設備(Storage)、硬體設備(HW Servers)、虛擬化(Virtualization)、作業系統(O/S)、中介軟體(Middleware)、執行的環境(Runtime)、資料(Data)及程式(Application)都要管。
有了雲端運算架構以後,大致可以分成下列幾種雲端運算服務模式:
.IaaS:基礎架構即服務(Infrastructure as a Service)
是提供硬體基礎架構的支援,如運算處理、儲存、網路以及各種基礎運算資源,部署與執行作業系統或應用程式等各種軟體。
.CaaS:容器即服務(Container as a Service)
提供以容器為基礎的輕量級虛擬化技術來管理和部署應用。提供部署和管理容器的框架或編排平台,透過編排後可實現關鍵 IT 功能的自動化。容器可以建置一致的環境,以便快速開發和交付到任何雲端的應用。
.PaaS:平台即服務(Platform as a Service)
提供運算平台與解決方案服務,在雲端運算的典型層級中,PaaS 層介於軟體即服務與基礎架構即服務之間。
.FaaS:功能即服務(Function as a Service)
是一種無伺服器(Serverless)的雲端運算服務,允許使用者開發、運行和管理應用程式的功能,而無需配置和管理底層運算資源。無需管理伺服器只需為您需要的東西付費,您就可以把時間和資源專注服務,持續創新。
.SaaS:軟體即服務(Software as a Service)
又稱為「即需即用軟體」,它是一種軟體交付模式,軟體僅需透過網際網路,不須安裝即可使用,其軟體及其相關的資料則是在雲端運行,比如說許多人在使用的 Gmail 或是 Office 365 就是軟體即服務。
[ 推薦閱讀:孫培然專欄所有文章 ]
從圖二右邊綠色的部分就是代表上雲端的資訊系統架構,此時就不需要自己的資訊人員來管,而是交由公有雲的業主來幫我們管。所以要把地端的東西搬到雲端,搬動的程度也是會有不同的變化,原則上未來會慢慢朝向 SaaS、CaaS 或是 FaaS 的概念演進。隨著日後業務需求擴充,應用程式要能自動部署至雲端上任意的新節點,同時所有資安政策也都可以自動套用,達到自動化減輕資訊人員管理負擔及壓力。
(本文授權非營利轉載,請註明出處:CIO Taiwan)