閱讀709 返回首頁    go 阿裏雲 go 技術社區[雲棲]


微服務器和無服務器可改變應用交付

雲服務已經改變了IT基礎設施,但最新的雲趨勢表明了重組作業更根本性的轉變。較新的雲服務和應用程序設計理念(如微服務,無服務器計算和函數即服務)對IT運營人員和開發人員都有重要的影響。

然而,了解這些服務之間的差異以及它們如何影響應用程序部署可能會令人困惑,特別是因為大多數雲提供商隻會告訴您他們的服務是最好的。我們來看一下每個服務的特征,以及他們如何使用DevOps方法。

微服務的崛起

2011年,微服務架構的概念才剛剛開始。到2015年,每個開發人員都在談論它。大型公司都在微服務中,宣傳代碼可重用性的好處,降低升級風險以及團隊可以部署新功能的速度。微型服務使開發人員能夠輕鬆地在小團隊中工作,同時還可以為能夠管理任何單個微服務器的中斷的大型產品做出貢獻。

微服務有三個關鍵因素:

·它是獨立可擴展和可部署的。

·每個服務負責盡可能小任務。

·如果都正常運行,服務質量會更好,但如果其中之一出現問題,也不會影響到全局。

例如,Netfix在其整體產品中使用了幾個微服務,其中包括一個用於觀看視頻的建議。如果該推薦服務停止,則流式傳輸平台的其餘部分將繼續運行,好像沒有發生任何事情。

微服務有助於推出Docker,這使得開發商能夠通過容器化進一步隔離其獨立組件。 Docker可幫助開發人員更快地部署應用程序,而不必擔心底層硬件甚至操作係統。

無服務器計算用例

無服務器計算概念的前提是,開發人員不必再擔心底層硬件。亞馬遜網絡服務(AWS)Lambda在Google App Engine後也提供了無服務器的計算。雖然Google App Engine是一項驚人的技術,但開發人員放棄對底層硬件的控製為時過早,部署成熟度不高。

無服務器使用的三個因素:

·沒有空閑費用,這意味著沒有被使用的時間不會產生費用。

·沒有必要配置。基礎架構自動縮放。

·您不需要管理任何操作係統,硬件或不相關的軟件。

一些提供商可能會對您可使用的容量進行保護或限製,而無需手動請求更多的容量。重點是確保自動縮放的情況下,不會出現意外高的開銷。

某種程度上,無服務器的計算環境也可以用作函數雲服務(FaaS)。例如,AWS Lambda和Auth0的Webtasks都是無服務器的FaaS。

AWS CodeBuild和Google App Engine是無服務器的,但不是FaaS。

按需的函數即服務雲

亞馬遜在2015年推出了AWS Lambda。Lambda將用戶推向無服務器計算,並介紹了功能即服務的概念。 AWS Lambda既是無服務器,無管理配置、閑置費用或硬件管理,同時也是FaaS。

FaaS有三個關鍵因素:

·它按需執行代碼(無空閑執行)。

·它會自動縮放。

·它運行一個特定的功能,而不用擔心操作係統,硬件等。

使用FaaS,用戶能夠運行輕量級的按需代碼塊,並能輕鬆創建和移除。在這種環境中運行的函數需要最少的運行時間(通常小於分鍾),通常最適合直接響應用戶交互的應用程序。例如,開發人員可以為供應動態網站的FaaS編寫代碼,或者檢查用戶對給定API的權限。 FaaS通常用作中間件,以應用業務邏輯規則來與數據庫進行用戶交互。它也常用於Webhook或其他基於事件的觸發器。

FaaS並不意味著無服務器。例如,Docker函數要求您運行承載Docker的服務器(或VM);但允許使用一點代碼快速觸發單個存儲器。 FaaS隻意味著代碼僅在響應事件時被執行。不要求底層的基礎設施在等待用戶代碼時保持空閑。

平台即服務的應用場景

平台即服務(PaaS)是一個較舊的概念。雖然與FaaS類似,因為它不需要任何手動配置,PaaS通常涉及一些空閑的運行時,並不是真正被認為的微服務器。 PaaS提供商包括Google App Engine和Heroku。這些提供商通常提供一個框架,如Express.js,或者一個自定義的Python框架,如Google App Engine,並根據應用需求自動擴展基礎架構 ——添加服務器。

PaaS有兩個關鍵條件:

·是一個單一的端到端平台,可以構建整個應用程序。

·不需要配置,沒有硬件,沒有操作係統,沒有其他軟件。

許多開發人員已經從PaaS轉變到FaaS,因為後者提供了更高水平的抽象,而沒有太多的供應商鎖定。然而,Google Firebase是個變得越來越流行的PaaS。 Google Firebase作為一個簡單的數據庫即服務開始,但已經變成了一個更廣泛的平台,提供了許多連接的部件。 Firebase是獨一無二的,因為它是一個全麵的PaaS,可以將FaaS作為其產品之一。

軟件即服務的多種用法

除了任何用戶管理要求,最高級別的抽象是軟件即服務(SaaS)。

數據庫即服務是一種提供服務的SaaS,可以幫助開發人員在不管理數據庫的情況下構建更好的應用程序。

為了成為SaaS,軟件需要滿足以下標準:

·在沒有任何安裝的情況下運行;

·無需開始編碼;

·可以從任何有互聯網連接的地方訪問

·根據用戶需求進行自動擴展。

SaaS有許多類型,包括Salesforce和Gmail等產品。開發人員和IT運營專業人員使用基於SaaS的工具進行應用程序性能監控,數據庫和安全性。

重要的是要注意,開發者需要的不僅僅需要SaaS來創建一個應用程序,而SaaS產品不能被加入到一個新的應用程序中。任何需要編碼將東西連接在一起的東西不是SaaS。典型的無服務器應用程序將使用類似FaaS的方式連接到多個SaaS產品,以確保不必運行任何服務器,例如在AWS Lambda上運行FaaS並連接到作為數據庫SaaS的Amazon DynamoDB。

DEVOPS連接

雲服務為運營人員移除了大量工作,誰可以專注於管理服務而不是硬件。隨著雲計算越來越受歡迎,組織需要運營的IT人員從僅僅管理硬件到學習開發,以便管理虛擬化硬件。這是DevOps開始的地方。運營人員需要學習在新的雲時代生存的額外技能。在一些組織中,運營團隊轉變為DevOps團隊,需要運營專業人員學習一些編碼,以保持和保持相關性。

微服務,無服務器計算和FaaS,引入了新的根本變革。現在,我們正在將更多的應用程序移植到無服務器平台上,開發人員轉而更多地了解操作。如果雲提供商為我們自動處理一切,我們就不能依靠運營人員來管理雲資源。這並不意味著無服務器功能將立即無限製地縮放。傳統的架構不像運營團隊隻能添加額外的虛擬實例或者要求更多的容量。知道瓶頸存在很重要。開發人員在開發麵向網絡規模架構的服務之前,需要注意限製。

例如,DynamoDB是一種服務,開發人員幾乎可以進行規模化。然而,實際規模受到哈希密鑰的限製。在構建應用程序後,哈希鍵難以更改,因此開發人員在開始開發之前需要了解這些限製。否則,他們最後會重寫代碼。

本文轉自d1net(轉載)

最後更新:2017-10-11 16:35:16

  上一篇:go  企業如何實施物聯網解決方案
  下一篇:go  阿裏雲拓展歐洲戰場 欲再建數據中心