使用 DevOps 實務和 AWS Cloud9 使用微服務建置鬆散結合的架構 - AWS Prescriptive Guidance

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

使用 DevOps 實務和 AWS Cloud9 使用微服務建置鬆散結合的架構

由亞歷山大納迪 (AWS) 創建

環境:PoC 或試驗

技能:DevOps; 無伺服器; 網站和 Web 應用程式; 資料庫

AWS 服務:AWS Cloud9; AWS CloudFormation; AWS CodePipeline; Amazon DynamoDB DynamoDB; AWS CodeCommit

Summary

此模式示範如何在無伺服器架構中開發典型的 Web 應用程式,適用於開始在 Amazon Web Services (AWS) 上測試 DevOps 實務的開發人員和開發客戶。它構建了一個示例應用程序,為瀏覽和購買書籍創建一個店面和後端,並提供一個可獨立開發的微服務。該模式使用 AWS Cloud9 做為開發環境、Amazon DynamoDB 資料庫做為資料存放區,以及 AWS 代碼管線和 AWS 代碼建置等 AWS 服務,以提供持續整合和持續部署 (CI/CD) 功能。

此模式將指引您完成下列開發活動: 

  • 建立標準的 AWS Cloud9 開發環境

  • 使用 AWS CloudFormation 範本為書籍建立 Web 應用程式和微服務

  • 使用 AWS Cloud9 修改前端、認可變更和測試變更

  • 建立和測試對微服務的 CI/CD 管線

  • 自動化單元測試

此模式的代碼在 GitHub 中提供,在AWS DevOps 端對端研討會儲存庫。

先決條件和限制

先決條件

重要:在 AWS 帳戶中建置此示範應用程式會建立並消耗 AWS 資源。您需要負責支付建立和執行應用程式的 AWS 服務和資源的費用。完成工作後,請務必移除所有資源,以避免持續的費用。如需清除說明,請參閱史詩章節。 

限制

此逐步說明僅用於示範和開發用途。若要在生產環境中使用此選項,請參閱安全最佳實務,AWS Identity and Access Management 對 IAM 角色、Amazon DynamoDB 和其他使用的服務進行必要的變更。Web 應用程式衍生自AWS 書店示範應用程式;如需其他考量,請參閱已知限制區段中的讀我檔案。

Architecture

書店應用程式的架構在架構區段中的讀我檔案AWS 書店示範應用程式。 

從部署的角度來看,書店演示應用程序使用單個 CloudFormation 模板將所有服務和對象部署在一個堆棧中。這種模式進行了一些變更,以示範特定的開發人員或團隊如何在特定產品 (書籍) 中工作,並獨立於應用程式的其餘部分進行更新。因此,此模式的程式碼會將 Books 微服務的 AWS Lambda 函數和相關物件分隔成第二個 CloudFormation 範本,以建立 Books 堆疊。這樣就可以看到使用 CI/CD 做法更新的微服務。在下圖中,虛線邊界會識別 Books 微服務。

Tools

工具

  • 測試 JavaScript 架

  • Python 3.8

Code

此模式的源代碼和模板可以在 GitHub 上使用,位於AWS DevOps 端對端研討會儲存庫。請遵循史詩區段中,將儲存庫中的所有檔案下載到您的電腦。

請注意:所以此史詩一節提供此逐步解說的高階步驟,以提供程序的一般資訊。若要完成每個步驟,請參閱讀我檔案,取得詳細指示。

所以此AWS DevOps 端對端研討會儲存庫會延伸AWS 書店示範應用程式儲存庫,並使用修改版本的AWS Cloud9 引導安裝程式碼,建立 AWS Cloud9 IDE。

Epics

