

# OPS 5. 如何減少缺陷、幫助輕鬆修復，以及改善生產流程？
<a name="ops-05"></a>

 採用改善改變生產流程的方法，藉此推動重構、快速提供品質意見回饋及修復錯誤。這些方法會加快有助益的改變發揮作用的速度、限制部署問題，並快速識別和修復部署活動造成的問題。

**Topics**
+ [

# OPS05-BP01 使用版本控制
](ops_dev_integ_version_control.md)
+ [

# OPS05-BP02 測試並驗證變更
](ops_dev_integ_test_val_chg.md)
+ [

# OPS05-BP03 使用組態管理系統
](ops_dev_integ_conf_mgmt_sys.md)
+ [

# OPS05-BP04 使用建置和部署管理系統
](ops_dev_integ_build_mgmt_sys.md)
+ [

# OPS05-BP05 執行修補程式管理
](ops_dev_integ_patch_mgmt.md)
+ [

# OPS05-BP06 共用設計標準
](ops_dev_integ_share_design_stds.md)
+ [

# OPS05-BP07 實作用於提高程式碼品質的實務
](ops_dev_integ_code_quality.md)
+ [

# OPS05-BP08 使用多個環境
](ops_dev_integ_multi_env.md)
+ [

# OPS05-BP09 進行頻繁、小型、可逆的變更
](ops_dev_integ_freq_sm_rev_chg.md)
+ [

# OPS05-BP10 完全自動化整合和部署
](ops_dev_integ_auto_integ_deploy.md)

