云服務已經(jīng)改變了IT基礎設施,但最新的云趨勢表明了重組作業(yè)更根本性的轉(zhuǎn)變。較新的云服務和應用程序設計理念(如微服務,無服務器計算和函數(shù)即服務)對IT運營人員和開發(fā)人員都有重要的影響。
然而,了解這些服務之間的差異以及它們?nèi)绾斡绊憫贸绦虿渴鹂赡軙钊死Щ螅貏e是因為大多數(shù)云提供商只會告訴您他們的服務是最好的。我們來看一下每個服務的特征,以及他們?nèi)绾问褂肈evOps方法。
微服務的崛起
2011年,微服務架構(gòu)的概念才剛剛開始。到2015年,每個開發(fā)人員都在談論它。大型公司都在微服務中,宣傳代碼可重用性的好處,降低升級風險以及團隊可以部署新功能的速度。微型服務使開發(fā)人員能夠輕松地在小團隊中工作,同時還可以為能夠管理任何單個微服務器的中斷的大型產(chǎn)品做出貢獻。
微服務有三個關鍵因素:
·它是獨立可擴展和可部署的。
·每個服務負責盡可能小任務。
·如果都正常運行,服務質(zhì)量會更好,但如果其中之一出現(xiàn)問題,也不會影響到全局。
例如,Netfix在其整體產(chǎn)品中使用了幾個微服務,其中包括一個用于觀看視頻的建議。如果該推薦服務停止,則流式傳輸平臺的其余部分將繼續(xù)運行,好像沒有發(fā)生任何事情。
微服務有助于推出Docker,這使得開發(fā)商能夠通過容器化進一步隔離其獨立組件。 Docker可幫助開發(fā)人員更快地部署應用程序,而不必擔心底層硬件甚至操作系統(tǒng)。
無服務器計算用例
無服務器計算概念的前提是,開發(fā)人員不必再擔心底層硬件。亞馬遜網(wǎng)絡服務(AWS)Lambda在Google App Engine后也提供了無服務器的計算。雖然Google App Engine是一項驚人的技術,但開發(fā)人員放棄對底層硬件的控制為時過早,部署成熟度不高。
無服務器使用的三個因素:
·沒有空閑費用,這意味著沒有被使用的時間不會產(chǎn)生費用。
·沒有必要配置。基礎架構(gòu)自動縮放。
·您不需要管理任何操作系統(tǒng),硬件或不相關的軟件。
一些提供商可能會對您可使用的容量進行保護或限制,而無需手動請求更多的容量。重點是確保自動縮放的情況下,不會出現(xiàn)意外高的開銷。
某種程度上,無服務器的計算環(huán)境也可以用作函數(shù)云服務(FaaS)。例如,AWS Lambda和Auth0的Webtasks都是無服務器的FaaS。
AWS CodeBuild和Google App Engine是無服務器的,但不是FaaS。
按需的函數(shù)即服務云
亞馬遜在2015年推出了AWS Lambda。Lambda將用戶推向無服務器計算,并介紹了功能即服務的概念。 AWS Lambda既是無服務器,無管理配置、閑置費用或硬件管理,同時也是FaaS。
FaaS有三個關鍵因素:
·它按需執(zhí)行代碼(無空閑執(zhí)行)。
·它會自動縮放。
·它運行一個特定的功能,而不用擔心操作系統(tǒng),硬件等。
使用FaaS,用戶能夠運行輕量級的按需代碼塊,并能輕松創(chuàng)建和移除。在這種環(huán)境中運行的函數(shù)需要最少的運行時間(通常小于分鐘),通常最適合直接響應用戶交互的應用程序。例如,開發(fā)人員可以為供應動態(tài)網(wǎng)站的FaaS編寫代碼,或者檢查用戶對給定API的權(quán)限。 FaaS通常用作中間件,以應用業(yè)務邏輯規(guī)則來與數(shù)據(jù)庫進行用戶交互。它也常用于Webhook或其他基于事件的觸發(fā)器。
FaaS并不意味著無服務器。例如,Docker函數(shù)要求您運行承載Docker的服務器(或VM);但允許使用一點代碼快速觸發(fā)單個存儲器。 FaaS只意味著代碼僅在響應事件時被執(zhí)行。不要求底層的基礎設施在等待用戶代碼時保持空閑。
平臺即服務的應用場景
平臺即服務(PaaS)是一個較舊的概念。雖然與FaaS類似,因為它不需要任何手動配置,PaaS通常涉及一些空閑的運行時,并不是真正被認為的微服務器。 PaaS提供商包括Google App Engine和Heroku。這些提供商通常提供一個框架,如Express.js,或者一個自定義的Python框架,如Google App Engine,并根據(jù)應用需求自動擴展基礎架構(gòu) ——添加服務器。
PaaS有兩個關鍵條件:
·是一個單一的端到端平臺,可以構(gòu)建整個應用程序。
·不需要配置,沒有硬件,沒有操作系統(tǒng),沒有其他軟件。
許多開發(fā)人員已經(jīng)從PaaS轉(zhuǎn)變到FaaS,因為后者提供了更高水平的抽象,而沒有太多的供應商鎖定。然而,Google Firebase是個變得越來越流行的PaaS。 Google Firebase作為一個簡單的數(shù)據(jù)庫即服務開始,但已經(jīng)變成了一個更廣泛的平臺,提供了許多連接的部件。 Firebase是獨一無二的,因為它是一個全面的PaaS,可以將FaaS作為其產(chǎn)品之一。
軟件即服務的多種用法
除了任何用戶管理要求,最高級別的抽象是軟件即服務(SaaS)。
數(shù)據(jù)庫即服務是一種提供服務的SaaS,可以幫助開發(fā)人員在不管理數(shù)據(jù)庫的情況下構(gòu)建更好的應用程序。
為了成為SaaS,軟件需要滿足以下標準:
·在沒有任何安裝的情況下運行;
·無需開始編碼;
·可以從任何有互聯(lián)網(wǎng)連接的地方訪問
·根據(jù)用戶需求進行自動擴展。
SaaS有許多類型,包括Salesforce和Gmail等產(chǎn)品。開發(fā)人員和IT運營專業(yè)人員使用基于SaaS的工具進行應用程序性能監(jiān)控,數(shù)據(jù)庫和安全性。
重要的是要注意,開發(fā)者需要的不僅僅需要SaaS來創(chuàng)建一個應用程序,而SaaS產(chǎn)品不能被加入到一個新的應用程序中。任何需要編碼將東西連接在一起的東西不是SaaS。典型的無服務器應用程序?qū)⑹褂妙愃艶aaS的方式連接到多個SaaS產(chǎn)品,以確保不必運行任何服務器,例如在AWS Lambda上運行FaaS并連接到作為數(shù)據(jù)庫SaaS的Amazon DynamoDB。
DEVOPS連接
云服務為運營人員移除了大量工作,誰可以專注于管理服務而不是硬件。隨著云計算越來越受歡迎,組織需要運營的IT人員從僅僅管理硬件到學習開發(fā),以便管理虛擬化硬件。這是DevOps開始的地方。運營人員需要學習在新的云時代生存的額外技能。在一些組織中,運營團隊轉(zhuǎn)變?yōu)镈evOps團隊,需要運營專業(yè)人員學習一些編碼,以保持和保持相關性。
微服務,無服務器計算和FaaS,引入了新的根本變革。現(xiàn)在,我們正在將更多的應用程序移植到無服務器平臺上,開發(fā)人員轉(zhuǎn)而更多地了解操作。如果云提供商為我們自動處理一切,我們就不能依靠運營人員來管理云資源。這并不意味著無服務器功能將立即無限制地縮放。傳統(tǒng)的架構(gòu)不像運營團隊只能添加額外的虛擬實例或者要求更多的容量。知道瓶頸存在很重要。開發(fā)人員在開發(fā)面向網(wǎng)絡規(guī)模架構(gòu)的服務之前,需要注意限制。
例如,DynamoDB是一種服務,開發(fā)人員幾乎可以進行規(guī)模化。然而,實際規(guī)模受到哈希密鑰的限制。在構(gòu)建應用程序后,哈希鍵難以更改,因此開發(fā)人員在開始開發(fā)之前需要了解這些限制。否則,他們最后會重寫代碼。