低復雜度?-?服務網(wǎng)格的下一站
時間:2021-11-03 14:17:29
手機看文章
掃描二維碼
隨時隨地手機看文章
[導讀]譯者:作為一個曾經(jīng)在新造車公司的基礎架構(gòu)團隊任職,為支持公司的“互聯(lián)網(wǎng)基因”和“數(shù)字化轉(zhuǎn)型”落地了云原生基礎設施平臺,并在嘗試采用服務網(wǎng)格未成的我來說,看到這篇文章深有感觸。尤其是文中所說的“人少,問題多,需要快速輸出價值”,直戳到了痛處。有限的人手有限的時間,我們需要將大部分精...
譯者:
Chris Campbell 擔任軟件工程師和架構(gòu)師已有十多年,與多個團隊和組織合作落地云原生技術和最佳實踐。他在與業(yè)務領導者合作采用加速業(yè)務的軟件交付策略和與工程團隊合作交付可擴展的云基礎架構(gòu)之間分配時間。他對提高開發(fā)人員生產(chǎn)力和體驗的技術最感興趣。
關鍵要點
?采用服務網(wǎng)格有巨大的價值,但必須以輕量級的方式進行,以避免不必要的復雜性。?在實施服務網(wǎng)時,要采取務實的方法,與技術的核心功能保持一致,并小心干擾(譯者:注意力的分散)。?服務網(wǎng)格的一些核心特性包括標準化監(jiān)控、自動加密和身份識別、智能路由、可靠的重試和網(wǎng)絡可擴展性。?服務網(wǎng)格可以提供強大的功能,但這些功能會分散本應對核心優(yōu)勢的關注,并且這些功能也不是實施服務網(wǎng)格的主要原因。?在初始實施服務網(wǎng)格時沒有必要去關注那些明顯會分散注意力的功能,比如復雜的控制平面、多集群支持、Envoy、WASM 和 A/B 測試。
在工作中學習
我進入服務網(wǎng)格的世界始于我在一家老牌的財富 500 強技術公司擔任云計算架構(gòu)師的角色。在開始我們的服務網(wǎng)格之旅時,我身邊有許多強大的工程師,但大多數(shù)人幾乎沒有云計算開發(fā)經(jīng)驗。我們的組織誕生于云計算之前,完全實現(xiàn)云計算的價值需要時間。我們的傳統(tǒng)業(yè)務線主要集中在技術棧的硬件元素上,云計算的決策最初是由為運送硬件或為該硬件提供固件和驅(qū)動程序而開發(fā)的流程驅(qū)動的。
服務網(wǎng)格的援救
我第一次聽說服務網(wǎng)格是在 2015 年,當時我正在研究服務發(fā)現(xiàn)工具并尋找與 Consul 集成的簡單方法。我喜歡將應用程序職責卸載到“sidecar”容器的想法,并找到了一些可以幫助做到這一點的工具。大約在這個時候,Docker 有一個叫做“鏈接”的功能,讓你可以將兩個應用程序放在一個共享的網(wǎng)絡空間中,這樣它們就可以通過 localhost 進行通信。此功能提供了類似于我們現(xiàn)在在 Kubernetes pod 中所擁有的體驗:兩個獨立構(gòu)建的服務可以在部署時進行組合以實現(xiàn)一些附加功能。
核心功能
服務網(wǎng)格可以提供的核心功能分為四個關鍵責任領域:可觀察性、安全性、連接性和可靠性。這些功能包括:
標準化監(jiān)控
我們?nèi)〉玫淖畲髣倮?,也是最容易采用的,是標準化監(jiān)控。它的運營成本非常低,可以適應你使用的任何監(jiān)控系統(tǒng)。它使組織能夠捕獲所有 HTTP 或 gRPC 指標,并以標準方式在整個系統(tǒng)中存儲它們。這控制了復雜性并減輕了應用程序團隊的負擔,他們不再需要實現(xiàn) Prometheus 指標端點或標準化日志格式。它還使用戶能夠公正地了解其應用程序的黃金信號[2]。
自動加密和身份識別
證書管理很難做好。如果一個組織還沒有在這方面進行投入,他們應該找到一個網(wǎng)格來為他們做這件事。證書管理需要維護具有巨大安全隱患的復雜基礎設施代碼。相比之下,網(wǎng)格將能夠與編排系統(tǒng)集成,以了解工作負載的身份,在需要時可以用來執(zhí)行策略。這允許提供與 Calico 或 Cilium 等功能強大的 CNI 提供的安全態(tài)勢相當或更好的安全態(tài)勢。
智能路由
智能路由是另一個特性,它使網(wǎng)格能夠在發(fā)送請求時“做正確的事”。場景包括:
可靠的重試
在分布式系統(tǒng)中重試請求可能很麻煩,但是它幾乎總是需要實現(xiàn)的。分布式系統(tǒng)通常會將一個客戶端請求轉(zhuǎn)換為更多下游請求,這意味著“尾巴”場景的可能性會大大增加,例如發(fā)生異常失敗的請求。對此最簡單的緩解措施是重試失敗的請求。
網(wǎng)絡可擴展性
也許服務網(wǎng)格的最佳屬性是它的可擴展性。它提供了額外的適應性層,以應對 IT 下一步投入的任何事情。Sidecar 代理的設計模式是另一個令人興奮和強大的功能,即使它有時會被過度宣傳和過度設計來做用戶和技術人員還沒有準備好的事情。雖然社區(qū)在等著看哪個服務網(wǎng)格“生出”,這反映了之前過度炒作的編排戰(zhàn)爭,但未來我們將不可避免地看到更多專門構(gòu)建的網(wǎng)格,并且可能會有更多的最終用戶構(gòu)建自己的控制平面和代理以滿足他們的場景。
服務網(wǎng)格干擾
平臺或基礎設施控制層的價值怎么強調(diào)都不為過。然而,在服務網(wǎng)格世界中,我了解到入門的一個主要的挑戰(zhàn)是,服務網(wǎng)格解決的核心問題通常甚至不是大多數(shù)服務網(wǎng)格項目交流的焦點!
強(復)大(雜)的控制平面
要很好地運行復雜的軟件是非常困難的。這就是為什么如此多的組織使用云計算來使用完全托管的服務來減輕這一點的原因。那么為什么服務網(wǎng)格項目會讓我們負責操作如此復雜的系統(tǒng)呢?系統(tǒng)的復雜性不是資產(chǎn),而是負債,但大多數(shù)項目都在吹捧它們的功能集和可配置性。
多集群支持
多集群現(xiàn)在是一個熱門話題。最終,大多數(shù)團隊將運行多個 Kubernetes 集群。但是多集群的主要痛點是你的 Kubernetes 管理的網(wǎng)絡被切分。服務網(wǎng)格有助于解決這個 Kubernetes 橫向擴展問題,但它最終并沒有帶來任何新的東西。是的,多集群支持是必要的,但它對服務網(wǎng)格的承諾被過度宣傳了。
Envoy
Envoy 是一個很棒的工具,但它被作為某種標準介紹,這是有問題的。Envoy 是眾多開箱即用的代理之一,你可以將其作為服務網(wǎng)格平臺的基礎。但是 Envoy 并沒有什么內(nèi)在的特別之處,使其成為正確的選擇。采用 Envoy 會給你的組織帶來一系列重要問題,包括:
WASM
我是 Web Assembly (WASM) 的忠實擁躉,已經(jīng)成功地使用它在 Blazor[3] 中構(gòu)建前端應用程序。然而,WASM 作為定制服務網(wǎng)格代理行為的工具,讓你處于獲得一個全新的軟件生命周期開銷的境地,這與你現(xiàn)有的軟件生命周期完全正交!如果你的組織還沒有準備好構(gòu)建、測試、部署、維護、監(jiān)控、回滾和版本代碼(影響通過其系統(tǒng)運行的每個請求),那么你還沒有準備好使用 WASM。
A/B 測試
直到為時已晚,我才意識到 A/B 測試實際上是一個應用程序級別的問題。在基礎設施層提供原語來實現(xiàn)它是很好的,但是沒有簡單的方法來完全自動化大多數(shù)組織需要的 A/B 測試水平。通常,應用程序需要定義獨特的指標來定義測試的積極信號。如果組織想要在服務網(wǎng)格級別投入 A/B 測試,那么解決方案需要支持以下內(nèi)容:
我們在哪里結(jié)束
最終,我們面臨的挑戰(zhàn)并不是服務網(wǎng)格獨有的。我們工作的組織有一系列限制條件,要求我們對解決的問題以及如何解決問題采取務實的態(tài)度。我們面臨的問題包括:
關于作者
Chris Campbell 擔任軟件工程師和架構(gòu)師已有十多年,與多個團隊和組織合作落地云原生技術和最佳實踐。他在與業(yè)務領導者合作采用加速業(yè)務的軟件交付策略和與工程團隊合作交付可擴展的云基礎架構(gòu)之間分配時間。他對提高開發(fā)人員生產(chǎn)力和體驗的技術最感興趣。





