以對話的方式擴充套件架構的實踐 - Andrew

banq發表於2021-12-07

這是來自martinfowler.com的Andrew Harmel-Law文章,大意如下,詳情點選標題:
架構設計不必是獨白;不是從少數人的思想和口中自上而下地傳遞的。這篇文章描述了另一種構建架構的方法;作為一系列對話,由分散和授權的決策技術驅動,並由四個學習和對齊機制支援:決策記錄、諮詢論壇、Team-sourced原則和技術雷達。
軟體架構的“傳統”方法(即非編碼、決策、圖表繪製)對我來說很難發揮最好的作用。
有沒有替代方案?
在本文中,我將介紹這種替代思維方式以及相關的工具和實踐集,它們使我能夠顛覆“軟體架構師”的傳統角色,同時將軟體架構實踐帶到開發團隊的前沿。更重要的是,我將解釋如何在這種替代方法中,每個人都可以安全有效地進行他們需要的架構,而不會讓一切陷入混亂。
軟體交付朝著不斷增加的團隊自治的方向發展,這加劇了對更多架構思維與架構決策的替代方法相結合的需求。
一個關鍵問題:一小群架構師如何養活大量飢餓的、價值流對齊的團隊?我們需要的是一種可行的方法來應對團隊自治和由此產生的架構的人類規模挑戰。
 

透過“諮詢流程”做出決策
傳統的、自上而下的架構,由精選的全能架構師做出所有決策,與這種分散的模型背道而馳。“然而”,挑戰是“仍然需要做出決策——這就是架構”。
這些架構決策仍然必須經過深思熟慮。

建議流程是這種無政府主義的、分散的架構方法的核心要素。它最大的特點是非常簡單。它包含一個規則和一個限定符:

規則:任何人都可以做出架構決策。

限定符:在做出決定之前,決策者必須諮詢兩個群體:第一個是將受到決定有意義影響的每個人。第二個是在正在做出決定的領域具有專業知識的人。
這就是整個諮詢流程。
...
 

對話的基本作用
事件風暴的發明者阿爾貝託·布蘭多里尼 (Alberto Brandolini) 曾說過一句著名的話,“是開發人員有了自己的假設(根據)他們才能投入生產”,他是對的;重要的是開發人員對目標架構的理解,而不是首席架構師的頭腦或圖表中的內容。
這個問題由來已久。Eric Evans 在“領域驅動設計:解決軟體核心的複雜性”中解決了這個問題,最近我的同事 Erik Dörnenberg 在他的演講“沒有架構師的架構”中談到了它。
對我來說,最重要的是這種架構,在那些編寫程式碼的人的頭腦中。在採用這種分散的方法時,架構決策的實踐更加分散,這個問題在很多方面都得到了緩解。
採用諮詢流程為任何人提供了決策空間,但它也將對話、尋求專業知識的責任和考慮影響置於核心位置。這種方法的其餘要素,每個要素都支援核心要素,重點是確保這些對話儘可能及時、集中和有效。其中有四種:

  1. 一個思考和記錄的工具:第一個支援元素是架構決策記錄或 ADR。這些是輕量級文件,經常與它們描述的人工製品一起儲存在原始碼儲存庫中。
  2. 談話的時間和地點;
  3. 照亮和引導統一方向的燈;
  4. 一種感知當前技術格局和氣候的手段。



 

相關文章