隨著Kubernetes和微服務(wù)的采用,邊緣已從簡單的硬件負(fù)載平衡器演變?yōu)榘ˋPI網(wǎng)關(guān),內(nèi)容交付網(wǎng)絡(luò)和負(fù)載平衡器的完整的硬件和軟件代理堆棧。 理解這種轉(zhuǎn)變對于數(shù)據(jù)中心主管來說至關(guān)重要,因此他們可以做出正確的架構(gòu),策略和運(yùn)營決策。 為了了解轉(zhuǎn)變,快速的歷史旅程會(huì)有所幫助。
早期的Internet和負(fù)載平衡器
在1990年代中期,Web應(yīng)用程序體系結(jié)構(gòu)還處于起步階段。 由數(shù)據(jù)庫層,應(yīng)用程序?qū)雍捅硎緦咏M成的經(jīng)典n層體系結(jié)構(gòu)是此時(shí)的實(shí)際應(yīng)用程序體系結(jié)構(gòu)。 通過使用數(shù)據(jù)中心邊緣的第一個(gè)迭代:負(fù)載平衡器,將應(yīng)用程序?qū)踊虮硎緦拥亩鄠€(gè)實(shí)例連接到Internet,可以對n層體系結(jié)構(gòu)進(jìn)行水平擴(kuò)展。 在這個(gè)時(shí)代,負(fù)載平衡器負(fù)責(zé)在應(yīng)用程序的不同實(shí)例之間路由流量,以確保高可用性和可伸縮性。 盡管2001年HAProxy的發(fā)布開始普及軟件負(fù)載平衡器的概念,但負(fù)載平衡器通常是一種硬件設(shè)備。
ADC和Web 2.0的興起
達(dá)西·迪尼奇(Darcy DiNucci)于1999年創(chuàng)造了Web 2.0一詞,指的是Internet從單向媒體向用戶可以與網(wǎng)站參與的雙向媒體的發(fā)展。 在此期間,AJAX(異步JavaScript和XML)開發(fā)技術(shù)變得無處不在。 通過將數(shù)據(jù)交換與演示脫鉤,AJAX為最終用戶創(chuàng)造了更加豐富的用戶體驗(yàn)。 這種體系結(jié)構(gòu)還創(chuàng)建了許多"客戶"客戶端,因?yàn)檫@些客戶端將不斷從Web應(yīng)用程序發(fā)送和接收數(shù)據(jù)。 另外,這個(gè)時(shí)代的電子商務(wù)開始興起,信用卡信息的安全傳輸首次成為人們關(guān)注的主要問題。
網(wǎng)絡(luò)中的這些變化-加密的通信和更長壽命的連接上的許多請求-推動(dòng)了邊緣從標(biāo)準(zhǔn)硬件/軟件負(fù)載平衡器到更專用的應(yīng)用程序交付控制器(ADC)的演進(jìn)。 ADC包含用于所謂的應(yīng)用程序加速的各種功能,包括SSL卸載,緩存和壓縮。
達(dá)到網(wǎng)絡(luò)規(guī)模
在2010年代初期,許多云計(jì)算第一公司的用戶群經(jīng)歷了指數(shù)級增長。 這些公司背后的軟件最初是作為整體Web應(yīng)用程序設(shè)計(jì)的。 隨著他們的用戶群激增到天文數(shù)字,這些公司發(fā)現(xiàn)網(wǎng)絡(luò)規(guī)模的問題確實(shí)是指示不同體系結(jié)構(gòu)的另一類問題。 Twitter,F(xiàn)acebook和New Relic等公司開始將關(guān)鍵功能部件從整體中重構(gòu)為獨(dú)立部署的服務(wù)。 通過將關(guān)鍵業(yè)務(wù)功能部署為服務(wù),這些組織能夠獨(dú)立擴(kuò)展和管理整個(gè)應(yīng)用程序的不同方面。 這些獨(dú)立服務(wù)的流量通過整體路由。 路由的任何更改都意味著開發(fā)人員經(jīng)常不得不重新部署整個(gè)整體。 這成為改變速度的瓶頸,但至少解決了規(guī)模問題。
救援API網(wǎng)關(guān)
解決了規(guī)模問題的尖端組織現(xiàn)在面臨著解決整體應(yīng)用程序問題的問題,這正拖慢了他們的應(yīng)用程序開發(fā)速度。 從這些體系結(jié)構(gòu)中獲得的經(jīng)驗(yàn)之一是顯而易見的-對于重構(gòu)服務(wù),整體組件只是充當(dāng)路由器。 這一發(fā)現(xiàn)引發(fā)了早期API網(wǎng)關(guān)的發(fā)展。 API網(wǎng)關(guān)執(zhí)行原始整體中的路由功能,從而為整個(gè)應(yīng)用程序創(chuàng)建通用外觀。 API網(wǎng)關(guān)集中了跨領(lǐng)域的應(yīng)用程序級功能,例如速率限制,身份驗(yàn)證和路由。 這減少了每個(gè)單獨(dú)服務(wù)中所需的復(fù)制功能量。
云原生時(shí)代:微服務(wù)
整體已成為微型,但它仍然存在并減慢了應(yīng)用程序的開發(fā)和部署。 微服務(wù)介入解決了這個(gè)問題。 每個(gè)微服務(wù)代表一個(gè)獨(dú)立的業(yè)務(wù)功能,并且獨(dú)立于應(yīng)用程序的其他微服務(wù)而開發(fā)和發(fā)布。 通過解耦開發(fā)周期,微服務(wù)使組織能夠更有效地?cái)U(kuò)展云的軟件開發(fā)流程。 鑒于微服務(wù)可以部署在多種環(huán)境中:虛擬機(jī),裸機(jī),容器作為功能— API網(wǎng)關(guān)在將流量路由到正確的微服務(wù)中起著至關(guān)重要的作用。
現(xiàn)在到未來—轉(zhuǎn)向全周期開發(fā)和云原生工作流程
微服務(wù)不僅僅是應(yīng)用程序體系結(jié)構(gòu)的轉(zhuǎn)變。 微服務(wù)也是開發(fā)工作流程中的一種轉(zhuǎn)變。 團(tuán)隊(duì)負(fù)責(zé)整個(gè)軟件開發(fā)生命周期-從設(shè)計(jì)到開發(fā)再到測試再到部署和發(fā)布。 一些組織將這些團(tuán)隊(duì)作為呼叫輪換的一部分("又名,就創(chuàng)建,就運(yùn)行")。 這種開發(fā)模型被Netflix稱為全周期開發(fā),它是軟件開發(fā)和交付方式的一次轉(zhuǎn)變。
工作流程的這種轉(zhuǎn)變也對數(shù)據(jù)中心優(yōu)勢產(chǎn)生了影響。 API網(wǎng)關(guān)(以及邊緣堆棧的其他元素)不僅需要適應(yīng)微服務(wù)架構(gòu),而且整個(gè)周期的開發(fā)團(tuán)隊(duì)都需要訪問和管理整個(gè)邊緣。 此管理包括路由(服務(wù)的哪個(gè)版本應(yīng)接收生產(chǎn)流量)以及更精細(xì)的控件,例如加權(quán)路由(金絲雀版本需要)和流量屏蔽(將流量的副本創(chuàng)建到服務(wù)的測試版本以進(jìn)行測試) 目的)。 通過使開發(fā)團(tuán)隊(duì)能夠管理發(fā)布和部署,組織可以擴(kuò)展這些流程以支持甚至高度復(fù)雜的應(yīng)用程序。
全周期開發(fā)團(tuán)隊(duì)還經(jīng)常對其微服務(wù)負(fù)責(zé)運(yùn)營。 取得成功的關(guān)鍵是實(shí)時(shí)了解其微服務(wù)的性能。 邊緣通過分析流入和流出微服務(wù)的所有流量,提供了對微服務(wù)行為的重要了解。 這使邊緣可以報(bào)告諸如延遲,吞吐量和錯(cuò)誤率等指標(biāo),從而深入了解應(yīng)用程序的運(yùn)行狀況。
邊緣策略管理至關(guān)重要
考慮到邊緣在現(xiàn)代云原生工作流中的重要性,全周期開發(fā)團(tuán)隊(duì)如何管理邊緣? 不幸的是,傳統(tǒng)上邊緣堆棧的所有組件都由操作來管理,并且操作接口不適合全周期開發(fā)團(tuán)隊(duì)中的應(yīng)用程序開發(fā)人員使用。 此外,邊緣組件通常是隔離運(yùn)行的,沒有內(nèi)聚的操作界面。 畢竟,全周期開發(fā)人員不是全職操作員; 他們只需要能夠滿足其特定需求的邊緣機(jī)器即可。
幸運(yùn)的是,Kubernetes生態(tài)系統(tǒng)可以提供指導(dǎo)和啟發(fā)。 使用基于YAML的通用配置語言,開發(fā)人員可以管理自己的邊緣配置,而集中式運(yùn)營團(tuán)隊(duì)則可以執(zhí)行全局策略。 這是前沿團(tuán)隊(duì)用來提供快速開發(fā)周期的最新的優(yōu)勢。