台積CI/CD有獨到的加速循環設計,從CI/CD執行過程搜集更多維運知識,找出可重複的模式,轉換成政策再部署到CD輔助系統,來加速維運,不只可以加速CD流程,甚至可以將成果套用到CI流程,融入基礎架構中。 (圖片來源/台灣積體電路製造股份有限公司)

「每座晶圓廠背後都有一座大型資料中心,要管理全球數十座資料中心,超過數萬臺實體伺服器、數十萬臺VM,只靠傳統IT技術,沒有辦法有效維運。」台積電資訊建構暨通訊服務處副處長劉培欣特別強調。

這位資料中心維運高手,曾在億級用戶瀏覽器新創中,打造出1人能管上萬臺伺服器的工具,今年初加入台積電後,看到晶圓廠24小時運轉背後需要的資料中心規模,大吃一驚。

台積電面對的資料中心維運挑戰,不只是資料中心和硬體的數量,還需要高容錯和高可用設計,一般網路服務能接受2~3秒中斷,來切換到備援服務,但這個做法在台積電,卻是不及格的設計。因為台積電的問題規模,比常見網站服務,多了好幾個等級,原本平淡無奇的架構設計問題,到了台積電往往超乎想像,連劉培欣都備感挑戰。

台積早在十多年前,就開始用擁抱虛擬化技術,來提高資料中心實體伺服器的維運效率,也以VM打造出IaaS,甚至是PaaS服務。可是,到了2019年時,台積開始看到VM的瓶頸,大量採取單體式架構的老舊應用,只靠不斷提高伺服器硬體規格來擴充的垂直擴充(Scale Up)做法,恐怕無法支援台積未來營運成長的需求。甚至,後來隨著台積持續全球擴張,IT技術不斷面臨的新挑戰是,如何能夠不斷快速延伸到全球。

從VM轉為擁抱K8s和容器,更大力發展IaC

早在2018年時,台積就開始在內部資料中心導入Kubernetes(簡稱K8s)來嘗試容器技術。到了2019年時,台積決定進一步開始推廣容器化技術,採用商用軟體來建置私有K8s環境,並開始將VM搬遷到K8s環境中。

到了2020年,疫情大大衝擊了全世界,也讓台積加快數位轉型的腳步,一方面大舉招募IT人力儲備新戰力,另一方面也加速推動IT現代化。

台積基礎架構團隊當年三大工作重點,一是要善用各種基礎架構新技術,來協助台積數位轉型,另外也開始要將資料中心透過軟體定義轉型成真正的私有雲,最後一項是要持續進行基礎架構的創新,例如導入新世代5G、IoT製造、AIOps技術等。台積也開始嘗試混合雲做法,將適合業務上雲,如雲端CRM和雲端HCM。

2021年時,台積決定改用開源技術架構,打造自己的K8s平臺。台積電企業系統整合處部經理胡君怡表示,為何台積要用開源技術,自己建置K8s,好處是自己開發、自己維運,敏捷程度更好,IT的開發速度彈性要能追上我們企業流程的轉型需求。

到了2021年底時,已經將多座晶圓廠的應用系統,搬遷到這個自建K8s環境中。2022年8月時,也上線了電子商務服務使用的自建K8s平臺。台積計畫在2022~2023年期間,將所有服務都搬遷到自建K8s上。

2021年,台積開始招募SRE團隊,大力發展基礎架構程式碼化(Infrastructure as Code),要使用軟體方法,來管理台積全球資料中心,以及基礎架構的硬體設計、建設和維運。

台積IT從2018年開始摸索現代化IT架構,2019年展開基礎架構轉型,到了2022年,台積資訊基礎架構逐漸完成了現代化架構的轉型,也大幅運用IaC來提高自動化維運能力。進一步,台積IT也成立了SRE(Site Reliability Engineering)團隊,來負責平臺服務的各項維運。台積分別在智慧製造團隊、數位商務團隊和基礎架構團隊中,各自設置了一組SRE團隊。圖片來源/台灣積體電路製造股份有限公司

台積基礎架構分四層,從MaaS、IaaS、PaaS到SaaS

從2018年開始模索,2019年展開基礎架構轉型,到了2022年,台積資訊基礎架構逐漸完成了現代化架構的轉型,也大幅運用IaC來提高自動化維運能力。

