編者按
本文作者介紹了企業(yè)組織采用服務(wù)網(wǎng)格面臨的哪些挑戰(zhàn),建議企業(yè)應(yīng)該從數(shù)據(jù)平面開始逐步推進(jìn)书在,從了解它友浸、熟悉它、再到擴(kuò)大規(guī)模使用它养晋,并且以介紹其演講的幻燈片為切入點介紹了架構(gòu)演進(jìn)的步驟衬吆。
正文
最近,我寫了一篇關(guān)于在企業(yè)組織中采用服務(wù)網(wǎng)格的具有哪些挑戰(zhàn)的文章绳泉,這篇文章是為DZone及其遷移到微服務(wù)的報告撰寫的逊抡。在這篇文章中,我們首先要解決的問題之一是“你是否應(yīng)該沿著采用服務(wù)網(wǎng)格的道路走下去”零酪,我是這么說的:
首先回答“不”冒嫡。如果您剛剛開始使用微服務(wù)架構(gòu)和少量的服務(wù),請確保您首先準(zhǔn)備好了基礎(chǔ)部分四苇。微服務(wù)及其相關(guān)的基礎(chǔ)設(shè)施是一種優(yōu)化方式孝凌,可以讓您更快的變更應(yīng)用程序。在沒有服務(wù)網(wǎng)格的情況下月腋,您可以朝著更快的方向前進(jìn)蟀架。你甚至可能想要一些服務(wù)網(wǎng)格帶來的好處,而不是去關(guān)注它所有的復(fù)雜性榆骚。那么片拍,請看看類似Gloo的產(chǎn)品,一個建立在Envoy代理上的API網(wǎng)關(guān)妓肢。
我認(rèn)為在當(dāng)前時刻捌省,這是一個非常重要的考慮,有以下兩大原因:
- 總的來看碉钠,服務(wù)網(wǎng)格的實現(xiàn)還沒有準(zhǔn)備好投入生產(chǎn)纲缓。
- 全部投入(all-in)到一個服務(wù)網(wǎng)絡(luò)的復(fù)雜性仍然很高。
這并不意味著沒有團(tuán)隊成功地使用了服務(wù)網(wǎng)格放钦,或者您應(yīng)該遠(yuǎn)離它色徘。但是恭金,我確實認(rèn)為您應(yīng)該建立這樣的能力操禀,當(dāng)您真正準(zhǔn)備好了并且可以從中獲益的時候,最終能成功地將服務(wù)網(wǎng)格引入横腿。例如颓屑,在報告中斤寂,我列出了您可能想要使用服務(wù)網(wǎng)格的原因:
- 跨多個集群部署大量微服務(wù)
- 容器/k8s和虛擬機(jī)的混合部署
- 用于構(gòu)建服務(wù)的語言的異構(gòu)部署
- 網(wǎng)絡(luò)可觀測性的不完整和不一致視圖
即使有了以上這些理由,你依然會面臨這些挑戰(zhàn):
- 選擇哪一個服務(wù)網(wǎng)格產(chǎn)品揪惦?
- 誰來做技術(shù)支持遍搞?
- 單集群的多租戶問題
- 缺乏多集群的管理方法
- 已有服務(wù)如何適配(sidecar的生命周期、競態(tài)條件等等)
- 開發(fā)人員與運維人員的界限在哪里
- 非容器環(huán)境/混合環(huán)境
- 中心化 vs 去中心化
通過我在Red Hat和現(xiàn)在Solo.io加起來兩年以上的工作器腋,我一直在幫助人們解決那些棘手的問題(順便說一句溪猿,如果你想交談/需要這些方面的幫助,可以通過@christianposta聯(lián)系我)纫塌。但有一件我從我們的客戶/用戶一直觀察到诊县,并且持續(xù)一段時間提出建議,那就是你采用服務(wù)網(wǎng)格的第一步措左,應(yīng)該總是先使用在一定程度上(自行)隔離的數(shù)據(jù)平面技術(shù)依痊,要了解它是如何工作的,如何實施怎披,如何調(diào)試等等胸嘁。
例如,在我最近做的一次演講中凉逛,我說過要從Envoy(Envoy是許多服務(wù)網(wǎng)格實現(xiàn)的底層數(shù)據(jù)平面技術(shù))開始性宏。PPT如下:
從架構(gòu)的角度來看,它可能是這樣的:
當(dāng)然鱼炒,如果你要使用Envoy衔沼,我建議從Gloo開始,這基本上是一個具有edge與API網(wǎng)關(guān)能力的企業(yè)版Envoy昔瞧,并且很好地植入了服務(wù)網(wǎng)格指蚁。一旦你有了它,對它熟練使用自晰,那么你就會準(zhǔn)備好增加它的使用凝化,甚至可能通過代理的分層引入一些隔離:
接下來的方法是將網(wǎng)關(guān)推入到應(yīng)用架構(gòu)中。我們看到我們的用戶在每個應(yīng)用程序邊界采用一個網(wǎng)關(guān)的方法酬荞,開始有了一個網(wǎng)格的“感覺”搓劫,但在應(yīng)用程序引入了一些結(jié)構(gòu)(例如,API網(wǎng)關(guān)模式)混巧。我開始稱之為“waypoints”架構(gòu)枪向。就像飛行員使用航路點(waypoints)來指導(dǎo)他們的飛行計劃一樣,這些網(wǎng)關(guān)為您的應(yīng)用架構(gòu)增加了結(jié)構(gòu)咧党,同時解決了諸如安全性和API解耦的南北通信問題秘蛔,同時為成功采用服務(wù)網(wǎng)格奠定了基礎(chǔ)。
最后,您可以開始在應(yīng)用程序中引入獨立于邊界的服務(wù)網(wǎng)格代理深员,以解決棘手的但恰恰是服務(wù)網(wǎng)格技術(shù)最擅長解決的service-to-service通信挑戰(zhàn):
這里重要的部分是網(wǎng)關(guān)负蠕,并且仍然有非常有用的用途!它們向應(yīng)用架構(gòu)中添加結(jié)構(gòu)和路徑點倦畅,同時在需要的地方將某些實現(xiàn)細(xì)節(jié)與其他服務(wù)分離并隱藏起來遮糖。在很多方面,這都遵循了DDD有界上下文模型叠赐,網(wǎng)關(guān)提供了一個“反腐敗”層欲账。否則,如果你只是把所有的服務(wù)都當(dāng)作“伙伴”芭概,你就會開始堅定地邁向死星:
希望這篇文章有助于您奠定一個成功的方法敬惦,通過小范圍使用服務(wù)網(wǎng)格,然后逐漸緩慢擴(kuò)展有意義的各個地方谈山,并且你的應(yīng)用程序可以從服務(wù)網(wǎng)格架構(gòu)中獲益俄删。否則,您將承擔(dān)同時引入太多復(fù)雜性的風(fēng)險奏路,這將違背您實現(xiàn)應(yīng)用程序和基礎(chǔ)設(shè)施現(xiàn)代化的意圖畴椰。
關(guān)于 ServiceMeshe 社區(qū)
ServiceMesher 社區(qū)是由一群擁有相同價值觀和理念的志愿者們共同發(fā)起,于 2018 年 4 月正式成立鸽粉。
社區(qū)關(guān)注領(lǐng)域有:容器斜脂、微服務(wù)、Service Mesh触机、Serverless帚戳,擁抱開源和云原生,致力于推動 Service Mesh 在中國的蓬勃發(fā)展儡首。
社區(qū)官網(wǎng):https://www.servicemesher.com