IBM Watson和雲端平臺首席架構師Andrew Hately

2年前,IBM展開了旗下雲端平臺產品的大整頓,不光只是重整品牌,還找來了20年前開發出IBM第一代SOA和Web產品的IBM Watson和雲端平臺首席架構師Andrew Hately,大力採用Docker、Kubernetes、Linux和Cloud Foundry,設計出全新的現代化IT架構,甚至將IBM自家所有雲端產品都搬上了Kubernetes(簡稱K8s)環境。

「Kubernetes的出現,雲端思維才能真正落實到既有應用程式。」Andrew Hately強調,IBM自己就是最好的實例之一,連每天在全球各地提供240億次天氣預報的Weather.com網站,都已經搬上了雲端Kubernetes環境中運作。

5年前,IBM開發團隊主要開發兩類應用,一種是部署在虛擬化環境上的應用程式,另一種則是Web應用。即使後來IBM大力發展雲端服務,將自家服務部署到公有雲,但Andrew Hately指出,Cloud的3個基礎是虛擬運算、虛擬儲存和虛擬網路,隨著越來越多應用上雲端後,對開發者而言,只靠這三項來執行和開發現代化應用,太沒有效率了。

從IBM自家開發經驗來看,開發者需要更多雲端管理機制,如自動修復(Self-Healing),新的維運方法來管理元件,需要簡化雲端概念(如區域、失效區域),需要能自動擴大部署(rollout),自動化還原舊版本(rollback),甚至需要有能力一天發布上百次,才能快速回應顧客的需求。

「大量上雲端後的應用程式開發和維運需求,需要一個與過去截然不同的新架構。」所以,3年前,IBM開始研究跨雲管理架構,決定大力投入Kubernetes開源專案,2年前,IBM悄悄地展開了自家內部平臺的架構改造任務,甚至不惜重構自家雲端平臺,要將大部分的IBM軟體和雲端平臺,都搬上Kubernetes。

IBM先從資料庫平臺開始著手改造,例如將天氣預測應用改部署到IBM雲上的Kubernetes環境中,後來更進一步擴大到所有的分析和AI產品,都轉而部署到Kubernetes環境上。

Andrew Hately表示,去年終於完成了這個龐大的平臺重構計畫,除了用來管理基礎架構上運算、儲存和網路的控制臺程式,以及基礎架構的虛擬機器(VM)不是採用K8s,IBM其餘的雲端服務,甚至內部所用的上萬支應用程式,幾乎全都搬上了K8s。「我們真的將雲端原生服務產品,建置在雲端原生平臺環境中。」他自豪的說。

如何用K8s來設計現代化IT架構?Andrew Hately用一張圖來解釋。他從一個基本問題出發,如何在作業系統上運用各種功能或元件,有沒有更好的開發方法?

現代化IT技術架構圖

IBM Watson和雲端平臺首席架構師Andrew Hately揭露了一個現代化(Modern)IT技術架構圖,他認為,這也是企業跨多雲打造雲端原生應用需要的技術架構。(資料來源:Andrew Hately,2019年5月)

Andrew Hately指出,這個問題一直沒有定論,過去幾年的主流運算模式是直接在VM上開發應用,但是,VM最大的問題是檔案太大,因此而很不好用。

他觀察,對一般開發人員來說,開發應用程式有3件事非常困難,一是要擴充規模時,據太多儲存空間,不僅費時又沒有效率。第二個是「副作用的複雜度。」開發人員得考慮,一個程式或一個微服務,可能有哪些潛在的影響,使用越多微服務,連帶要考慮的副作用就越多。第三個開發上的挑戰是資安。

為了解決上述三個問題,儘管容器可以比VM得到更輕薄短小的執行環境,Andrew Hately認為,採用像是Docker這樣整套的容器引擎,還不夠小,因為越多元件放進容器,就需要考慮更多升級、更新、修補等維護工作等。「要將應用程式的相依性降到最低,只有盡可能縮小應用程式的大小,才有辦法,安全地擴充和升級。

因此,在Andrew Hately的架構中,最底層的技術,採用了Docker的一項容器引擎專案ContainerD,這是IBM過去大力參與的專案之一。「目標是盡可能地將容器引擎縮小到只需占用電腦一個程序(Process)就能執行。」所以,ContainerD的檔案非常小,程式碼也非常精簡,只負責幾件事,就是啟用一個執行程序(Process),綁定檔案系統和所需的函式庫。

不過,如此微小的容器引擎,就缺少了很多工具,如管理、調度、政策發布等複雜功能。所以,Andrew Hately在容器層之上建置了Kubernetes層。

他指出,Kubernetes是一個可以讓你同時管理「一群」(set)容器或者說一群工作的平臺。在這一層中,可以將一群任務放入一群容器中同時執行和管理,也可以具有基本的政策管理功能(policy),例如設定這支程式最少要啟用幾個程序來執行,而最多容許幾個,或設定記憶體可用量,也可以提供簡單的限制,如是否可存取,另外新版Kubernetes也開始可以支援到群組角色的政策管理。

IBM改用Kubernetes後,「新架構變得簡單但很有威力,」他解釋,K8s強迫所有應用程式的相依性和執行程序都得非常乾淨,例如要將應用程式放上容器執行,得重新梳理如何存取網路的規則,讓控管政策更簡潔清楚。

擁抱K8s設計新架構的3大優點

拿掉傳統防火牆的保護,人們常用雲端原生應用,不安全地處理資料,這將是新的安全考驗。─── IBM Watson和雲端平臺首席架構師 Andrew Hately 攝影/洪政偉