# OPS05-BP01 使用版本控制
<a name="ops_dev_integ_version_control"></a>

 使用版本控制來追蹤變更和發布。

 許多 AWS 服務都提供版本控制功能。使用修訂版或[原始程式碼控制](https://aws.amazon.com/devops/source-control/)系統 (例如 [Git](https://aws.amazon.com/devops/source-control/git/)) 來管理程式碼和其他成品，例如基礎結構的版本控制 [AWS CloudFormation](https://aws.amazon.com/cloudformation/) 範本。

 **期望的結果：**您的團隊在程式碼上進行協作。合併後，程式碼會是一致的，且變更不會遺失。透過正確的版本控制就能輕鬆復原錯誤。

 **常見的反模式：**
+  您已在工作站上開發和儲存程式碼。您的工作站發生無法復原的儲存錯誤，造成程式碼遺失。
+  變更覆寫現有的程式碼之後，您重新啟動應用程式卻無法運作。您無法還原變更。
+  您對其他人要編輯的報告檔案加上了寫入鎖定。他們會與您聯絡，要求您停止處理該檔案，以便完成任務。
+  您的研究團隊一直在進行詳細的分析，以規劃您未來的工作。某人意外地將自己的購物清單儲存在最終報告中。您無法還原變更，且必須重新建立報告。

 **建立此最佳實務的優勢：**透過使用版本控制功能，您可以輕鬆還原為已知的良好狀態和舊版本，並有效降低資產遺失的風險。

 **未建立此最佳實務時的曝險等級：**高 

## 實作指引
<a name="implementation-guidance"></a>

 在版本控制的儲存庫中維護資產。此舉可實現變更追蹤、新版本部署、對現有版本的變更偵測以及還原到先前的版本 (例如，在發生故障時復原到已知的良好狀態)。將組態管理系統的版本控制功能整合到您的程序中。

## 資源
<a name="resources"></a>

 **相關的最佳實務：**
+  [OPS05-BP04 使用建置和部署管理系統](ops_dev_integ_build_mgmt_sys.md) 

 **相關影片：**
+ [AWS re:Invent 2023 - Lockheed Martin 如何採用 DevSecOps 技術更快建置軟體](https://www.youtube.com/watch?v=Q1OSyxYkl5w)
+ [AWS re:Invent 2023 - GitHub 如何將 AI 營運化以應用到團隊協作和生產力](https://www.youtube.com/watch?v=cOVvGaiusOI)

# OPS05-BP02 測試並驗證變更
<a name="ops_dev_integ_test_val_chg"></a>

 所部署的每項變更都必須經過測試，以避免在生產環境中發生錯誤。此一最佳實務著重於各種變更 (從版本控制到成品組建) 的測試。除了應用程式碼變更之外，測試應包括基礎設施、組態、安全控制和操作程序。測試採取多種形式，從單元測試到軟體元件分析 (SCA) 都包括在內。將測試進一步納入軟體整合和交付程序中，可進一步確保成品的品質。

 您的組織必須針對所有軟體成品制定測試標準。自動化測試可減少辛勞並避免手動測試錯誤。在某些情況下可能需要手動測試。開發人員必須有權存取自動化測試結果，以建立可改善軟體品質的回饋迴圈。

 **預期成果：**您的軟體變更在交付前都經過測試。開發人員有權存取測試結果和驗證。您的組織具有適用於所有軟體變更的測試標準。

 **常見的反模式：**
+  您在部署新軟體變更時未進行任何測試。它無法在生產環境中執行，這會導致中斷。
+  新的安全群組透過 AWS CloudFormation 進行部署，而未在生產前環境中測試。安全群組會讓您的客戶無法存取您的應用程式。
+  方法被修改，但沒有單元測試。軟體部署至生產環境時失敗。

 **建立此最佳實務的優勢：**降低了軟體部署的變更失敗率。軟體品質獲得改善。開發人員更能感知其程式碼的可行性。可以安心推出安全政策，以支援組織的合規性。基礎設施變更 (例如自動化擴展政策更新) 會事先經過測試，以符合流量需求。

 **未建立此最佳實務時的曝險等級：**高 

## 實作指引
<a name="implementation-guidance"></a>

 作為持續整合實務的一部分，對從應用程式碼到基礎設施的所有變更進行測試。發布測試結果，以便開發人員快速獲得意見回饋。您的組織具有所有變更都必須通過的測試標準。

 透過 Amazon Q Developer，利用生成式 AI 的強大功能，提升開發人員生產力和程式碼品質。Amazon Q Developer 包括程式碼建議的產生 (以大型語言模型為基礎)、單元測試的生產 (包括邊界條件)，以及透過偵測和修復安全漏洞增強程式碼安全性。

 **客戶範例** 

 在其持續整合管道中，AnyCompany Retail 對所有軟體成品執行了數種類型的測試。他們實行測試驅動型開發，所以所有軟體都有單元測試。建置成品後，它們會執行端到端測試。在第一輪測試完成後，他們會執行靜態應用程式安全性掃描，以尋找已知的漏洞。通過每個測試門時，開發人員會收到訊息。所有測試都完成後，軟體成品即儲存在成品儲存庫中。

### 實作步驟
<a name="implementation-steps"></a>

1.  與組織中的利益相關者合作制定軟體成品的測試標準。所有成品都應該通過哪些標準測試？ 測試涵蓋範圍中是否必須包含合規性或管控要求？ 您是否需要進行程式碼品質測試？ 測試完成時，誰需要得知？ 

   1.  [AWS 部署管道參考架構](https://pipelines.devops.aws.dev/)包含可在整合管道中對軟體成品執行之測試類型的授權清單。

1.  根據您的軟體測試標準，以必要的測試檢測您的應用程式。每組測試應在十分鐘內完成。測試應執行為整合管道的一部分。

   1.  使用 [Amazon Q Developer](https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/what-is.html)，這是一種生成式 AI 工具，可協助建立單元測試案例 (包括邊界條件)、使用程式碼和註解產生函數，以及實作眾所周知的演算法。

   1.  使用 [Amazon CodeGuru Reviewer](https://docs.aws.amazon.com/codeguru/latest/reviewer-ug/welcome.html) 來測試您的應用程式碼是否存在故障。

   1.  可使用 [AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html) 對軟體成品執行測試。

   1.  [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html) 可將您的軟體測試安排到管道中。

## 資源
<a name="resources"></a>

 **相關的最佳實務：**
+  [OPS05-BP01 使用版本控制](https://docs.aws.amazon.com/wellarchitected/latest/operational-excellence-pillar/ops_dev_integ_version_control.html) 
+  [OPS05-BP06 共用設計標準](https://docs.aws.amazon.com/wellarchitected/latest/operational-excellence-pillar/ops_dev_integ_share_design_stds.html) 
+  [OPS05-BP07 實作用於提高程式碼品質的實務](https://docs.aws.amazon.com/wellarchitected/latest/operational-excellence-pillar/ops_dev_integ_code_quality.html) 
+  [OPS05-BP10 完全自動化整合和部署](https://docs.aws.amazon.com/wellarchitected/latest/operational-excellence-pillar/ops_dev_integ_auto_integ_deploy.html) 

 **相關文件：**
+  [採用測試驅動的開發方法](https://docs.aws.amazon.com/prescriptive-guidance/latest/best-practices-cdk-typescript-iac/development-best-practices.html) 
+  [使用 Amazon Q 加速您的軟體開發生命週期](https://aws.amazon.com/blogs/devops/accelerate-your-software-development-lifecycle-with-amazon-q/) 
+  [Amazon Q Developer 現已正式推出，包含可重新構想開發人員體驗的新功能預覽](https://aws.amazon.com/blogs/aws/amazon-q-developer-now-generally-available-includes-new-capabilities-to-reimagine-developer-experience/) 
+  [在 IDE 中使用 Amazon Q Developer 的終極速查表](https://community.aws/content/2eYoqeFRqaVnk900emsknDfzhfW/the-ultimate-cheat-sheet-for-using-amazon-q-developer-in-your-ide) 
+  [左移工作負載，利用 AI 建立測試](https://community.aws/content/2gBZtC94gPzaCQRnt4P0rIYWuBx/shift-left-workload-leveraging-ai-for-test-creation) 
+  [Amazon Q 開發人員中心](https://aws.amazon.com/developer/generative-ai/amazon-q/) 
+  [使用 Amazon CodeWhisperer 快速建置應用程式的 10 種方式](https://aws.amazon.com/blogs/devops/10-ways-to-build-applications-faster-with-amazon-codewhisperer/) 
+  [使用 Amazon CodeWhisperer 超越程式碼覆蓋範圍](https://aws.amazon.com/blogs/devops/looking-beyond-code-coverage-with-amazon-codewhisperer/) 
+  [使用 Amazon CodeWhisperer 進行提示詞工程的最佳實務](https://aws.amazon.com/blogs/devops/best-practices-for-prompt-engineering-with-amazon-codewhisperer/) 
+  [使用 TaskCat 和 CodePipeline 的自動化 AWS CloudFormation 測試管道](https://aws.amazon.com/blogs/devops/automated-cloudformation-testing-pipeline-with-taskcat-and-codepipeline/) 
+  [使用開放原始碼 SCA、SAST 和 DAST 工具建置端對端 AWS DevSecOps CI/CD 管道](https://aws.amazon.com/blogs/devops/building-end-to-end-aws-devsecops-ci-cd-pipeline-with-open-source-sca-sast-and-dast-tools/) 
+  [開始測試無伺服器應用程式](https://aws.amazon.com/blogs/compute/getting-started-with-testing-serverless-applications/) 
+  [CI/CD 管道是我的發行主管](https://aws.amazon.com/builders-library/cicd-pipeline/) 
+  [《在 AWS 上實行持續整合和持續交付》白皮書](https://docs.aws.amazon.com/whitepapers/latest/practicing-continuous-integration-continuous-delivery/welcome.html) 

 **相關影片：**
+  [使用適用於軟體開發的 Amazon Q Developer 代理程式來實作 API](https://www.youtube.com/watch?v=U4XEvJUvff4) 
+  [使用 JetBrains IDE 安裝、設定和使用 Amazon Q Developer (操作說明)](https://www.youtube.com/watch?v=-iQfIhTA4J0) 
+  [掌握 Amazon CodeWhisperer 的藝術 - YouTube 播放清單](https://www.youtube.com/playlist?list=PLDqi6CuDzubxzL-yIqgQb9UbbceYdKhpK) 
+  [AWS re:Invent 2020：可測試的基礎設施：在 AWS 上進行整合測試](https://www.youtube.com/watch?v=KJC380Juo2w) 
+  [AWS Summit ANZ 2021 - 透過 CDK 和測試驅動的開發施行測試優先策略](https://www.youtube.com/watch?v=1R7G_wcyd3s) 
+  [使用 AWS CDK 測試基礎設施即程式碼](https://www.youtube.com/watch?v=fWtuwGSoSOU) 

 **相關資源：**
+  [AWS 部署管道參考架構 - 應用程式](https://pipelines.devops.aws.dev/application-pipeline/index.html) 
+  [AWS Kubernetes DevSecOps 管道](https://github.com/aws-samples/devsecops-cicd-containers) 
+  [使用 AWS CodeBuild 為 GitHub 中的 Node.js 應用程式執行單元測試](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/run-unit-tests-for-a-node-js-application-from-github-by-using-aws-codebuild.html) 
+  [使用 Serverspec 進行基礎設施程式碼的測試驅動開發](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/use-serverspec-for-test-driven-development-of-infrastructure-code.html) 

 **相關服務：**
+  [Amazon Q Developer](https://aws.amazon.com/q/developer/) 
+  [Amazon CodeGuru Reviewer](https://docs.aws.amazon.com/codeguru/latest/reviewer-ug/welcome.html) 
+  [AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html) 
+  [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html) 

# OPS05-BP03 使用組態管理系統
<a name="ops_dev_integ_conf_mgmt_sys"></a>

 使用組態管理系統進行和追蹤組態變更。這些系統可減少由手動程序引起的錯誤，並減少部署變更的工作量。

靜態組態管理會在初始化資源時設定值，這些值預期會在資源的整個生命週期內保持一致。動態組態管理會在初始化時設定值，這些值可能或是預期會在資源的整個生命週期內保持一致。例如，您可以設定功能切換，透過組態變更啟動程式碼中的功能，或在事件期間變更日誌詳細資訊等級。

組態應以已知且一致的狀態部署。應該使用自動化檢測來持續監控跨環境和區域的資源組態。這些控制項應定義為已自動化的程式碼和管理，以確保規則在各個環境中一致套用。組態變更應透過商定的變更控制程序進行更新，並一致地套用，以遵守版本控制。應用程式組態的管理應該獨立於應用程式和基礎設施程式碼。這允許在多個環境中進行一致的部署。組態變更不會導致重建或重新部署應用程式。

 **預期成果：**您會在持續整合、持續交付 (CI/CD) 管道中進行設定、驗證和部署。您會進行監控，以確認組態正確無誤。這會將終端使用者和客戶受到的任何負面影響降到最低。

 **常見的反模式：**
+  您手動更新整個機群的 Web 伺服器組態，但由於更新錯誤，導致多部伺服器無法回應。
+  您在數小時內手動更新應用程式伺服器機群。變更期間的組態不一致會導致未預期的行為。
+  某人已更新您的安全群組，無法再存取您的 Web 伺服器。若不知道進行了哪些變更，您就需要花大量時間來調查問題，復原時間也會跟著拉長。
+  您可以透過 CI/CD 將生產前組態推送到生產環境中，而不需進行驗證。您讓使用者和客戶面臨使用不正確的資料和服務。

 **建立此最佳實務的優勢：**採用組態管理系統可減少進行和追蹤變更的工作量，以及手動程序造成的錯誤頻率。組態管理系統提供了管控、合規和法規需求方面的保證。

 **未建立此最佳實務時的曝險等級：**中 

## 實作指引
<a name="implementation-guidance"></a>

 組態管理系統可用來追蹤和實作應用程式與環境組態的變更。組態管理系統也可用來減少手動程序所造成的錯誤、讓組態變更可重複且可稽核，以及減少工作量。

 在 AWS 上，可以使用 [AWS Config](https://docs.aws.amazon.com/config/latest/developerguide/WhatIsConfig.html) 持續監控[跨帳號和區域](https://docs.aws.amazon.com/config/latest/developerguide/aggregate-data.html)的 AWS 資源組態。它可協助您追蹤其組態歷史記錄、了解組態變更如何影響其他資源、以及針對預期或所需的組態進行稽核，方法是使用 [AWS Config 規則](https://docs.aws.amazon.com/config/latest/developerguide/evaluate-config.html) 和 [AWS Config Conformance Packs](https://docs.aws.amazon.com/config/latest/developerguide/conformance-packs.html)。

 對於在 Amazon EC2 執行個體、AWS Lambda、容器、行動應用程式或 IoT 裝置上執行的應用程式中的動態組態，可以使用 [AWS AppConfig](https://docs.aws.amazon.com/appconfig/latest/userguide/what-is-appconfig.html) 在整個環境中進行設定、驗證、部署和監控。

### 實作步驟
<a name="implementation-steps"></a>

1.  確定組態擁有者。

   1.  讓組態擁有者得知任何合規、管控或法規需求。

1.  確定組態項目與交付成果。

   1.  組態項目是指受到 CI/CD 管線內部署影響的所有應用程式和環境組態。

   1.  交付成果包括成功條件、驗證及監控對象。

1.  請根據您的業務需求和交付管道選取工具來進行組態管理。

1.  請考慮針對重大組態變更進行加權部署 (例如 Canary 部署)，以盡量減少錯誤組態造成的影響。

1.  將組態管理整合到 CI/CD 管道中。

1.  驗證所有推送的變更。

## 資源
<a name="resources"></a>

 **相關的最佳實務：**
+  [OPS06-BP01 計畫變更失敗](ops_mit_deploy_risks_plan_for_unsucessful_changes.md) 
+  [OPS06-BP02 測試部署](ops_mit_deploy_risks_test_val_chg.md) 
+  [OPS06-BP03 採用安全的部署策略](ops_mit_deploy_risks_deploy_mgmt_sys.md) 
+  [OPS06-BP04 自動化測試和復原](ops_mit_deploy_risks_auto_testing_and_rollback.md) 

 **相關文件：**
+ [AWS Control Tower](https://docs.aws.amazon.com/controltower/latest/userguide/what-is-control-tower.html)
+ [AWS 登陸區域加速器](https://aws.amazon.com/solutions/implementations/landing-zone-accelerator-on-aws/)
+ [AWS Config](https://aws.amazon.com/config/)
+ [ 什麼是 AWS Config？](https://docs.aws.amazon.com/config/latest/developerguide/WhatIsConfig.html)
+  [AWS AppConfig](https://docs.aws.amazon.com/appconfig/latest/userguide/what-is-appconfig.html) 
+ [ 什麼是 AWS CloudFormation？](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)
+  [AWS 開發人員工具](https://aws.amazon.com/products/developer-tools/) 
+ [AWS CodeBuild](https://aws.amazon.com/codebuild/)
+ [AWS CodePipeline](https://aws.amazon.com/codepipeline/)
+ [AWS CodeDeploy](https://aws.amazon.com/codedeploy/)

 **相關影片：**
+ [AWS re:Invent 2022 - AWS 工作負載的主動管控與合規](https://youtu.be/PpUnH9Y52X0?si=82wff87KHXcc6nbT)
+ [AWS re:Invent 2020：使用 AWS Config 實現合規即程式碼](https://youtu.be/m8vTwvbzOfw?si=my4DP0FLq1zwKjho)
+ [使用 AWS AppConfig 管理和部署應用程式組態](https://youtu.be/ztIxMY3IIu0?si=ovYGsxWOBysyQrg0)

# OPS05-BP04 使用建置和部署管理系統
<a name="ops_dev_integ_build_mgmt_sys"></a>

 使用建置和部署管理系統。這些系統可減少由手動程序引起的錯誤，並減少部署變更的工作量。

 在 AWS 中，可以使用 [AWS 開發人員工具](https://aws.amazon.com/products/developer-tools/) (例如 [AWS CodeBuild](https://aws.amazon.com/codebuild/)、[AWS CodePipeline](https://aws.amazon.com/codepipeline/) 和 [AWS CodeDeploy](https://aws.amazon.com/codedeploy/)) 等服務來建置持續整合/持續部署 (CI/CD) 管道。

 **預期成果：**您的建置和部署管理系統可支援組織的持續整合持續交付 (CI/CD) 系統，提供了使用正確組態自動化安全推展的功能。

 **常見的反模式：**
+  在開發系統中編譯程式碼之後，您將可執行檔複製到生產系統中，卻無法啟動。本機日誌檔案指出其因缺少相依性而失敗。
+  您在開發環境中使用新功能成功建置應用程式，並提供程式碼以進行品質保證 (QA)。它未通過 QA，因為缺少靜態資產。
+  週五，在經過一番努力之後，您成功在開發環境中手動建置應用程式，包括新編碼的功能。到了週一，您卻無法重複成功建置應用程式的步驟。
+  您執行為新版本建立的測試。然後，您會在下週設定測試環境，並執行所有現有的整合測試，接著執行效能測試。新的程式碼具有無法接受的效能影響，必須重新開發及測試。

 **建立此最佳實務的優勢：**透過提供用於管理建置和部署活動的機制，您可以減少執行重複性任務的工作量，讓團隊成員專注於高價值的創意任務，並減少手動程序導致的錯誤。

 **未建立此最佳實務時的曝險等級：**中 

## 實作指引
<a name="implementation-guidance"></a>

 建置和部署管理系統可用來追蹤和實作變更、減少手動程序導致的錯誤，以及減少安全部署所需的工作量。從程式碼簽入到建置、測試、部署和驗證，完全自動化整合和部署管道。此舉可縮短前置時間、降低成本、促進增加變更頻率、減少工作量，並且增進協作。

### 實作步驟
<a name="implementation-steps"></a>

![\[圖中顯示使用 AWS CodePipeline 和相關服務的 CI/CD 管道\]](http://docs.aws.amazon.com/zh_tw/wellarchitected/latest/framework/images/deployment-pipeline-tooling.png)


 

1.  使用版本控制系統來儲存和管理資產 (例如文件、原始程式碼和二進位檔案)。

1.  使用 CodeBuild 可編譯原始碼、執行單元測試，並產生可立即部署的成品。

1.  將 CodeDeploy 用作一項部署服務，可自動將應用程式部署至 [Amazon EC2](https://aws.amazon.com/ec2/) 執行個體、內部部署執行個體、[無伺服器 AWS Lambda 函數](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html)或 [Amazon ECS](https://aws.amazon.com/ecs/)。

1.  監控您的部署。

## 資源
<a name="resources"></a>

 **相關的最佳實務：**
+  [OPS06-BP04 自動化測試和復原](ops_mit_deploy_risks_auto_testing_and_rollback.md) 

 **相關文件：**
+  [AWS 開發人員工具](https://aws.amazon.com/products/developer-tools/) 
+  [什麼是 AWS CodeBuild？](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html) 
+ [AWS CodeBuild](https://aws.amazon.com/codebuild/)
+  [什麼是 AWS CodeDeploy？](https://docs.aws.amazon.com/codedeploy/latest/userguide/welcome.html) 

 **相關影片：**
+ [AWS re:Invent 2022 - 適用於 DevOps on AWS 的 AWS Well-Architected 最佳實務](https://youtu.be/hfXokRAyorA)

# OPS05-BP05 執行修補程式管理
<a name="ops_dev_integ_patch_mgmt"></a>

 執行修補程式管理以取得功能、解決問題並保持遵循管控。自動化修補程式管理，以減少由手動程序引起的錯誤、進行擴展，並減少修補工作量。

 修補程式和漏洞管理屬於您利益和風險管理活動的一部分。最好擁有不可變的基礎設施，並在已驗證的已知良好狀態下部署工作負載。如果這種方法不可行，剩下的方法就是進行修補。

 [AWS Health](https://aws.amazon.com/premiumsupport/technology/aws-health/) 是有關規劃的生命週期事件，以及其他影響 AWS 雲端 資源運作狀態且須採取行動的事件的權威資訊來源。您應得知即將進行的變更和更新。主要的規劃生命週期事件至少會提前六個月傳送。

 [Amazon EC2 Image Builder](https://aws.amazon.com/image-builder/) 提供管道來更新機器映像。作為修補程式管理的一部分，請考慮使用 [AMI 映像管道](https://docs.aws.amazon.com/imagebuilder/latest/userguide/start-build-image-pipeline.html)的 [Amazon Machine Images](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AMIs.html       ) (AMI) 或具有 [Docker 映像管道](https://docs.aws.amazon.com/imagebuilder/latest/userguide/start-build-container-pipeline.html)的容器映像，同時 AWS Lambda 會為[自訂執行時期和其他程式庫](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-custom.html)提供模式以移除漏洞。

 應使用 [Amazon EC2 Image Builder](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AMIs.html) 管理適用於 Linux 或 Windows Server 映像的 [Amazon Machine Images](https://aws.amazon.com/image-builder/) 的更新。可以使用 [Amazon Elastic Container Registry (Amazon ECR)](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html) 搭配現有管道來管理 Amazon ECS 映像並管理 Amazon EKS 映像。Lambda 包含[版本管理功能](https://docs.aws.amazon.com/lambda/latest/dg/configuration-versions.html)。

 若未先在安全環境中進行測試，就不應在生產系統上執行修補程式。只有在修補程式能夠支援營運或業務成果時，才應套用修補程式。在開啟 AWS 時，可以使用 [AWS Systems Manager Patch Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-patch.html) 來自動化修補受管系統的流程，並使用 [Systems Manager 維護時段](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-maintenance.html)來排程活動。

 **預期成果：**您的 AMI 和容器映像已完成修補、處於最新狀態，並準備好啟動。您可以追蹤所有已部署映像的狀態，並了解修補程式的合規狀況。您可以通報目前狀態，並設立程序來滿足合規需求。

 **常見的反模式：**
+  您必須在兩小時內套用所有新的安全修補程式，結果導致應用程式與修補程式不相容而發生多次停機。
+  未修補的程式庫導致意外後果發生，因為有不明對象利用其中的漏洞來存取您的工作負載。
+  您自動修補開發人員環境，而未通知開發人員。您收到來自開發人員的多次投訴，表示其環境如預期停止運作。
+  您尚未在持續執行的執行個體上修補商用現成軟體。當軟體發生問題而您聯絡廠商時，他們會通知您不支援該版本，您必須修補至特定程度才能獲得協助。
+  您使用的加密軟體近期發佈了修補程式，使效能獲得大幅改善。未修補的系統因未修補仍存在效能問題。
+  收到發生零時差漏洞的通知時，需緊急修正並手動修補所有環境。
+  您不知道維護資源所需的重大行動，例如強制性版本更新，因為您未檢閱即將進行的規劃生命週期事件和其他資訊。您錯失規劃和執行的關鍵時間，導致團隊須緊急變更，且可能造成影響或非預期的停機時間。

 **建立此最佳實務的優勢：**透過建立修補程式管理程序 (包括修補準則和在各環境中散佈的方法)，您就能擴展和報告修補程度。這樣可保證修補過程安全無虞，並確保能清楚看見已知修正的狀態。如此可促進採用所需的功能、迅速消除問題，並持續遵循管控要求。實作修補程式管理系統和自動化，以減少部署修補程式的工作量，並限制手動程序引起的錯誤。

 **未建立此最佳實務時的曝險等級：**中 

## 實作指引
<a name="implementation-guidance"></a>

 修補系統以補救問題，獲得所需的功能，並保持符合管控政策和廠商支援需求。在不可變系統中，部署適當的修補程式集以實現所需的結果。自動化修補程式管理機制，以縮短修補時間、避免手動程序引起的錯誤，並減少修補工作量。

### 實作步驟
<a name="implementation-steps"></a>

 對於 Amazon EC2 Image Builder：

1.  使用 Amazon EC2 Image Builder 指定管道詳細資訊：

   1.  建立映像管道並命名 

   1.  定義管道排程和時區 

   1.  設定任何相依性 

1.  選擇配方：

   1.  選取現有配方或建立新配方 

   1.  選取映像類型 

   1.  提供配方的名稱和版本 

   1.  選取基礎映像 

   1.  新增組建元件並新增至目標登錄檔 

1.  選用 - 定義您的基礎設施組態。

1.  選用 - 定義組態設定。

1.  審核設定。

1.  定期維護配方乾淨度。

 對於 Systems Manager Patch Manager：

1.  建立修補基準。

1.  選取修補操作方法。

1.  啟用合規報告和掃描。

## 資源
<a name="resources"></a>

 **相關的最佳實務：**
+  [OPS06-BP04 自動化測試和復原](ops_mit_deploy_risks_auto_testing_and_rollback.md) 

 **相關文件：**
+ [什麼是 Amazon EC2 Image Builder](https://docs.aws.amazon.com/imagebuilder/latest/userguide/what-is-image-builder.html)
+ [使用 Amazon EC2 Image Builder 建立映像管道](https://docs.aws.amazon.com/imagebuilder/latest/userguide/start-build-image-pipeline.html)
+ [建立容器映像管道](https://docs.aws.amazon.com/imagebuilder/latest/userguide/start-build-container-pipeline.html)
+  [AWS Systems Manager Patch Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-patch.html) 
+ [使用 Patch Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/patch-manager-console.html)
+ [使用修補程式合規報告](https://docs.aws.amazon.com/systems-manager/latest/userguide/patch-manager-compliance-reports.html)
+ [AWS 開發人員工具](https://aws.amazon.com/products/developer-tools)

 **相關影片：**
+  [AWS 上適用於無伺服器應用程式的 CI/CD](https://www.youtube.com/watch?v=tEpx5VaW4WE) 
+  [設計時考量 Ops](https://youtu.be/uh19jfW7hw4) 

   **相關範例：**
+ [AWS Systems Manager Patch Manager 教學課程](https://docs.aws.amazon.com/systems-manager/latest/userguide/patch-manager-tutorials.html)

# OPS05-BP06 共用設計標準
<a name="ops_dev_integ_share_design_stds"></a>

 在團隊之間共用最佳實務，以提高認識並最大化開發工作的效益。記載它們並且隨著您的架構演進讓它們保持在最新狀態。如果您的組織中強制執行共用標準，則必須存在用於請求標準新增、變更及例外狀況的機制。如果沒有此選項，標準就會限制創新。

 **預期成果：**設計標準在貴組織的團隊之間共用。它們會隨著最佳實務的演變進行記錄和保存 up-to-date。

 **常見的反模式：**
+ 兩個開發團隊各自建立了使用者身分驗證服務。您的使用者必須針對要存取的系統的每一部分，維護一組單獨的憑證。
+ 每個團隊管理他們自己的基礎設施。新的合規要求會強制變更您的基礎設施，每個團隊會以不同的方式實作。

 **建立此最佳實務的優勢：**以共用的標準支援來實踐最佳實務，讓開發工作量發揮最大效益。記錄和更新設計標準可讓組織 up-to-date符合最佳實務、安全和合規要求。

 **未建立此最佳實務時的曝險等級：**中 

## 實作指引
<a name="implementation-guidance"></a>

 在團隊之間共用現有的最佳實務、設計標準、檢查清單、操作程序以及指引和管控要求。對於請求對設計標準進行變更、新增和例外設立程序，以支援改進和創新。讓團隊得知發布的內容。擁有機制，以在新最佳實務出現時保持設計標準 up-to-date。

 **客戶範例** 

 AnyCompany Retail 有一個跨職能架構團隊，可建立軟體架構模式。這個團隊會建置具有內建合規和管控的架構。採用這些共用標準的團隊會獲得具有內建合規和管控的優點。他們可以快速地在設計標準的基礎上建置。架構團隊每季開會一次，評估架構模式並且視需要更新。

### 實作步驟
<a name="implementation-steps"></a>

1.  識別擁有開發和更新設計標準的跨部門團隊。這個團隊應與整個組織的利益相關者合作，共同開發設計標準、操作程序、檢查清單、指引和管控需求。記錄設計標準並且在組織內共用。

   1.  [AWS Service Catalog](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/introduction.html) 可以用來建立套裝服務，代表使用基礎設施即程式碼的設計標準。您可以與所有帳戶共用套裝服務。

1.  在識別新的最佳實務時，有適當的機制來保持設計標準 up-to-date。

1.  如果設計標準是集中強制執行，設立程序來請求變更、更新和豁免。

 **實作計劃的工作量：**中。開發程序來建立和共用設計標準，即可與整個組織的利益相關者協調和合作。

## 資源
<a name="resources"></a>

 **相關的最佳實務：**
+  [OPS01-BP03 評估治理要求](ops_priorities_governance_reqs.md) - 管控需求會影響設計標準。
+  [OPS01-BP04 評估合規要求](ops_priorities_compliance_reqs.md) - 合規是建立設計標準中的重要輸入。
+  [OPS07-BP02 確保對營運準備度進行一致的審查](ops_ready_to_support_const_orr.md) - 營運準備度檢查清單是在設計您的工作負載時實作設計標準的機制。
+  [OPS11-BP01 建立持續改進程序](ops_evolve_ops_process_cont_imp.md) - 更新設計標準是持續改善的一部分。
+  [OPS11-BP04 執行知識管理](ops_evolve_ops_knowledge_management.md) - 在您的知識管理實務中，記錄和共用設計標準。

 **相關文件：**
+ [AWS Backup使用 自動化 AWS Service Catalog](https://aws.amazon.com/blogs/mt/automate-aws-backups-with-aws-service-catalog/)
+ [AWS Service Catalog 帳戶工廠增強型 ](https://aws.amazon.com/blogs/mt/aws-service-catalog-account-factory-enhanced/)
+ [ Expedia Group 如何使用 建置資料庫即服務 （DBaaS） 方案 AWS Service Catalog](https://aws.amazon.com/blogs/mt/how-expedia-group-built-database-as-a-service-dbaas-offering-using-aws-service-catalog/)
+ [維護使用雲端架構模式的可見性](https://aws.amazon.com/blogs/architecture/maintain-visibility-over-the-use-of-cloud-architecture-patterns/)
+ [ 簡化在 AWS Organizations 設定中共用 AWS Service Catalog 產品組合 ](https://aws.amazon.com/blogs/mt/simplify-sharing-your-aws-service-catalog-portfolios-in-an-aws-organizations-setup/)

 **相關影片：**
+ [AWS Service Catalog – 入門 ](https://www.youtube.com/watch?v=A9kKy6WhqVA)
+ [AWS re：Invent 2020：像專家一樣管理您的 AWS Service Catalog 產品組合 ](https://www.youtube.com/watch?v=lVfXkWHAtR8)

 **相關範例：**
+ [AWS Service Catalog 參考架構 ](https://github.com/aws-samples/aws-service-catalog-reference-architectures)
+ [AWS Service Catalog 研討會 ](https://catalog.us-east-1.prod.workshops.aws/workshops/d40750d7-a330-49be-9945-cde864610de9/en-US)

 **相關服務：**
+  [AWS Service Catalog](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/introduction.html) 

# OPS05-BP07 實作用於提高程式碼品質的實務
<a name="ops_dev_integ_code_quality"></a>

 實作相關實務以提高程式碼品質，並盡可能減少缺陷。部分範例包括測試驅動的開發、程式碼審查、標準採用和配對程式設計。將這些實務併入您的持續整合和交付程序。

 **預期成果：**貴組織使用例如程式碼審核或配對程式設計的最佳實務來改善程式碼品質。開發人員和操作人員在軟體開發生命週期過程中採用程式碼品質最佳實務。

 **常見的反模式：**
+  您將程式碼遞交至應用程式的主要分支，而未進行程式碼審核。變更會自動部署至生產環境，並導致中斷。
+  會開發一個新的應用程式，沒有進行任何單元、端到端或整合測試。無法在部署之前測試應用程式。
+  您的團隊在生產中進行手動變更，以解決問題。變更不會經過測試或程式碼審核，而且不會在持續整合或交付程序中擷取或記錄。

 **建立此最佳實務的優勢：**透過採用實務來提高程式碼品質，就能協助盡量減少生產環境中引發的問題。程式碼品質最佳實務包括配對程式設計、程式碼審核以及 AI 生產力工具的實作。

 **未建立此最佳實務時的曝險等級：**中 

## 實作指引
<a name="implementation-guidance"></a>

 實作實務以提高程式碼品質，在部署之前將故障降至最低。使用像是測試驅動的開發、程式碼審核和配對程式設計等實務來提高開發的品質。

 透過 Amazon Q Developer，利用生成式 AI 的強大功能，提升開發人員生產力和程式碼品質。Amazon Q Developer 包括程式碼建議的產生 (以大型語言模型為基礎)、單元測試的生產 (包括邊界條件)，以及透過偵測和修復安全漏洞增強程式碼安全性。

 **客戶範例** 

 AnyCompany Retail 採用數個實務來改善程式碼品質。它們採用了測試驅動的開發做為撰寫應用程式的標準。對於某些新功能，它們會讓開發人員在衝刺期間一起進行配對程式設計。每個提取請求都會先經過資深開發人員的程式碼審核，然後再整合和部署。

### 實作步驟
<a name="implementation-steps"></a>

1.  在您的持續整合和交付程序中，採用像是測試驅動開發、程式碼審核和配對程式設計的程式碼品質實務。使用這些技術來改善軟體品質。

   1.  使用 [Amazon Q Developer](https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/what-is.html)，這是一種生成式 AI 工具，可協助建立單元測試案例 (包括邊界條件)、使用程式碼和註解產生函數、實作眾所周知的演算法、偵測程式碼中的安全政策違規和漏洞、偵測機密、掃描基礎設施即程式碼 (IaC)、記錄程式碼以及更快速地學習第三方程式碼程式庫。

   1.  [Amazon CodeGuru Reviewer](https://docs.aws.amazon.com/codeguru/latest/reviewer-ug/welcome.html) 可以使用機器學習針對 Java 和 Python 程式碼提供程式設計建議。

 **實作計劃的工作量：**中。有許多方式可以實作此最佳實務，但是要讓整個組織採用可能會是一項挑戰。

## 資源
<a name="resources"></a>

 **相關的最佳實務：**
+  [OPS05-BP02 測試並驗證變更](https://docs.aws.amazon.com/wellarchitected/latest/operational-excellence-pillar/ops_dev_integ_test_val_chg.html) 
+  [OPS05-BP06 共用設計標準](https://docs.aws.amazon.com/wellarchitected/latest/operational-excellence-pillar/ops_dev_integ_share_design_stds.html) 

 **相關文件：**
+  [採用測試驅動的開發方法](https://docs.aws.amazon.com/prescriptive-guidance/latest/best-practices-cdk-typescript-iac/development-best-practices.html) 
+  [使用 Amazon Q 加速您的軟體開發生命週期](https://aws.amazon.com/blogs/devops/accelerate-your-software-development-lifecycle-with-amazon-q/) 
+  [Amazon Q Developer 現已正式推出，包含可重新構想開發人員體驗的新功能預覽](https://aws.amazon.com/blogs/aws/amazon-q-developer-now-generally-available-includes-new-capabilities-to-reimagine-developer-experience/) 
+  [在 IDE 中使用 Amazon Q Developer 的終極速查表](https://community.aws/content/2eYoqeFRqaVnk900emsknDfzhfW/the-ultimate-cheat-sheet-for-using-amazon-q-developer-in-your-ide) 
+  [左移工作負載，利用 AI 建立測試](https://community.aws/content/2gBZtC94gPzaCQRnt4P0rIYWuBx/shift-left-workload-leveraging-ai-for-test-creation) 
+  [Amazon Q 開發人員中心](https://aws.amazon.com/developer/generative-ai/amazon-q/) 
+  [使用 Amazon CodeWhisperer 快速建置應用程式的 10 種方式](https://aws.amazon.com/blogs/devops/10-ways-to-build-applications-faster-with-amazon-codewhisperer/) 
+  [使用 Amazon CodeWhisperer 超越程式碼覆蓋範圍](https://aws.amazon.com/blogs/devops/looking-beyond-code-coverage-with-amazon-codewhisperer/) 
+  [使用 Amazon CodeWhisperer 進行提示詞工程的最佳實務](https://aws.amazon.com/blogs/devops/best-practices-for-prompt-engineering-with-amazon-codewhisperer/) 
+  [敏捷式軟體指南](https://martinfowler.com/agile.html) 
+  [CI/CD 管道是我的發行主管](https://aws.amazon.com/builders-library/cicd-pipeline/) 
+  [使用 Amazon CodeGuru Reviewer 自動進行程式碼審核](https://aws.amazon.com/blogs/devops/automate-code-reviews-with-amazon-codeguru-reviewer/) 
+  [採用測試驅動的開發方法](https://docs.aws.amazon.com/prescriptive-guidance/latest/best-practices-cdk-typescript-iac/development-best-practices.html) 
+  [DevFactory 如何使用 Amazon CodeGuru 建置更佳的應用程式](https://aws.amazon.com/blogs/machine-learning/how-devfactory-builds-better-applications-with-amazon-codeguru/) 
+  [關於配對程式設計](https://martinfowler.com/articles/on-pair-programming.html) 
+  [RENGA Inc. 使用 Amazon CodeGuru 自動進行程式碼審核](https://aws.amazon.com/blogs/machine-learning/renga-inc-automates-code-reviews-with-amazon-codeguru/) 
+  [敏捷開發的藝術：測試驅動的開發](http://www.jamesshore.com/v2/books/aoad1/test_driven_development) 
+  [程式碼審核為何重要 (而且確實可節省時間！)](https://www.atlassian.com/agile/software-development/code-reviews) 

 **相關影片：**
+  [使用適用於軟體開發的 Amazon Q Developer 代理程式來實作 API](https://www.youtube.com/watch?v=U4XEvJUvff4) 
+  [使用 JetBrains IDE 安裝、設定和使用 Amazon Q Developer (操作說明)](https://www.youtube.com/watch?v=-iQfIhTA4J0) 
+  [掌握 Amazon CodeWhisperer 的藝術 - YouTube 播放清單](https://www.youtube.com/playlist?list=PLDqi6CuDzubxzL-yIqgQb9UbbceYdKhpK) 
+  [AWS re:Invent 2020：使用 Amazon CodeGuru 持續改善程式碼品質](https://www.youtube.com/watch?v=iX1i35H1OVw) 
+  [AWS Summit ANZ 2021 - 透過 CDK 和測試驅動的開發施行測試優先策略](https://www.youtube.com/watch?v=1R7G_wcyd3s) 

 **相關服務：**
+  [Amazon Q Developer](https://aws.amazon.com/q/developer/) 
+  [Amazon CodeGuru Reviewer](https://docs.aws.amazon.com/codeguru/latest/reviewer-ug/welcome.html) 
+  [Amazon CodeGuru Profiler](https://docs.aws.amazon.com/codeguru/latest/profiler-ug/what-is-codeguru-profiler.html) 

# OPS05-BP08 使用多個環境
<a name="ops_dev_integ_multi_env"></a>

 使用多個環境來試驗、開發和測試您的工作負載。當環境接近生產環境時提高控制層級，以確保您的工作負載在部署後依預期執行。

 **預期成果：**您有多個環境可反映您的合規和管控需求。在環境中測試並推廣程式碼，以逐步進行生產。

1.  您的組織可透過建立登陸區域來執行此操作，該區域提供治理、控制、帳戶自動化、聯網、安全和營運可觀測性。使用多個環境來管理這些登陸區域功能。常見的範例是沙盒組織，可用於開發和測試 [AWS Control Tower](https://aws.amazon.com/controltower/) 型登陸區域的變更，其中包括 [AWS IAM Identity Center](https://aws.amazon.com/iam/identity-center/) 和政策 (例如[服務控制政策 (SCP)](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html))。這些元素全都可能對登陸區域內 AWS 帳戶 的存取和操作產生重大影響。

1.  除了這些服務之外，您的團隊還可利用 AWS 和 AWS 合作夥伴發布的解決方案，或您組織內開發的自訂解決方案來擴展登陸區域功能。AWS 所發布解決方案的範例包括 [Customizations for AWS Control Tower (CfCT)](https://aws.amazon.com/solutions/implementations/customizations-for-aws-control-tower/) 和 [AWS Control Tower Account Factory for Terraform (AFT)](https://docs.aws.amazon.com/controltower/latest/userguide/aft-overview.html)。

1.  在付諸實際執行之前，您的組織會在過程中透過環境針對登陸區域套用相同的測試、推廣程式碼和政策變更原則。此策略為您的應用程式和工作負載團隊提供了穩定且安全的登陸區域環境。

 **常見的反模式：**
+  您在共用開發環境中進行開發，而另一名開發人員覆寫了您的程式碼變更。
+  對共用開發環境的限制性安全控制可防止您試驗新服務和功能。
+  您對生產系統執行負載測試，並造成使用者停機。
+  在生產環境中發生導致資料遺失的嚴重錯誤。在您的生產環境中，您試圖重建導致資料遺失的條件，以便了解此情況如何發生，並防止它再次發生。為防止更多資料在測試期間遺失，必須讓使用者無法使用應用程式。
+  您正在操作多租用戶服務，且無法支援客戶對專用環境的要求。
+  您不一定會進行測試，但要測試時，您會在生產環境中進行。
+  您認為簡單的單一環境會覆寫環境內變更的影響範圍。
+  您升級一項重要的登陸區域功能，但變更卻有損您的團隊為新專案或現有工作負載供應帳戶的能力。
+  您將新的控制項套用至 AWS 帳戶，但變更卻影響工作負載團隊在其 AWS 帳戶 內部署變更的能力。

 **建立此最佳實務的優勢：**當您部署多個環境時，您可以支援多個同時開發、測試和生產的環境，而不會在開發人員或使用者社群之間產生衝突。對於像是登陸區域等複雜功能，它可大幅降低變更的風險、簡化改善程序，並降低對環境進行重大更新的風險。使用登陸區域的組織自然受益於其 AWS 環境中的多個帳戶，因為具有帳戶結構、治理、網路和安全組態。經過一段時間後，隨著組織成長，登陸區域可能會進一步保護和組織您的工作負載和資源。

 **未建立此最佳實務時的曝險等級：**中 

## 實作指引
<a name="implementation-guidance"></a>

 使用多個環境，並且對開發人員沙盒環境實施最低限度的控制，以協助實驗。提供多個單獨的開發環境，以協助實現並行工作，進而提高開發敏捷性。在環境逐漸達到生產環境的條件時，實施更嚴格的控制，以允許開發人員創新。使用基礎設施即程式碼和組態管理系統來部署所設定控制條件與生產環境一致的環境，以確保系統在部署後依預期執行。當不使用環境時，關閉環境以避免產生與閒置資源相關的成本 (例如，在夜間和週末關閉開發系統)。進行負載測試時，部署與生產環境同等的環境，以改善有效的結果。

 平台工程、聯網和安全營運等團隊通常會在擁有不同需求的組織層級管理各種功能。僅是將帳戶分隔開來並不足以提供及維護實驗、開發和測試各自所需的不同環境。在這種情況下，可建立個別的 AWS Organizations 執行個體。

## 資源
<a name="resources"></a>

 **相關文件：**
+ [ Instance Scheduler on AWS](https://aws.amazon.com/solutions/implementations/instance-scheduler-on-aws/)
+  [什麼是 AWS CloudFormation？](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) 
+ [使用多個帳戶來組織您的 AWS 環境 - 多個組織 - 測試整體 AWS 環境的變更](https://docs.aws.amazon.com/whitepapers/latest/organizing-your-aws-environment/multiple-organizations.html#test-changes-to-your-overall-aws-environment)
+ [AWS Control Tower 指南](https://catalog.workshops.aws/control-tower)

# OPS05-BP09 進行頻繁、小型、可逆的變更
<a name="ops_dev_integ_freq_sm_rev_chg"></a>

 頻繁、細微和可逆的變更會縮小變更的範圍和影響。與變更管理系統、組態管理系統以及建置與交付系統搭配使用時，頻繁、細微和可逆的變更可縮小變更的範圍和影響。透過回復變更，可以更有效地進行疑難排解並加快修復速度。

 **常見的反模式：**
+  您每季部署應用程式的新版本，這表示在這段變更期間，核心服務為關閉狀態。
+  您經常對資料庫結構描述進行變更，但未在您的管理系統中追蹤變更。
+  您執行手動就地更新，並覆寫現有的安裝和組態，但沒有明確的回復計畫。

 **建立此最佳實務的優勢：**頻繁部署小型變更，可加快開發工作的速度。若變更幅度很小，就更容易了解變更是否會產生意外的後果，也更容易回復。如果變更可逆，由於復原過程較單純，因此實作變更的風險也會降低。變更程序的風險降低，而且變更失敗的影響也會降低。

 **未建立此最佳實務時的曝險等級：**低 

## 實作指引
<a name="implementation-guidance"></a>

 透過頻繁、細微和可逆的變更來縮小變更的範圍和影響。這樣可以簡化疑難排解，有助於加速修復，並提供回復變更的選項。另外還可以提高您為企業帶來價值的速度。

## 資源
<a name="resources"></a>

 **相關的最佳實務：**
+  [OPS05-BP03 使用組態管理系統](ops_dev_integ_conf_mgmt_sys.md) 
+  [OPS05-BP04 使用建置和部署管理系統](ops_dev_integ_build_mgmt_sys.md) 
+  [OPS06-BP04 自動化測試和復原](ops_mit_deploy_risks_auto_testing_and_rollback.md) 

 **相關文件：**
+ [ 在 上實作 Microservices AWS](https://docs.aws.amazon.com/whitepapers/latest/microservices-on-aws/microservices-on-aws.html)
+ [ 微型服務 - 可觀測性](https://docs.aws.amazon.com/whitepapers/latest/microservices-on-aws/observability.html)

# OPS05-BP10 完全自動化整合和部署
<a name="ops_dev_integ_auto_integ_deploy"></a>

 自動化工作負載的建置、部署和測試。此舉可減少由手動程序引起的錯誤，以及部署變更的工作量。

 使用[資源標籤](https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html)和 [AWS Resource Groups](https://docs.aws.amazon.com/ARG/latest/APIReference/Welcome.html) 並遵循一致的[標記策略](https://aws.amazon.com/answers/account-management/aws-tagging-strategies/)，來套用中繼資料，以幫助識別您的資源。標記您的資源，以用於組織、成本會計、存取控制，以及將自動執行營運活動設為目標。

 **預期成果：**開發人員使用工具交付程式碼並推廣至生產環境。開發人員不必登入 AWS 管理主控台 就可以交付更新。有完整的變更與組態稽核記錄，可滿足管控和合規的需求。程序可在各團隊重複執行並且標準化。開發人員可全心專注於開發和程式碼推送，從而提高生產力。

 **常見的反模式：**
+  週五，您完成了為功能分支編寫新程式碼。週一，執行程式碼品質測試指令碼和每個單位測試指令碼之後，請為下一排程版本檢查程式碼。
+  系統會指派您編寫修正程式碼，以解決影響生產環境中大量客戶的重大問題。測試修正後，您遞交程式碼和電子郵件變更管理內容，以請求核准將其部署到生產環境中。
+  您以開發人員身分登入 AWS 管理主控台，以使用非標準方法和系統來建立新的開發環境。

 **建立此最佳實務的優勢：**透過實作自動化建置和部署管理系統，您可以減少手動程序引起的錯誤，以及部署變更的工作量，協助您的團隊成員專注於提供商業價值。您在推廣至生產環境的同時，加快了交付速度。

 **未建立此最佳實務時的曝險等級：**低 

## 實作指引
<a name="implementation-guidance"></a>

 您使用建置和部署管理系統來追蹤和實作變更，以減少由手動程序引起的錯誤，並減少工作量。從程式碼簽入到建置、測試、部署和驗證，完全自動化整合和部署管道。此舉可縮短前置時間、促進增加變更頻率、減少工作量、加快上市速度、提高生產力，並且在您推廣到生產環境時提高程式碼的安全性。

## 資源
<a name="resources"></a>

 **相關的最佳實務：**
+  [OPS05-BP03 使用組態管理系統](ops_dev_integ_conf_mgmt_sys.md) 
+  [OPS05-BP04 使用建置和部署管理系統](ops_dev_integ_build_mgmt_sys.md) 

 **相關文件：**
+  [什麼是 AWS CodeBuild？](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html) 
+  [什麼是 AWS CodeDeploy？](https://docs.aws.amazon.com/codedeploy/latest/userguide/welcome.html) 

 **相關影片：**
+ [AWS re:Invent 2022 - 適用於 DevOps on AWS 的 AWS Well-Architected 最佳實務](https://youtu.be/hfXokRAyorA)