在臺灣第一場可觀察性技術研討會中,不少企業難得分享了自家運用可觀察性的實戰經驗,國泰世華銀行更將各項監控數據應用到私有雲資源的管理,導入了FinOps思維來創造可觀察性數據的新價值。
國泰世華銀行SRE團隊,手上掌握了很多數據,從基礎設施層面的CPU和記憶體使用率,服務層面的Latency、錯誤率、SLA,還有應用程式效能監控的Tracing資訊等。
一般維運團隊常見有三種監控數據的應用情境,像是系統出事而觸發告警,需要數據來找出問題,加快修復速度。其次是服務效能遇到瓶頸,需要分析監控數據,向主管說明問題來源,釐清責任歸屬並研擬改善方式。第三是要證明系統正常運作,像是例行系統健檢,需要確認指標正常。
國泰世華銀行SRE工程師沈依潔剖析,這些應用方式只是利用觀察數據來解釋或是證明系統狀態,但能不能創造更多價值?
從管理階層角度來看,老闆關心私有雲資源是否有效利用?這可以進一步細分成三個實務問題,第一是資源配置合理性,是否符合實際業務負載,其次是,服務資源是否長期高估?最後是,擴容需求是否基於真實數據,而非擔心出事而額外要求?
就算拿到了上述問題的相關數據,沈依潔指出,最關鍵的挑戰就是,私有雲沒有如同公雲般的帳單,很難直接判斷資源利用的有效性。
私有雲 FinOps 挑戰:沒有帳單,也沒有人為浪費行為負責
私有雲和公有雲最大的差異之一,是沒有像公有雲那樣清楚的帳單。在公雲環境中,服務上線後開始依用量計費,但私有雲資源是預先採購的設備,使用行為沒有帳單紀錄。「只要服務沒有出事,浪費的行為很安靜,沒有人可以察覺。」沈依潔表示,還有另一個挑戰是,「沒有人為省錢負責,也沒有人是資源浪費的擁有人。」
管理階層無法了解實際數據與成本,平台管理團隊以平台穩定為優先,節省資源不是第一目標,開發應用團隊則依需求提出規格,但不見得有人可以評估規格所用資源的合理性。若指派一個團隊負責FinOps,其他團隊就會認為不是自己的責任而難以落實。
「推動FinOps需要建立合作文化。合作的基礎不能各說各話,而是要用數據對齊決策。」沈依潔建議,第一步就是先定義什麼是「浪費」。
掌握大量數據的平台管理團隊可以擔任FinOps核心承接者,用數據來定義指標,建立透明化規則,再和開發團隊討論資源調整方式,依照共同的指標和規則來調整。如此一來,管理階層就能清楚知道每一個專案如何落實FinOps。
國泰世華銀行採用了業界常見的叢集節能工具kube-green,先從測試環境導入私有雲FinOps做法。
先從關閉測試環境的閒置空檔,長期則要清理閒置的服務
測試環境的特性是,所部署的系統還沒實際執行交易,不會影響顧客或產生營運風險。使用時間也大多集中於上班時段,很多開啟在測試環境中的服務只是備用系統,不會持續創造價值。
沈依潔表示,為了驗證系統,測試環境理論上得盡可能比照正式環境配置,因此,不適合採取「精準調整資源配置」的FinOps策略,反而是要採取「服務不用時可關閉」的做法。就像辦公大樓的餐廳,假日無人上班,就不用開店,可以省下電費與人力成本。
所以,國泰世華銀行導入了測試環境的排程休眠與智慧喚醒機制。可以指定時段將部署環境的副本參數數值歸零,仍然保留所有設定,需要啟用服務時,仍可以喚醒測試環境。「這樣做的好處是,離峰時段自動關閉服務,不需靠人手動開關,也不用每天提前上班啟動服務。」她解釋。
不過,並非所有測試環境的服務都能在離峰時段關閉,國泰世華銀行依照服務相依性與重要性,細分成三類服務,各有不同的休眠策略。
第一類是基礎與關鍵服務。這一類服務支援了其他服務的大量呼叫,因此設定為永不休眠,避免影響其他服務智慧喚醒後的測試流程。第二類則是一般服務,這些服務有明確的開發和測試節奏,使用時間集中在上班時段,晚上則有少數測試需求,因此採取假日休眠的做法,避免影響開發流程。最後一類是教育訓練用服務,通常只會在上班時段使用,因此可以在平日晚上與假日時間休眠。
不只關閉服務要有策略,喚醒服務也需要有一套做法,尤其不能同時喚醒平台上的所有服務。同時啟動所有服務,可能導致這些服務高度集中在特定運算節點上,造成整體節點的配置不均,也會因為啟動階段需要更多資源,而影響所用節點的運作。有些需要連結外部系統的服務,同時喚醒,對第三方服務會帶來較大的壓力。
在喚醒服務上,國泰世華銀行SRE採取了三個做法,第一是事先預留啟動資源,來確保服務啟動時有足夠彈性。其次是,採取分批喚醒策略,避免同時啟動造成分配不均或節點負載過高。另外,還要控制每一波服務啟動的數量與間隔,確保上班時段開始之前,所需服務全都備妥。
國泰世華銀行SRE針對測試環境中的閒置服務,設定了一套清理規則。以90天為限,超過這段時間沒有部署新版,沒有流量,也不是核心或基礎的服務,就會通知負責的開發團隊,確認是否需要保留或移除。
測試環境預設只會提供一份,開發團隊若因壓力測試需要大量副本,則要另外提出申請,使用後歸還。這個做法背後的目的是,建立測試環境資源是借用資源的觀念,不是永久配給制。
他們管理測試環境的FinOps目標是 ,在穩定提供測試服務的前提下,讓測試環境的節點數,長期低於正式環境。簡單來說,就是用更少的基礎設施,提供同樣的服務能力。
沈依潔比喻,測試環境的管理,就像是旅館經營,平台是旅館,服務則是旅客。盡可能提高住房率、降低空房率,就能避免不必要的擴建。長期治理則像是定期清理已經登記但沒人入住的房間,將空間釋放給真正需要的人。
正式環境的FinOps做法和測試環境不一樣
不過,相較於測試環境,正式環境才是導入FinOps更困難的挑戰。沈依潔解釋,正式環境除需要符合資安標準與合規要求之外,還必須維持服務的高可用性,核心服務更是需要達到7x24小時的穩定運作。其次,正式環境處理的是真實顧客資料與交易資料,也需要維持資料的一致性與即時性,不能有延遲或遺失。再加上,正式環境的流量變化劇烈,像是自家舉辦促銷活動,或是外部不可預測的事件,如匯率波動等都會導致流量驟增,必須保留即時調整的彈性。
沈依潔提醒,無法將測試環境的FinOps管理方式,直接套到正式環境。「要管理正式環境的成本,第一步是先定義『不能做的事』。」
像是,哪些是不能關閉的服務,或是必須7x24小時運作的核心服務。不能單看CPU峰值來調整,否則可能會造成其他資源的長期浪費,也必須保留彈性,避免服務遇到流量波動而受影響。
「正式環境的FinOps目標不是關閉閒置服務,而要讓資源運用得更精準。」沈依潔一句話點出關鍵,必須提供正式環境更精準的資源配置,讓資源設定更符合每一項服務實際的使用型態。
國泰世華銀行結合了不同維度的數據來綜合判斷,包括了數值型數據,服務類型標籤等。數值型數據像是維運團隊慣用的CPU用量、記憶體用量、長期用量。他們特別會觀察90天的長期使用行為,避免因為特殊壓測、單日異常或短期事件的誤導。服務類型的標籤則像交易類服務或查詢類服務。沈依潔解釋:「重點不是服務今天用了多少資源,而是它長期真正需要多少資源。」
國泰世華銀行SRE整合了多種數據,讓資源配置異動決策更有依據
為了更客觀地評估一項服務的配置能否調整,以及調整出錯時的風險,國泰世華銀行SRE還有一個特別的做法,他們將自己的維運經驗,轉換成可以通用各種服務的「服務重要性」指標。
國泰團隊結合三項資訊,包括服務可用性、可變更時間,以及變更時可接受的中斷時間,將這三項資訊轉換成分數來加權計算,像是可接受中斷時間越短,代表這項服務的重要性分數就越高,最後歸納出三種「服務重要性」等級,分別是Critical、High和Medium。
善用資源矩陣,找出必須關注和可調整的服務
國泰世華銀行SRE以資源使用率與流量作為 X、Y 軸,再加上服務重要性標籤,設計了一個資源矩陣圖,就能一目瞭然看到所維運服務的資源調整態勢。
若有項服務的重要性等級為Critical,資源使用率高且流量也高,SRE團隊就需要特別關注,甚至得評估資源可用性,考慮增加資源來維持穩定。反過來說,若有服務的資源使用率低、流量也低,重要性等級只達到Medium,配置變動風險相對較低,就可以和該服務的負責團隊討論,評估是否減少資源配置。甚至可以用來評估是否要關閉或是和其他服務整併,來釋放所占用的資源。
「透過數據、標籤與統一的調整標準,SRE可以和各個團隊用同一份數據與同一套指標來評估。」沈依潔表示,因為資源的調整不是憑感覺,而是符合服務真實使用狀況,可以讓大家對配置的調整更有信心。
導入這套資源透明化的做法後,國泰所擁有的正式環境,在不增加更多節點的情況下,依舊能上線更多新服務,不只延緩了硬體資源的投資,也減輕了不少平臺管理團隊的維運壓力。
SRE要將可觀察性數據變成治理依據
「SRE不是沒有數據,而是這些數據能不能創造更多價值?答案是可以。」沈依潔表示,可以主動運用監控數據,來建立標準與規則,讓它變成主動治理的依據,讓數據成為每一個執行決策背後的依據。
即使在私有雲中,沒有帳單,透過數據來定義出「浪費」,釐清哪些資源可以調整而哪些不能異動。「善用可觀察性讓浪費被看見,用數據做出決策,對平臺團隊而言,可以將維運工作從救火提升到治理層次。」 沈依潔強調。
Comments (0)