View a markdown version of this page

簡化操作 - 在 上實作微服務 AWS

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

簡化操作

為了進一步簡化執行、維護和監控微服務所需的操作工作,我們可以使用 完全無伺服器架構。

部署 Lambda 型應用程式

您可以透過上傳zip檔案封存,或使用有效的 Amazon ECR 映像 URI 透過主控台 UI 建立和上傳容器映像,來部署 Lambda 程式碼。不過,當 Lambda 函數變得複雜時,表示它具有層、相依性和許可,透過 UI 上傳可能會變得難以進行程式碼變更。

使用 AWS CloudFormation 和  AWS Serverless Application Model (AWS SAM) AWS Cloud Development Kit (AWS CDK)或 Terraform 可簡化定義無伺服器應用程式的程序。CloudFormation 原生支援的 AWS SAM 提供簡化的語法,用於指定無伺服器資源。 AWS Lambda Layers 可協助管理跨多個 Lambda 函數的共用程式庫、盡可能減少函數使用量、集中租用戶感知程式庫,並改善開發人員體驗。Lambda SnapStart for Java 可增強對延遲敏感應用程式的啟動效能。

若要部署,請在 CloudFormation 範本中指定資源和許可政策、套件部署成品,以及部署範本。SAM Local 是一種 AWS CLI 工具,允許在上傳至 Lambda 之前對無伺服器應用程式進行本機開發、測試和分析。

與 AWS Cloud9 IDE 等工具整合 AWS CodeBuild AWS CodeDeploy,並 AWS CodePipeline 簡化撰寫、測試、偵錯和部署 SAM 型應用程式。

下圖顯示使用 CloudFormation 和 AWS CI/CD 工具部署 AWS Serverless Application Model 資源。

show AWS Serverless Application Model (AWS SAM) 圖表

圖 2: AWS Serverless Application Model (AWS SAM)

抽象化多租用戶複雜性

在 SaaS 平台等多租戶環境中,簡化與多租戶相關的複雜性至關重要,讓開發人員能夠專注於特徵和功能開發。這可以使用 AWS Lambda Layers 等工具來實現,該工具提供共同程式庫來解決交叉切割問題。這種方法背後 的原理是,共用程式庫和工具在正確使用時,可以有效地管理租戶內容。 

但是,由於業務邏輯可能帶來的複雜性和風險,他們不應該擴展到封裝業務邏輯。共用程式庫的基本問題是與更新相關的複雜性增加,相較於標準程式碼複製,管理更具挑戰性。因此,在尋找最有效的抽象時,在共用程式庫的使用與重複之間取得平衡至關重要。

API 管理

管理 APIs 可能很耗時,特別是在考慮多個版本、開發週期階段、授權和其他功能時,例如限流和快取。除了 API Gateway 之外,有些客戶也會使用 ALB (Application Load Balancer) 或 NLB (Network Load Balancer) 進行 API 管理。Amazon API Gateway 有助於降低建立和維護 RESTful APIs的操作複雜性。它可讓您以程式設計方式建立 APIs,做為「前門」,從後端服務存取資料、商業邏輯或功能、授權和存取控制、速率限制、快取、監控和流量管理,並在不管理伺服器的情況下執行 APIs。

圖 3 說明 API Gateway 如何處理 API 呼叫並與其他元件互動。來自行動裝置、網站或其他後端服務的請求會路由至最近的 CloudFront 存在點 (PoP), 以減少 延遲 並提供最佳的 使用者體驗。

顯示 API Gateway 呼叫流程的圖表

圖 3:API Gateway 呼叫流程