亞馬遜使用架構決策記錄來簡化軟體開發專案的技術決策 - AWS

banq發表於2022-06-14

本指南介紹了軟體工程專案的架構決策記錄 (ADR) 過程。ADR 支援團隊協調,記錄專案或產品的戰略方向,並減少重複和耗時的決策工作。

在專案和產品開發期間,軟體工程團隊需要做出架構決策以實現其目標。這些決策可以是技術性的,例如決定使用命令查詢職責分離 (CQRS) 模式,也可以是與流程相關的,例如決定使用 GitFlow 工作流來管理原始碼。做出這些決定是一個耗時且困難的過程。團隊必須證明、記錄這些決定並將這些決定傳達給相關的利益相關者。
在做出架構決策時,經常會出現三種主要的反模式:
  • 因為害怕做出錯誤的選擇,根本沒有做出任何決定。
  • 一個決定是在沒有任何理由的情況下做出的,人們不明白為什麼會做出這樣的決定。這導致同一主題被多次討論。
  • 決策不會在架構決策儲存庫中捕獲,因此團隊成員會忘記或不知道已做出決策。


在產品或專案的開發過程中處理這些反模式特別重要。
以 ADR 的形式捕獲導致決策的決策、背景和考慮因素,使當前和未來的利益相關者能夠收集有關所做決策和每個決策背後的思考過程的資訊。這減少了軟體開發時間,併為未來的團隊提供了更好的文件。

有針對性的業務成果
ADR 針對三個業務成果:
  • 他們使當前和未來的團隊成員保持一致。
  • 他們為專案或產品設定了戰略方向。
  • 他們透過定義一個流程來正確記錄和傳達架構決策,從而避免決策反模式。


ADR 捕獲決策的背景,以告知未來的利益相關者。ADR 集合提供了移交經驗和參考文件。團隊或專案成員使用 ADR 集合進行後續專案和產品功能規劃。能夠參考 ADR 可以減少開發、審查和架構決策所需的時間。ADR 還允許其他團隊學習並深入瞭解其他專案和產品開發團隊所做的考慮。

ADR流程
架構決策記錄 (ADR) 是描述團隊對他們計劃構建的軟體架構的一個重要方面做出的選擇的文件。每個 ADR 都描述了架構決策、其上下文及其後果。ADR 具有狀態,因此遵循生命週期。有關 ADR 的示例,請參閱附錄

ADR 流程輸出架構決策記錄的集合。此集合建立決策日誌。決策日誌提供專案背景以及詳細的實施和設計資訊。專案成員瀏覽每個 ADR 的標題以瞭解專案背景。他們閱讀 ADR 以深入瞭解專案實施和設計選擇。

當團隊接受 ADR 時,它變得不可變。如果新的見解需要不同的決定,團隊會提出新的 ADR。當團隊接受新的 ADR 時,它將取代以前的 ADR。

專案成員應為影響軟體專案或產品的每個具有重大架構意義的決策建立 ADR,包括以下內容(Richards 和 Ford 2020):

  • 結構(例如,微服務等模式)
  • 非功能性需求(安全性、高可用性和容錯性)
  • 依賴關係(元件的耦合)
  • 介面(API 和已釋出的合約)
  • 構建技術(庫、框架、工具和流程)


詳細點選標題

相關文章