本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 DevOps 實務和 AWS Cloud9 建立鬆散結合的架構與微型服務
創建者亞歷山大·納迪(AWS)
環境:PoC 或試點 | 技術: DevOps; 無服務器; Web 和移動應用程序; 數據庫 | AWS 服務:AWS Cloud9; AWS; AWS CloudFormation CodePipeline; Amazon DynamoDB; AWS CodeCommit |
Summary
此模式示範如何針對開始在 Amazon Web Services (AWS) 上測試 DevOps 實務的開發人員和開發主管,在無伺服器架構中開發典型 Web 應用程式。它構建了一個示例應用程序,該應用程序創建用於瀏覽和購買書籍的店面和後端,並提供可以獨立開發的微服務。該模式使用 AWS Cloud9 做為開發環境、Amazon DynamoDB 資料庫做為資料存放區,以及 AWS 等 AWS 服務來提 CodeBuild 供持續整合 CodePipeline 和持續部署 (CI/CD) 功能。
此模式會引導您完成下列開發活動:
建立標準 AWS Cloud9 開發環境
使用 AWS CloudFormation 範本建立書籍的 Web 應用程式和微服務
使用 AWS Cloud9 修改前端、提交變更和測試變更
建立並測試微服務的 CI/CD 管線
自動化單元測試
此模式的程式碼在 GitHub AWS DevOps 端對端研討
先決條件和限制
先決條件
有效的 AWS 帳戶
AWS DevOps 端對端研討
會的檔案下載到您的電腦
重要事項:在您的 AWS 帳戶中建立此示範應用程式會建立和消耗 AWS 資源。您必須負責建立和執行應用程式所使用的 AWS 服務和資源成本。完成工作後,請務必移除所有資源,以避免持續收費。如需清理指示,請參閱《史詩》一節。
限制
本逐步解說僅用於示範和開發目的。若要在生產環境中使用它,請參閱 AWS Identity and Access Management (IAM) 文件中的安全最佳實務,並對 IAM 角色、Amazon DynamoDB 和其他使用的服務進行必要的變更。Web 應用程式衍生自 AWS 書店示範應用程
架構
書店應用程式的架構會在 AWS 書店示範應用程
從部署的角度來看,書店演示應用程序使用單個 CloudFormation 模板將所有服務和對象部署在一個堆棧中。此模式會進行一些變更,以示範特定開發人員或團隊如何在特定產品 (Books) 中運作,並獨立於應用程式的其餘部分進行更新。因此,此模式的程式碼會將 Books 微服務的 AWS Lambda 函數和相關物件分隔為第二個 CloudFormation 範本,以建立 Books 堆疊。這使得可以通過使用 CI/CD 實踐來查看微服務正在更新。在下圖中,虛線邊框標識 Books 微服務。
![使 DevOps 用實踐的鬆散耦合架構中的書籍微服務。](images/pattern-img/487a5350-d544-44d4-8db9-0c0d6238030e/images/8f5d2c21-7ae7-4e60-9e62-660585b4a99c.png)
工具
工具
開玩笑框架進行測試 JavaScript
Python 3.9
Code
此模式的原始程式碼和範本可在 GitHub AWS DevOps 端對端研討
注意:「Epics」段落提供此逐步解說的高階步驟,以提供有關程序的一般資訊。若要完成每個步驟,請參閱 AWS DevOps 端對端研討會儲存庫中的 README 檔案
AWS DevOps 端對端研討
最佳實務
使用書店應用程序很簡單。以下是一些建議的最佳作法:
安裝應用程序時,您可以使用您選擇的項目名稱或使用默認名稱(
demobookstore
)以方便起見。應用程式啟動並執行之後,如果您想繼續測試一天,最好關閉 Amazon Neptune 資料庫,因為資料庫執行個體可能會產生額外費用。不過,請注意,資料庫會在七天後自動啟動。
如需程式碼詳細資訊,請參閱 AWS 書店示範應用程式
儲存庫的文件。它描述了每個微服務和表。 有關其他最佳實踐,請參閱如果您有時間的某些挑戰... AWS DevOps 端對端研討會儲存庫中的讀我檔案
區段。我們建議您檢閱這些資訊,深入了解安全性的其他功能,並練習解耦服務。
史诗
任務 | 描述 | 所需技能 |
---|---|---|
從下載源代碼 GitHub。 | 此模式的原始程式碼和範本可在 GitHub AWS DevOps 端對端研討 注意:「Epics」段落提供此逐步解說的高階步驟,以提供有關程序的一般資訊。若要完成每個步驟,請參閱 AWS DevOps 端對端研討會儲存庫中的 README 檔案 AWS DevOps 端對端研討 | 應用程式開發人員 |
任務 | 描述 | 所需技能 |
---|---|---|
建立書店應用程式的前端和 Lambda 函數。 |
| 開發人員 |
建立「書籍」微服務。 | 在主CloudFormation 控台 | 開發人員 |
測試您的應用程式。 | 使用 DemoBookStoreStack 堆疊中的網站 URL 來存取書店應用程式。 | 開發人員 |
任務 | 描述 | 所需技能 |
---|---|---|
建立一個 AWS Cloud9 IDE。 | 在主CloudFormation 控台 | 開發人員,開發人員 |
建立 CodeCommit 儲存庫。 |
| 開發人員 |
更改前端中的代碼並檢查管道。 |
| 開發人員 |
任務 | 描述 | 所需技能 |
---|---|---|
新增用於組建和服務更新的 YAML 檔案。 |
| 開發人員 |
為建置管道建立 S3 儲存貯體。 | 若要建立 S3 儲存貯體,請按照 Amazon S3 文件中的指示進行操作。
| 開發人員 |
使用 IAM 建立 CloudFormation 部署角色。 | 建立 | 開發人員 |
建立新管道以自動化 Books 微服務的建置和部署。 | 使用「提交」、「建置」和「部署」階段建立BooksService管道 (例如,demo書店-Pipeline),如讀我檔案 | 開發人員 |
在 AWS Cloud9 中測試您的微服務。 | 在ListBooks功能中進行更改並查看管道工作。 | 開發人員 |
自動執行 ListBooks Lambda 函數的單元測試。 | 在 AWS Cloud9 IDE 中,啟用組建以執行單元測試,並檢查測試結果。如需指示,請參閱讀我檔案 | 開發人員 |
任務 | 描述 | 所需技能 |
---|---|---|
確保您的解決方案安全。 | 配置 | 開發人員 |
消除 CloudFormation 模板中的依賴關係。 |
| 開發人員 |
建立購物車微服務。 | 使用 Books 微服務做為範例,將購物車相關功能從範 | 開發人員 |
任務 | 描述 | 所需技能 |
---|---|---|
刪除 S3 儲存貯體。 | 在 Amazon S3 主控台
| 開發人員 |
刪除堆疊。 | 在CloudFormation 主控台
移除作業可能需要超過 90 分鐘。如果移除失敗,請再次刪除它們,並根據通知刪除任何手動資源 (例如,VPC 或網路介面)。 | 開發人員 |
刪除 IAM 角色。 | 在 IAM 主控台
如需 step-by-step 指示,請參閱 IAM 文件。 | 開發人員 |
相關資源
在 AWS CloudFormation 主控台上建立堆疊 (AWS CloudFormation 文件)
建立儲存貯體 (Amazon S3 文件)
其他資訊
如需詳細的 step-by-step 指示,請參閱 AWS DevOps 端對端研討
關於 2023 年 5 月的更新:此模式已更新為使用較新版本的節點和 Python。我們更新了原始程式碼中的許多套件,並移除了 Glyphicon,因為它不再是免費的。我們也移除了 AWS 書店示範應用程式