任務描述所需技能
為書店應用程式建立前端和 Lambda 函數。
  1. 登入CloudFormation 化主控台,然後部署DemoBookstoreMainTemplate.yml範本來建立堆疊。這會建立 Books 微服務外部的前端和 Lambda 函數。

  2. 在 中輸出] 索引標籤中,記下 [網路應用程式標籤。

開發人員
建立書籍微服務。

CloudFormation 化主控台,請部署DemoBookstoreBooksServiceTemplate.yml模板來創建一個服務包堆棧。

開發人員
測試應用程式。

使用書店堆疊中的網址來存取書店應用程式。

開發人員
任務描述所需技能
建立 AWS Cloud9 IDE。

CloudFormation 化主控台,請部署C9EnvironmentTemplate.yml範本來建立 AWS Cloud9 環境。

開發人員、開發人員主
建立程式 CodeCommit 可儲存庫。
  1. 登入AWS CodeCommit 主控台,並確認您擁有demobookstore-WebAssets存放庫,其中包含前端應用程式的程式碼。

  2. 為 Books 微服務建立一個名為demobookstore-BooksService

  3. 將 AWS Cloud9 中的兩個儲存庫 (demobookstore-WebAssetsdemobookstore-BooksService),藉由使用git clone命令。

開發人員
更改前端的代碼並檢查管道。
  1. 使用 AWS Cloud9,在網頁中進行一些程式碼變更。這將更新demobookstore-WebAssets儲存庫。

  2. AWS CodePipeline 主控台,請確認室內書店-資產-管道執行中。 

  3. 通過從瀏覽器刷新它來測試您的 Web 應用程序(在 Firefox 上按 Ctrl+F5)。

開發人員
任務描述所需技能
新增組建和服務更新 YAML 檔案。
  1. 在 AWS Cloud9 中,上傳buildspec.ymlDemoBookstoreBooksServiceUpdateTemplate.yml 檔案。

    • buildspec.yml具有構建說明,並且還包括自動化測試的測試說明。它們在這一點上被評論,並將在稍後使用。

    • DemoBookstoreBooksServiceUpdateTemplate.yml是更新版本的DemoBookstoreBooksServiceTemplate.yml,用於管道的部署階段。

  2. 確認並推送檔案。

開發人員
建立組建管道的 S3 儲存貯體。

若要建立 S3 儲存貯體,請遵循Amazon S3 文件

  • 儲存貯體名稱必須是全域唯一的;例如,demobookstore-books-service-pipeline-bucket-<YYYYMMDDHHMM>。 

  • 清除封鎖所有公有存取核取方塊,然後選取我承認...核取方塊。

開發人員
使用 IAM 為 CloudFormation 部署建立角色。

建立demobookstore-CloudFormation-role角色並附加AdministratorAccess政策。在下一個史詩中,您可以重新配置此角色以獲得最低權限。

開發人員
建立新的管線,以自動建置和部署 Books 微服務。

建立管道 (例如室內書店-預訂服務-管道)與認可,構建和部署階段,如讀我檔案

開發人員
在 AWS Cloud9 中測試您的微服務。

清單簿函數並查看管道工作。

開發人員
自動化列表簿 Lambda 函數的單元測試。

在 AWS Cloud9 IDE 中,啟用組建以執行單元測試,並檢查測試結果。如需說明,請參閱「」讀我檔案

開發人員
任務描述所需技能
確保您的解決方案安全。

設定demobookstore-CloudFormation-role具有最低權限,並檢查其他已使用的角色。

開發人員
消除 CloudFormation 模板中的依賴關係。

該方法之間交換信息DemoBookstoreMainTemplate.yml和範本DemoBookstoreBooksServiceTemplate.yml模板基於輸出和導入。這兩個模板之間傳遞值會增加依賴關係。要消除依賴關係,請考慮使用AWS Systems Manager 參數存放區

開發人員
建立購物車微服務。

使用 Books 微服務做為範例,將購物車相關功能從DemoBookstoreMainTemplate.yml模板並創建購物車微服務。

開發人員
任務描述所需技能
刪除 S3 儲存貯體。

Amazon S3 主控台,請刪除與示例 Web 應用程序關聯的桶:

  • 為 AWS 書店示範應用程式建立的兩個儲存貯體。儲存貯體名稱以您在建立前端時為 AWS CloudFormation 提供的堆疊名稱開頭;例如,桌上型書店堆疊

  • 建置管線的一個儲存貯體;例如,室內書店-書籍-服務-管道-桶-<YYYYMMDDHHMM>

開發人員
刪除堆疊

CloudFormation 化主控台,請刪除與範例 Web 應用程式相關聯的堆疊:

  • 桌上型電腦服務包

  • 桌上型書店堆疊

移除可能需要超過 90 分鐘。如果移除失敗,請再次刪除它們,並根據通知刪除任何手動資源 (例如 VPC 或網路介面)。

開發人員
刪除 IAM 角色。

IAM 主控台下,刪除下列角色:

  • demobookstore-Cloudformation-role

  • demobookstore-BooksService-BuildProject-service-role

如需逐步說明,請參閱IAM 文件。 

開發人員

其他資訊

如需詳細的逐步說明,請參閱讀我檔案中的AWS DevOps 端對端研討會GitHub 儲存庫。