2018 微(wēi)服務 5 大(dà)趨勢

2018-10-11 16:57

對(duì)于DevOps來(lái)說(shuō),2017年(niá‌÷βn)是(shì)重要(yào)的(de)一(yσφδδī)年(nián),因為(wèi)生(shēng)   ≤态系統參與者數(shù)量大(dà)幅增✘ •¥長(cháng),CNCF項目增加了(le♦π≤φ)兩倍。展望未來(lái)一(yī)年(nián),我們預≤‍₩計(jì)創新和(hé)市(shì)場(chǎng)←↔變化(huà)将進一(yī)步加速。以下(xià)是(shì)我們對(d ε¶uì)2018年(nián)微(wēi)服務趨勢的∑↕£✘(de)總結:服務網格、事(shì)件(jiàn)驅動架構、容器(qì)×∏δ原生(shēng)安全性、GraphQL和(hé)c& εhaos engineering。

 

我們将關注這(zhè)些(xiē)趨勢,以及在未來(lá£‍ &i)一(yī)年(nián)圍繞這(zhè)些(xiē)趨勢 →φ 開(kāi)展業(yè)務的(de)公司。你(nǐ)看(kàn)≠<©₽到(dào)了(le)什(shén)麽趨勢?×→在下(xià)面的(de)評論讓我們知(<☆≥'zhī)道(dào)我們遺漏了(le)什(shén)麽,或者如(r₹★ú)果你(nǐ)同意/不(bù)同意我們在εεπ♦這(zhè)裡(lǐ)概述的(de)觀點。

 

 

1.服務網格很(hěn)流行(xíng)!

 

服務網格是(shì)一(yī)個(gè)專用( ♥"yòng)的(de)基礎設施層,用(yòng)于改善服務到(dào)服務★σ↑的(de)通(tōng)信,是(shì)目前最熱(rè)σ♣£ 門(mén)的(de)關于雲的(de)本地(dì)類±  别。随著(zhe)容器(qì)變得(de)越來(§↑☆αlái)越流行(xíng),服務拓撲變得(de)♦∑越來(lái)越動态,需要(yào)改進的(♠φ¥λde)網絡功能(néng)。服務網格可(kě)以通(tōng)過服務發現(xi '®àn),路(lù)由,負載平衡,運行(xíng)狀況檢查和(h↑<é)可(kě)觀察性來(lái)幫助管理(lǐ)流量。服務網格試圖馴服不(bù±δ©')守規矩的(de)容器(qì)複雜(zá)性。

 

很(hěn)明(míng)顯,服務網絡越來(lái)越受歡α©¥™迎,因為(wèi)像HAProxy,traeπσ"fik和(hé)NGINX這(zhè)樣的(de)負✔™&×載均衡器(qì)已經開(kāi)始将自(zì)己重新定 §'↕位為(wèi)數(shù)據平面。我們還(hái)沒有(yǒu)看←♥✘(kàn)到(dào)廣泛的(de)部署,但(dàn)我們知(zhī)✘≈₩道(dào)在生(shēng)産中運行(xíng)服務網格的(de)★↓↕企業(yè)。此外(wài),服務網格不(bù)是(shì)微(®α$wēi)服務或Kubernetes環境專有(yǒu)的(de),也(€'yě)可(kě)以應用(yòng)于VM和±‌β'(hé)無服務器(qì)環境。例如(rú),國(guó)家(₽​jiā)生(shēng)物(wù)技(jγ¶ ì)術(shù)信息中心沒有(yǒu)運行(xíng)容器(q☆∑☆ì),但(dàn)它正在使用(yòng)Link £δerd。

 

服務網格也(yě)可(kě)以用(yòngε♠÷)于混沌工(gōng)程,“在分(★ £fēn)布式系統上(shàng)進行(xí₽φng)實驗的(de)學科(kē),以建立對(duì)系統承受湍流↑→條件(jiàn)的(de)能(néng)力 ✘®Ω的(de)信心。”而不(bù)是(shì)安裝在每個(gè)₽φ↑主機(jī)上(shàng)運行(xíng)的(de)守護≥♥進程,服務網格可(kě)以注入延遲和(hé)進入環境的(↕↓$de)失敗。Istio和(hé)Buoyant 的(de) L  <inkerd 是(shì)該領域最引人(rén)ε¶'注目的(de)産品。請(qǐng)注意,Buoyant去(qù)∏γ↔年(nián)12月(yuè)發布了(le)針對(duì)Kubernet $★es的(de)開(kāi)源服務網絡Condεα‍δuit v0.1。

 

 

 

 

2.事(shì)件(jiàn)驅動架構的(de)崛起。

 

随著(zhe)對(duì)業(yè)務敏捷性的(de↕↕)需求的(de)增加,我們開(kāi)始看(kàn)到(dào)向&ldqu✘÷>≠o;推送”或基于事(shì)件(jiàn ✔)的(de)架構的(de)轉變,其中一(yī)個(g©♥‍£è)服務發送一(yī)個(gè)事(shì)件(jiàn),一(yīβ→)個(gè)或多(duō)個(gè)觀察該事(shì)件(​☆✔∑jiàn)的(de)觀察器(qì)容器(qì)β"‍↕通(tōng)過異步運行(xíng)邏輯來(lái)響應而沒有(yǒu)事(s≈€hì)件(jiàn)生(shēng)産者意識到(dào)'£×。與請(qǐng)求 - 響應體(tǐ)系結構不(bù)同,✘♥在事(shì)件(jiàn)驅動系統中,啓動容器(qì)中的(d&'e)功能(néng)流程和(hé)事(shì)務負載不(bù)™€"依賴于下(xià)遊容器(qì)中遠(yuǎn←♥←≠)程進程的(de)可(kě)用(yòng)性和(hé≠§←)完成。這(zhè)樣做(zuò)的(de)另一(yī)個(gè✘÷♣♠)優點是(shì)開(kāi)發人(rén)員(yu£•án)在設計(jì)各自(zì)的(de)服務時(shí)可(kě)以更加獨立£♠ ÷。

 

雖然開(kāi)發人(rén)員(yuán)可§£★(kě)以将容器(qì)環境設計(jì)β×φ為(wèi)事(shì)件(jiàn)驅動,但(dàn)函數(π&shù)即服務(FaaS)本質上(shàng)體(tǐ)現(xiàn)了(l£γe)這(zhè)種質量。在FaaS體(tǐ)系結®→€構中,函數(shù)作(zuò)為(wè✘ ' i)文(wén)本存儲在數(shù)據庫<§&中,并由事(shì)件(jiàn)觸發。調用(yòn×​&✘g)該函數(shù)後,API控制(zhì)器(qì)接收消息并通(tōng≠×)過負載均衡器(qì)将其發送到(dào)消息總線,消息總線£♥将其排隊等待調度并配置到(dào)調用(yòng)程序容器(qì)。執行(xí∏≈ng)後,結果存儲在數(shù)據庫中,用(yò≈∞®ng)戶将被發送結果,并且該函數(shù)将&π÷被解除,直到(dào)再次觸發為(wèi)止。

 

FaaS的(de)好(hǎo)處包括:1)縮短(duǎn)☆π↕從(cóng)編寫代碼到(dào)運行(xíng®β€←)服務的(de)時(shí)間(jiān),因為(wèi)沒有(yǒu)工✔≈(gōng)件(jiàn)可(kě)以創建或超越源代碼,2)由于 ©§函數(shù)由AWS Lambda等FaaS平台管理(lε≤≈λǐ)和(hé)擴展,所以開(kāi)銷減少(shǎo)。然而,Fφ♦aaS并非沒有(yǒu)挑戰。由于FaaSδ"♣需要(yào)将每個(gè)服務分(fēn)離(lí),因此可(kě)能(n∑‍εéng)存在大(dà)量函數(shù),這(zhλ★<è)些(xiē)函數(shù)很(hěn)難發現(xiàn),管 ↑δ理(lǐ),協調和(hé)監控。最後,如(rú)果沒有(y£€♥ǒu)包括依賴關系在內(nèi)的(de)全面可(kě)見(ji₩‌★←àn)性,很(hěn)難調試FaaS系統,并且可(kě)能(β néng)會(huì)出現(xiàn)無限循'★環。

 

目前,FaaS不(bù)适合需要(yào)更長(cháng)調用(yòng),€★♥"大(dà)量數(shù)據加載到(dào)內(nèi)存以及一(yī)緻性Ω₹₹能(néng)的(de)進程。雖然開(kāi)發人(rén)員(y≈≥uán)将FaaS用(yòng)于後台作(z©€™uò)業(yè)和(hé)時(shí)間(jiān)事(shì)件(jiàn)₹¶,但(dàn)我們相(xiàng)信随著(zhe)存儲層的(de)加"↔速和(hé)平台性能(néng)的(de)提高(gāo),用(yòng)例将€€"随著(zhe)時(shí)間(jiān)的(de)推移而擴展←>±。

 

2017年(nián)秋季,雲原生(shēng)計(jì)算(suàn)基金×≥ φ(jīn)會(huì)(CNCF)調查了(leβ<)550人(rén),其中31%使用(yòng)無服務器(qì)技∏±​↕(jì)術(shù),28%計(jì)劃在未來(lái)18個 δ(gè)月(yuè)內(nèi)使用(y∑€òng)無服務器(qì)。調查随後詢問(→∏wèn)正在使用(yòng)哪個(gè)特定的(de)無服務器(qì)平台。在"♦©δ使用(yòng)無服務器(qì)技(jì)術(σΩshù)的(de)169個(gè)中,77%表示他(tā)們使用(yòng)>φ♣✔AWS Lambda。雖然Lambda可(kě)能(néng)是(shìδ↑ )領先的(de)無服務器(qì)平台,但(dàn)我們相(xiàng)信可✔ (kě)能(néng)會(huì)有(yǒu)一γ¥®(yī)些(xiē)有(yǒu)趣的(de)機(jī)會( ←huì)。Edgecompute對(duì)于物(♣↕✘σwù)聯網和(hé)AR / VR使用(yòng✔β)場(chǎng)景尤為(wèi)強大(dà)。α•

 

 

3.安全需求正在發生(shēng)變化(huà)。

 

由于內(nèi)核訪問(wèn),默認情況下(xià€©✘•),打包在容器(qì)中的(de)應用(yòng)程序基本上(shàn ×ααg)更安全。在VM環境中,唯一(yī)的(de)可(k↓×∞¶ě)見(jiàn)性點是(shì)虛拟設備驅動程序。現(xiàn)在轉移到(÷☆dào)容器(qì)環境,操作(zuò)系統具有(yǒ♥‌u)系統調用(yòng)和(hé)語義含義。這(zhè)是(shì∞₹≤↓)一(yī)個(gè)更豐富的(de)信号。以前,運營商可(kěΩ ​•)以通(tōng)過将代理(lǐ)放(fàng)入虛拟機(jī)來(lái)♠<→ε實現(xiàn)這(zhè)一(yī)信号,但(dàn)這(£×zhè)很(hěn)複雜(zá)且需要(yào)管理(lǐ)很(h→'ěn)多(duō)。容器(qì)提供更清晰的(de)可(kě)見(ji ₹àn)性,與VM環境相(xiàng)比,容器(qì)環境中的(®∏de)集成是(shì)微(wēi)不(bù)足道(dào)的$π♠>(de)。

 

考慮到(dào)這(zhè)一(yī)點,451 Research調查顯示, £​安全性是(shì)容器(qì)采用(yòng±‌)的(de)最大(dà)障礙 - 挑戰仍然存在!最初,漏洞是(sσ♠ hì)容器(qì)環境中的(de)主要(yào)ε±安全問(wèn)題。随著(zhe)公共注冊表中即用(yòng)型容器(qì∏≠)圖像的(de)數(shù)量成倍增加,确保它們也(yě)沒有(y"$ ©ǒu)漏洞變得(de)非常重要(yào)。超時(shí),圖像掃描和φ×'λ(hé)身(shēn)份驗證已經成為(wèi)一(yī)種商> 品。

 

與虛拟機(jī)管理(lǐ)程序作(zuò)'♣ε‌為(wèi)訪問(wèn)和(hé)控制(zhì)點的(de)虛←&拟化(huà)環境不(bù)同,任何可(•λ♦kě)訪問(wèn)內(nèi)核根目錄的(de)容器( $♠✘qì)最終都(dōu)可(kě)以訪問(wè≠λ'γn)內(nèi)核上(shàng)的(de)所♥​≤→有(yǒu)容器(qì)。反過來(lái),組織π₽必須保護容器(qì)與主機(jī)的(de)交互方式,以及哪些(xε↔iē)容器(qì)可(kě)以執行(xíng)某些(xiē)操作(zuò)或βε€系統調用(yòng)。強化(huà)主機(jī)以λ®确保正确配置組和(hé)命名空(kōng)間(jiān)對(♠✔ε♥duì)于維護安全性也(yě)很(hěn)•↕∑重要(yào)。

 

最後,傳統防火(huǒ)牆依靠IP地(dì)址規則來(lái)允≥✘♣∏許網絡流量。此技(jì)術(shù)無法擴展到""(dào)容器(qì)環境,因為(wèi)動态協調器(qì)♣↑會(huì)重用(yòng)IP。運行(÷π±£xíng)時(shí)威脅檢測和(hé)響應對(duì)于生(×∑δshēng)産環境至關重要(yào),并通(tōng)過γσ對(duì)容器(qì)環境進行(xíng)指紋識别并為(w •‍èi)行(xíng)為(wèi)基線構建詳細圖片來(lái)實現(xiàn ±$α),因此很(hěn)容易檢測到(dào)異常行(xíng)為(×γwèi)并對(duì)攻擊者進行(xíng)沙箱處理(σ¥"lǐ)。451研究報(bào)告指出,52%接受調查的(de)公司正在生(✘™™'shēng)産集裝箱,這(zhè)表明(mín♣§g)企業(yè)采用(yòng)容器(qì)本地(dì)運行÷ ∞(xíng)時(shí)威脅檢測解決方案的(de)速度加快(k®↔δuài)。

 

 

4.從(cóng)REST遷移到(dào)GraphQL。ε÷&β

 

GraphQL于2012年(nián)由Fa✔↕♣cebook創建,于2015年(nián)開(kāi)源,是(shì)一"> (yī)種API規範,它是(shì)一(yī)種查詢語言和(hé)用‍‌π(yòng)于完成查詢的(de)運行(xíng)時(★★shí)。GraphQL類型系統允許開(kāi≈§)發人(rén)員(yuán)定義數(shù)據模式。可(kě₹↔)以添加新字段,并且可(kě)以在不(bù)影(yǐng£←§)響現(xiàn)有(yǒu)查詢或重構客戶端應用(yòng)♦✘≈ε程序的(de)情況下(xià)老(lǎo)化(h♣‍"÷uà)字段。GraphQL功能(néng γ↕)強大(dà),因為(wèi)它不(bù)依賴于特定的∑®≥(de)數(shù)據庫或存儲引擎。

 

GraphQL服務器(qì)作(zuò)為(wèi)單個(↓∑gè)HTTP端點運行(xíng),表示服務↓↔的(de)全部功能(néng)。通(tōng)過在類型和(hé'≠$)字段(而不(bù)是(shì)像REST這(zhè)樣的(de)端點)方面£↕• 定義資源之間(jiān)的(de)關系,GraphQL可(kě)以遵循↔∞↓屬性之間(jiān)的(de)引用(yòng)β&γ>,因此服務可(kě)以使用(yòng)單↔€個(gè)查詢從(cóng)多(duō)個(gè)資源接™↓收數(shù)據。或者,REST API需要(yào)為(wè↑₩✔×i)單個(gè)請(qǐng)求加載多(duō)個₽ε∑‍(gè)URL,從(cóng)而增加網絡躍點,從(cóng)而減慢(màn€¥ π)查詢速度。通(tōng)過減少(shǎo)往返次數(shù),Gr₹ aphQL減少(shǎo)了(le)每個(gè)數(shù♠∞∑)據請(qǐng)求所需的(de)資源數♥≈← (shù)量。返回的(de)數(shù)÷§>據通(tōng)常格式為(wèi)JSON。

 

使用(yòng)GraphQL而不(bù)是(shì)≤♠×REST還(hái)有(yǒu)其他(tā)好(hǎo)處©β。首先,客戶端和(hé)服務器(qì)是(shì)分←≈(fēn)離(lí)的(de),因此可(kě₹​)以單獨維護它們。與REST不(bù)同,GraphQL使用(yòng)類似的€✘​(de)語言在客戶端和(hé)服務器(qì)之間(jiān)進行(xíng)​♥>通(tōng)信,因此調試更容易。查詢的(de)形狀完全匹配從(cóng)Ω  服務器(qì)獲取的(de)數(shù)↓☆↕據的(de)形狀,與其他(tā)語言(如(rú)SQL或Gr≠₹emlin)相(xiàng)比,使GraphQL高(gāo≈✔)效且有(yǒu)效。查詢反映其響應的(de)形狀,因此可(kě)以檢測到(™δdào)偏差,并且可(kě)以識别未正确解析的§∏(de)字段。由于查詢更簡單,因此整個(gè)過程更加穩定©∑。衆所周知(zhī),該規範支持外(wài÷₽‌β)部API,但(dàn)我們發現(xiàn)它也(yě)被用(yòng)于☆∏內(nèi)部API。

 

GraphQL用(yòng)戶包括Amplitude,βλ♣♠Credit Karma,KLM,NY Times,Tw₽∑¥✔itch,Yelp等。11月(yuè),亞馬遜通(tōng)過推出包含Gra•↓phQL支持的(de)AWS AppSyn∑₹∑c驗證了(le)GraphQL的(de)流行(xíngΩβ')程度。看(kàn)看(kàn)Graph×₩♣€QL如(rú)何在諸如(rú)Twitch的(d₩≈≠¥e)Twirp RPC框架之類的(de)gRPC和(hé)替代方σ¶¶案中發展,将會(huì)很(hěn)有(yǒu)趣。

 

 

5.Chaos工(gōng)程變得(de)越來(lái)越出∞ 名。

 

最初由Netflix推廣,後來(lái)✘&'由亞馬遜(Amazon)、谷歌(gē)、微(wēi)軟(Microsoft✘Ω)和(hé)Facebook進行(xíng)實踐,Chaos工(g&→<ōng)程在一(yī)個(gè)系統上(shàng)進行(xínβ↔g)實驗,以提高(gāo)其抵禦生(shēng♥>∑₽)産問(wèn)題的(de)能(néng)力。C≥®haos工(gōng)程在過去(qù)十年(nián)中不(b  £↑ù)斷發展。它從(cóng)關閉生(shēng)産環λ₹±←境中的(de)服務的(de)Chaos monke↔¶↓§y開(kāi)始,并通(tōng)過故障注入測試(FIT)和(hé)用(y♣‍òng)于更大(dà)環境的(de)Chaos Kong擴<$€♥展了(le)其規模。

 

從(cóng)表面上(shàng)看(kàn),Chaos工(gōng¥♣€♠)程隻不(bù)過是(shì)注入混亂。雖然破壞系統可(k↓♦ě)能(néng)很(hěn)有(yǒu)趣,但(dàn)它可(kě±€ ∑)能(néng)并不(bù)總是(shì)富有(yǒu)₹₽成效或提供有(yǒu)用(yòng)的(de)信息。Chaos en​ gineering包含更廣泛的(de)範圍,不×$(bù)僅包括注入失敗,還(hái)包括其他(t‌€ā)一(yī)些(xiē)症狀,如(rú)交通(tōng)阻塞、不(bù∏≈)尋常的(de)請(qǐng)求組合等,以發現(x₩β↕iàn)存在的(de)問(wèn)題。除了(le)驗證假✔∏>設,它還(hái)應該揭示系統的(de)新特性。通(tōng)過挖掘系統↑×弱點,團隊可(kě)以幫助提高(gāo)彈性,防止客戶體(tǐ)驗差。

 

像神經網絡和(hé)深度學習(xí)這(zhè)樣的(de)新γγ↔技(jì)術(shù)是(shì)如(rú)>≠§<此的(de)複雜(zá),以至于決定某物(wù)如(rú)何工(₹®™γgōng)作(zuò)可(kě)能(néng)變得(de)不(bù)©Ω如(rú)證明(míng)它是(shì)否正常運作(zuò)那(n€∏₩↑à)麽重要(yào)。Chaos工(gōng€↔ε)程通(tōng)過對(duì)系統進行(xíγ$ng)整體(tǐ)測試來(lái)識别不(bù)穩定性,從(cσ§≥£óng)而幫助解決這(zhè)一(yī)難題。随₹✔•著(zhe)工(gōng)程師(shī)們努力使β₹✘§他(tā)們日(rì)益複雜(zá)的(de)系統更加健壯,這(zhè♠ε)可(kě)能(néng)會(huì)成為(wèi)一‍≠(yī)種更為(wèi)普遍接受的(de)做(zuò)法。

 

随著(zhe)chaos工(gōng)程變得 ×≠(de)更加主流,它可(kě)以采用(yòng)現(xiàn)有≥✘☆¶(yǒu)的(de)開(kāi)源項目、商業(yè)産品,或者₩•♣如(rú)上(shàng)所述,通(tōng)過服務網格實現(xià×¶n)。

 

英文(wén)原文(wén):5 Microservices Tren£♥πds to Watch in 2018

原文(wén):開(kāi)源中國(guó):∞↔φεhttps://www.oschina.ne™±t/translate/5-microservices-trend§•≠s-to-watch-in-2018?lang=chs&p=1

翻譯:矽谷課堂、liyue李月(yuè)