亞馬遜使用架構決策記錄來簡化軟體開發專案的技術決策 - AWS
本指南介紹了軟體工程專案的架構決策記錄 (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 和已釋出的合約)
- 構建技術(庫、框架、工具和流程)
詳細點選標題
相關文章
- 如何記錄產品和軟體架構決策?架構
- 資深架構師的經驗分享——軟體專案開發和決策架構
- 輕量級的架構決策記錄機制架構
- 技術架構師如何制定決策 – Mark Greville架構
- 再聊對架構決策記錄的一些思考架構
- 架構師如何做出架構決策? – IasaGlobal架構
- AI決策進階:深度學習遷移技術賦能決策AI深度學習
- Redgate是如何做出架構決策的?架構
- 解析丨自動駕駛核心技術:感知、決策與執行(中:決策篇)自動駕駛
- 軟體專案管理(CMMI成熟度)實踐——之決策分析(1)專案管理
- 軟體專案管理(CMMI成熟度)實踐——之決策分析(2)專案管理
- 軟體專案管理(CMMI成熟度)實踐——之決策分析(3)專案管理
- 如何做出重大技術路線決策?
- 亞馬遜雲科技智慧湖倉架構:從上雲到實時決策的資料服務整體解決方案亞馬遜架構
- 機器學習筆記--決策樹機器學習筆記
- CRM軟體助力企業科學決策
- 機器學習:如何構造一個簡單的決策樹機器學習
- 決策易aPaaS,一款非技術人員也能使用的自定義開發神器
- 決策樹模型(3)決策樹的生成與剪枝模型
- 決策樹
- 機器學習之使用sklearn構造決策樹模型機器學習模型
- R語言專題,如何使用party包構建決策樹?R語言
- 機器學習筆記(四)決策樹機器學習筆記
- IT技術助力於業務流程:RPA解決方案的策
- 機器學習 - 決策樹:技術全解與案例實戰機器學習
- 我們如何在Adyen做出架構決策 - Adyen架構
- 機器學習:決策樹機器學習
- 決策樹示例
- 機器學習-決策樹機器學習
- 決策單調性最佳化
- 實時決策系統中 OpenMLDB 的常見架構整合方式架構
- Java開發架構篇:DDD模型領域層決策規則樹服務設計Java架構模型
- 情指一體化資訊化建設解決方案,警務視覺化輔助決策系統開發視覺化
- Python之父重回決策層,未來如何發展?Python
- 使用線上供應鏈採購系統,將分散性決策變為集中公開決策
- 資料驅動決策:決策智慧與設計思維
- Python機器學習:決策樹001什麼是決策樹Python機器學習
- 軟體設計需要隱藏大部分決策 - fchollet