我們的開發者想要轉換到微服務中改善可擴展性,并且輕松地升級到我們基于AWS的應用。AWS Lambda怎樣才能支持這種類型的架構呢?
企業應用設計在改變。過去大型、復雜、整體的應用逐漸被由一系列稱之為微服務的獨立組件組合成的應用代替。基于微服務設備的應用將更大的應用的功能分成離散的功能,這些功能更易于組合,并且擴展來滿足不斷變化的用戶需求。隨著越來越多的企業應用將應用部署到公有云,類似AWS這樣的供應商設計服務來補充微服務架構。
微服務的核心觀點是“分割”,包括了代碼片段開發,以及在VM和容器中部署。但是類似AWS這樣的公有云供應商正在積極創建服務,來促進沒有VM或者容器的微服務。
比如AWS Lambda,管理和運行來自其他服務的代碼,從而響應事件。比如,變更到亞馬遜S3對象,Amazon DynamoDB數據庫升級,以及來自Amazon Simple Notification Service和Amazon Kinesis Stream的消息都可以觸發AWS Lambda功能。
事件基于Web或者移動設備發生過也可以觸發AWS Lambda功能,比如,如果你的微服務應用的一個組件請求更多的計算資源,低資源的事件就可以觸發AWS Lambda,從而提供另外的組件實例,并且應用負載均衡。類似的,AWS Lambda可也以用于類似于HTTP請求這樣的服務,比如網站點擊,而無需創建一個獨立的組件來處理這個活動。
AWS Lambda只會在事件觸發時運行,不像VM或者容器,會一直運行,并且使用資源直到關閉。企業只需要為每一個用戶實際使用的AWS Lambda功能付費。構建在AWS Lambda之上的功能可以實現高度可擴展,對于低流量任務極其符合成本效益。
開發者可以針對AWS Lambda功能在任何時間升級或者變更代碼,而且不會影響相關的應用組件運行或者亞馬遜服務。