劉培欣指出,維運要高度自動化的關鍵是,讓基礎架構可程式化,包括看得到的硬體伺服器、網路設備,到看不到的OS、上層服務,全部都要可程式化。

台積技術架構可以分為四層,底層MaaS、IaaS透過資料中心自動化機制來強化,上層PaaS和SaaS則透過K8s搭配內部的Web Service,達到公有雲業者的靈活度和彈性。

更進一步細分這個架構,可以分為8個子層。最底2個子層是實體網路層和儲存設備層,再上一層是Bare Metal Server層和OS層,這兩個子層通稱為Metal as a Service層,簡稱MaaS,可以做到靠軟體動態調度硬體資源的配置。

再往上是中介軟體和K8s基礎架構子層,台積將這兩個子層視為IaaS層。在K8s基礎架構上有一層標準服務子層,這一層提供不同應用系統常用的基本共用服務,台積將標準服務與K8s平臺的部分功能合併成了PaaS層。

在標準服務之上,台積還打造了一套Web Service,類似一套公有雲服務解決方案的做法,這就是台積技術架構中的SaaS層。台積利用K8s平臺服務,來管理PaaS和SaaS層,來實現維運高度自動化的IaC作法。

「IaC對台積而言,不是選項,而是一定要做的事,維運自動化是一定要走的路,否則無法達到這麼龐大的規模。」劉培欣強調。

台積如何用開源技術自建K8s架構

在台積用開源技術自建的K8s架構中,包括了多個功能區塊,IaC區塊可以支援常見IaC語言工具如Ansible、Terraform、golang和python等,再透過一套CI/CD工具鏈,來貫穿K8s架構從底層到最上面的部署。台積在K8s架構底層網路上,採用了L3 BGP IP Fabric設計,而不是一般部署K8s平臺時常見的L2網路設計,採用L3網路架構是台積可以快速部署大量叢集的關鍵。例如台積可以做到,開發團隊只要透過一個宣告式YAML檔案,就可以快速取得所需要的負載平衡IP,完全不用填單申請,也就不需要等待核准。

在網路區塊之上是OS區塊,每一臺x86伺服器只要接上網路,透過網路開機就能開始自動安裝,來實現MaaS。 完成OS自動安裝後,接著安裝軟體FRR套件,讓伺服器具備路由器功能,再自動安裝ceph來提供軟體定義儲存功能。有了SAN和路由功能,就可以部署K8s調度平臺軟體,上面又會統一安裝CRI、CNI、CSI指定元件,來統一K8s的runtime、網路和儲存介面。而在最上層,再安裝服務網格套件Istio和服務探索工具CoreDNS。另外還有搭配一套機密和身份驗證系統,以及一套可觀察性和治理系統。

但是,一家企業不是第一天成立就擁有十幾座資料中心,而是數年,甚至十多年持續發展IT的結果,這往往也讓企業內部基礎架構所用的IT技術,包括硬體、軟體和所用軟體產品,跨越了好幾個世代。這些系統各自有各自的修補、升級,都會影響維運自動化的程度,甚至成為包袱。

台積決定用系統性思維來解決應用系統橫跨多世代技術的問題,在現代化開發模式DevOps的CI/CD流程中,找到了可以強化維運自動化的關鍵。

劉培欣透露關鍵秘訣是:「台積CI/CD獨到之處,是在CD循環外層套上一個輔助系統作為加速線圈,來加速CD的運轉。」

簡單來說,台積在CI/CD執行過程搜集大量Log,建立可觀察性機制,蒐集到更多維運知識或維運洞察,找出可重複的模式,寫成程式碼或轉換成政策,再部署到CD輔助系統,來加速維運。「這個CD輔助系統,不只可以加速CD流程,甚至可以將成果套用到CI流程,融入基礎架構中。」劉培欣補充。

台積電資訊建構暨通訊服務處副處長劉培欣特別強調,IaC對台積而言,不是選項,而是一定要做的事,維運自動化是一定要走的路,否則無法達到這麼龐大的規模。圖片來源/台灣積體電路製造股份有限公司

台積加速CD循環的5大步驟

如何實現這樣一套的CD加速線圈,台積分5個步驟來實現。第一個步驟是先將資料中心基礎架構的部署,變成是可延伸的部署方式(Extensible deployment)

利用資料中心DCIM監看每一個單點的狀態,建立了一套DC Librarian系統來集中每個單點的運作資訊,再提供給MaaS系統(包括部署在各地資料中心的本地端MaaS),來調度伺服器和網路設備,再搭配了一套Logical Cluster Builder系統,負責管理硬體設備調度之間的相依性。

