一篇講明白DevOps時代下的持續(xù)架構(gòu)實踐
“送書老規(guī)矩:留言第5名,第10名 得書一本
軟件架構(gòu)領(lǐng)域正在爆發(fā)一場新的革命。Gartner權(quán)威發(fā)布2023年十大科技趨勢之一“ 可持續(xù)IT架構(gòu)” ,可持續(xù)架構(gòu)得到越來越多從業(yè)人員認同。創(chuàng)建和維護可持續(xù)的軟件架構(gòu)對于架構(gòu)師和工程師而言也是一項巨大的挑戰(zhàn)。
1 持續(xù)架構(gòu)的引入
如今,定義前期架構(gòu)的價值降低了很多,但系統(tǒng)仍必須滿足其具有挑戰(zhàn)性的質(zhì)量屬性;
軟件涉眾仍然有著復(fù)雜、沖突且重疊的需求;
仍有許多設(shè)計選項需要被理解和權(quán)衡;
為了使系統(tǒng)能夠滿足涉眾的需求,也許我們比以往任何時候更需要解決交叉問題。
這些挑戰(zhàn)與長久以來困擾軟件架構(gòu)師的挑戰(zhàn)是一樣的。
然而,在當(dāng)今的環(huán)境里使用軟件架構(gòu)來應(yīng)對這些挑戰(zhàn)的方式必須要改變了。
敏捷性和DevOps 實踐正在從根本上改變IT 專家(包括軟件架構(gòu)師)的工作方式。
軟件架構(gòu)的實踐方式可能會發(fā)生變化,但我們相信它比以往任何時候都更加重要。
2 持續(xù)架構(gòu)的定義
滿足以下六個簡單準(zhǔn)則的架構(gòu)就可以被稱為持續(xù)架構(gòu): 準(zhǔn)則 1 : 用產(chǎn)品思維,而非項目思維來設(shè)計架構(gòu)。 從產(chǎn)品的角度進行構(gòu)建比單純設(shè)計點的解決方案更有效率,更容易讓團隊專注于客戶的需求。 準(zhǔn)則 2 :聚焦質(zhì)量屬性,而不僅僅是功能性需求。 質(zhì)量屬性需求驅(qū)動著架構(gòu)。 準(zhǔn)則 3 :在絕對必要的時候再做設(shè)計決策。 架構(gòu)設(shè)計取決于事實,而不是猜 測。設(shè)計和實施可能永遠都用不到的功能是無意義的,是對時間和資源的浪費。 準(zhǔn)則 4 :利用“微小的力量”,面向變化來設(shè)計架構(gòu)。 大的、單體的、緊耦合的組件很難改變。相反,應(yīng)該使用小且松耦合的軟件元素。 準(zhǔn)則 5 :為構(gòu)建、測試、部署和運營來設(shè)計架構(gòu)。 大多數(shù)架構(gòu)方法只關(guān)注軟件構(gòu)建活動,但我們認為架構(gòu)師也應(yīng)該關(guān)注測試、部署和運營,以支持持續(xù)交付。 準(zhǔn)則 6 :在完成系統(tǒng)設(shè)計后,開始為團隊做組織建模。 團隊的組建方式驅(qū)動著系統(tǒng)的架構(gòu)和設(shè)計。 這六項準(zhǔn)則、 基本活動和工具可以幫助我們進行架構(gòu)活動并定義軟件架構(gòu)的關(guān)鍵組件,例如:
- 系統(tǒng)上下文
- 影響架構(gòu)的關(guān)鍵功能性需求
- 驅(qū)動架構(gòu)的質(zhì)量屬性
- 架構(gòu)和設(shè)計決策
- 架構(gòu)藍圖
有趣的是,軟件架構(gòu)的組件并不是孤立存在的,而是相互關(guān)聯(lián)的(見圖1)。創(chuàng)建軟件架構(gòu)需要在需求、決策、藍圖甚至最終架構(gòu)工件(可執(zhí)行代碼本身)之間做出一系列權(quán)衡。

▲圖1?軟件架構(gòu)的關(guān)鍵組件
那么持續(xù)架構(gòu)與其他架構(gòu)方法有什么不同呢?
4 持續(xù)架構(gòu)提供的準(zhǔn)則和工具
我們并不是要定義一個具體 的架構(gòu)方法論或開發(fā)流程。 我們的主要目標(biāo)是分享一組在實際工作中的核心準(zhǔn)則和工具。 事實上,應(yīng)用持續(xù)架構(gòu)是關(guān)于如何理解準(zhǔn)則和理念,并把它們應(yīng)用到自己的環(huán)境中去。 這么做的時候,讀者可以自主決定使用哪些工具以及如何解讀必要的活動。
為了應(yīng)對當(dāng)前的挑戰(zhàn),即在敏捷與持續(xù)交付的實用主義中建立堅固的架構(gòu)基礎(chǔ),我們已定義了這個基于價值的方法。然而,這并不意味著使用持續(xù)交付是使用持續(xù)架構(gòu)的先決條件。類似地,我們意識到一些公司可能還沒有準(zhǔn)備好在各方面都采用敏捷方法論。甚至,即使一個公司已經(jīng)完全投入到敏捷工作中,某些情況下(比如采用第三方軟件包時),其他方法也可能更為合適(見圖2)。

▲圖2?應(yīng)用持續(xù)架構(gòu)
這是不是意味著持續(xù)架構(gòu)在這種情況下不可用呢?絕對不是。持續(xù)架構(gòu)的好處之一就是,其工具可以很好地與其他軟件開發(fā)方法融合,不是僅限于敏捷開發(fā)。 持續(xù)架構(gòu)也在兩個維度中運作:規(guī)模和軟件交付速度(見圖3)。軟件交付速度的維度決定著如何在這個加速交付循環(huán)的世界中采用架構(gòu)實踐。盡管規(guī)模維度注重于運營層面,我們相信持續(xù)架構(gòu)準(zhǔn)則可以被穩(wěn)定地應(yīng)用在所有的產(chǎn)品規(guī)模中,只是關(guān)注的層次和需要使用的工具會有所不同。

▲ 圖3? 持續(xù)架構(gòu)的維度
本文摘編于《持續(xù)架構(gòu)實踐:持續(xù)架構(gòu)實踐:敏捷和DevOps時代下的軟件架構(gòu)》,經(jīng)出版方授權(quán)發(fā)布(書號:9787111717744),轉(zhuǎn)載請保留文章來源。
END
往期推薦