簡潔的架構也大幅提高了IBM雲端服務的發布速度,例如擴充和部署程式碼的週期可以更快。像天氣預測引擎使用了數千臺VM,在VM環境中,每一次更新,要花3~5分鐘派送映像檔。雖然可以並行部署新版VM映像檔,但還要重新啟動VM,檢查和確保每一個元件都順利運作,一天頂多只能發布20次程式異動,但改用K8s上的容器來部署,重新開機時間只要3秒,發布速度可以快數十倍。

另一個好處是,Andrew Hately指出,大多數放上K8s的應用服務,可達到4個9(99.99%)的可用性。部分原因是產品所用的技術更成熟了,另一方面,因為K8s,可以自動將這些應用系統分攤到多個分散式軟體定義儲存環境中中,因而提高了可用性。

「K8s讓我們可以用非常簡單的方法,將Resilience(快速恢復能力)套用到各種服務,讓每一個服務都能更快速地啟動,也能在應用程式安裝包中描述控管政策。」他表示,IBM採用了這樣的開發模式,重新改造了大多數IBM軟體產品的組成。

不過,挑戰是,K8s應用層是一個附加在原有基礎架構上的新模式,並非是將軟體定義儲存、軟體定義運算、軟體定義網路再一次的抽象化,而是一種更高層次的開發模式(Programing model), 「不是每一個開發人員都知道這種新模式,但他們必須知道。」

更進一步,「當需要考慮大量服務或微服務間的溝通時,就需要再往上一層的抽象化,這就是Istio層的用途和目的。」Andrew Hately說。

例如,多個服務組合成一個商業流程,彼此必須在安全通道中溝通時,就可以使用Istio來管理。Istio可以將這群服務集結成一群,稱為一個服務網格(Service Mesh),再套用到同一個管理政策。「服務網格可以從商業流程角度,用Policy Language(政策腳本語言)來建立一個可管理一整群服務的政策。」他舉例,如這些服務之間的網路路由如何進行,哪些應用程式要必須同時啟用等。

這種政策腳本語言,類似更高階的程式開發語言,但可以將複雜的服務間的溝通規則,用簡潔的描述記錄下來檔案。尤其是需要複雜的資安控管時,例如哪些服務可以共用驗證,哪些服務間通訊的TLS設定等,「這些過去難以自動化的工作,Istio搭配Kubernetes,可以使用多種語言來控管這些應用服務間的政策。」

不過,Istio不一定只能部署在K8s上,這是一個可以用來連結許多不同叢集的工具,「可用來管理大量服務(services),而非大量程序(processes)」

例如用手機查驗文件有三個動作,上傳文件圖檔、圖片轉文字、比對文字。若開發成3支微服務,每一支各自由不同的叢集來負責,以因應各自不同的運算量,對K8s而言,每一支服務都是等價,也會套用同一套政策。但Istio可以讓開發者考慮業務流程的差異,更細緻地控管上下游服務間,或者同一類服務間的通訊和連結,「這種跨多個叢集多種微服務的組合式管理需求,就需要再抽象一層。」他建議。

再往上一層,若開發者只需要考慮資料集和功能(特定或單一功能),Andrew Hately稱呼這種開發者為功能開發者(Function Developer),而非應用程式開發者(Ap Developer),他建議,可以使用OpenWhisk專案,這是一個用來開發單一服務、單一功能的開發框架。

如果不需要考慮容器生命週期管理,Andrew Hately建議,就可以考慮用Function環境來執行服務,也可說是一種一次性週期(a life cycle)。有需要就呼叫一次,非常簡單的開發模式。「用於資料集分析時,Function環境非常好用。而且可以讓所有語言各自獨立運作,只需要考慮如何在雲端執行多個程序。」

不過,採用Kubernetes設計的新架構仍有一大挑戰,Andrew Hately指出,要重新思考資安。「拿掉了傳統防火牆的保護後,人們常用雲端原生應用,不安全地處理資料,這是新的安全考驗,這是多數應用程式開發者還沒深思的問題。」

  CTO小檔案  

IBM Watson和雲端平臺首席架構師Andrew Hately

學經歷:加拿大滑鐵盧大學環工系畢業。1996年進入Corel公司負責軟體開發。3年後進入IBM,開發出IBM第一代SOA和Web服務產品,2013年成為傑出工程師兼雲端實驗室CTO,協助顧客導入PaaS。2017年負責主導IBM開放雲端新架構設計,擔任IBM雲端平臺副總裁與首席架構師,負責定義IBM One Cloud架構

  公司檔案  

IBM

● 成立時間:1911年

● 網址:www.ibm.com

● 執行長:Virginia Rometty

● 年營收:2017年791億美元

● 總部地址:總部位於美國紐約市,全球177國皆有據點。

● 全球員工人數:約36.6萬人(2017年)

  公司大事記 

● 2004年:出售個人電腦事業部門,更聚焦企業市場

● 2009年:買下統計軟體SPSS,強化資料分析技術

● 2011年:IBM 新一代超級電腦 Watson20誕生,也展開了Watson認知服務的品牌和產品線

● 2012年:買下SoftLayer展開雲端布局

● 2014年:出售x86伺服器業務,更聚焦AI和雲端業務

● 2015年:併購兩大產業數據巨頭Merge Healthcare和The WeatherCompany

● 2016年:併購網路影平臺Ustream和健康分析公司Truven

● 2017年:整併旗下所有IBM雲端服務為單一品牌「IBM Cloud」

● 2018年10月:宣布以340億美元買下紅帽

● 2018年12月:出售Notes/Domino等產品,更專注進軍AI及混合雲


Advertisement

更多 iThome相關內容