可以指定調度範圍,從整個機櫃,到整座資料中心都能調度,甚至可以指定跨資料中心的範圍,來調度沒有實體相連的伺服器資源。

透過這三個機制,就可以實現部署可延伸性,可以大幅提高資料中心的建置效率,不需太多人力,就能夠快速啟用遠在海外的資料中心,用來支援海外擴點所需。

下一步,就是將維運資料標準化,來強化可觀察性。透過在伺服器端的代理程式或裝置資料搜集機制,持續搜集各種資料中心的維運Log,進行資料標準化。因為台積的資料中心很多,蒐集來的Log數據非常龐大,無法儲存所有的原始資料,因此也會進行資料萃取後,保留有價值的後設資料以利進一步的處理。

台積電也會在各地資料中心,設置本地端NOC機制,善加利用所蒐集到的這些Log數據,來監看當地資料中心的運作情況。

龐大Log數據經過萃取後,就可以進行高階分析,這就是第三個步驟,建立可以統一進行事件偵測、調度和解讀的集中式機制,包括了Event Center和Global Analyzer兩個機制。Event Center可以分析Log萃取出來的後設資料,找出模式,來分析這些模式所代表的高階意義。

Global Analyzer不只可以對單一地區資料中心的Log後設資料進行高階分析,還可以跨多地區資料中心來分析。

透過高階分析可以找出原本不知道的維運洞察後,就進入第四個步驟,建立一套槓桿系統來提高維運自動化程度。將新發現的分析結果,轉換成新的管理政策,提供到Global NOC來執行,從Global NOC的高度,統一來管理所有地區資料中心的運作。

但,做到資料中心全球統一管理不是終點,而是新的起點,台積電的維運自動化還有第五步驟,要進一步將重複性維運任務轉換成程式碼,來實現快速復原和自動修復。

每次只要導入新的解決方案,或是新建資料中心等,就會增加新的事件,也會不斷找到新的資料中心維運模式,都能持續用來提高維運的自動化。

劉培欣解釋:「在CD循環中套上加速線圈,永遠可以找到新的模式來修正問題,將重複的工作自動化。」

台積導入到這雲原生技術的K8s架構時,為了加快容器化的普及,先提供了一個圖形化介面,讓開發者將原有VM架構,轉換成容器映像檔來部署,也能自動產生YAML來進行部署。

後來,越來越多服務轉移到K8s,也開發了不少微服務,只靠GUI介面設定無法滿足DevOps開發的各種彈性需求,後來進一步導入了GitOps作法,將YAML檔的撰寫比較程式碼開發的流程,不只大幅提高了發布速度,也提高了K8s部署資訊的透明度。

台積完成這套自建K8s平臺之後,再結合GitOps做法,現在已經可以做到,DevOps工程師只要透過git,送出一隻YAML檔後,約十多分鐘就能完成部署,開通服務。

擁抱GitOps提高效率,更要發展內部Web Service平臺

甚至,台積進一步打造出了一套內部Web Service平臺,讓DevOps可以更彈性取得需要的基礎架構資源和常用基礎服務。台積首度揭露了這套Web Service平臺的三階段發展過程。

首先,台積先選出內部開發常用的一批標準服務,提供了一套自助式的標準服務目錄,可以提供一套常用服務的部署檔案,讓DevOps工程師可以套用到自己的CI/CD流程,快速部署到想要的K8s環境上。

接著,台積IT將這些標準服務,發展成一套管理式的多租戶服務平臺,提供一個網頁介面,方便開發者註冊所用的服務,也能管理所用服務的異動。

第三階段是打造出一套Web Service平臺,不只可以提供更多元化的服務項目,也開始提供可觀察性的元件,採取外掛擴充的方式,來提供像是效能監控,帳單與報表功能,警告通報自動化、Log和事件機制等,開發團隊的使用者,甚至可以自訂通知,事件觸發後自動串連到指定自動化流程來展開後續作業。

台積透過這些徹底擁抱IaC的作法,劉培欣指出,我們的目標是,資料中心自動化效能能達到搜尋龍頭的等級,而PaaS和IaaS層的自有Web Service服務能夠達到如雲端龍頭的彈性。

 相關報導 

熱門新聞

Advertisement