如何成为云原生时代的卓越架构师
簡介:?“軟件開發(fā)需要面對本質(zhì)困難和附屬困難。云原生、DevOps大幅降低了附屬困難,使得架構(gòu)師可以全力聚焦于業(yè)務復雜性,而DDD恰是管理業(yè)務復雜性的有效方法。”
本文作者:張剛,阿里云云效資深技術(shù)專家,ALPD方法學核心成員。
軟件開發(fā)的本質(zhì)困難
1986年,軟件工程巨匠Frederick Brooks撰寫了一篇著名的論文《沒有銀彈》。他在文章的開篇寫道:
在未來的10年以內(nèi),不存在任何單一的方法和技術(shù),能夠10倍以上的提高軟件開發(fā)的生產(chǎn)力。
這個論斷在當時就引發(fā)了巨大的爭議。至今,《沒有銀彈》仍然是一個被經(jīng)常拿出來討論的話題。不過,這篇論文的真正價值遠不限于此,繼續(xù)讀下去,就會發(fā)現(xiàn),。停留在是否存在10倍以上生產(chǎn)率的討論是不夠的。真正值得關(guān)心的,是Brooks對原因的論斷。我把其中的重要觀點概括如下:
軟件開發(fā)的困難有兩類,一類是本質(zhì)(Essential)困難,一類是附屬性(Accidental)困難。
本質(zhì)困難是和軟件的本質(zhì)緊密聯(lián)系在一起的,所以這類困難無法通過工具或者語言等加以解決。例如,軟件解決的問題是現(xiàn)實世界的問題,如果現(xiàn)實世界的問題本來就是復雜的,那么無論任何工具,都不可能消除這種復雜性。
附屬性困難是和我們采取的工具或者方法相關(guān)的。例如,軟件需要被通過某種語言實現(xiàn),軟件需要被編譯、被部署,軟件可能被實現(xiàn)為缺陷,這些都和具體的實現(xiàn)方法相關(guān)。這一類困難,可以通過工具、方法和技術(shù)的提升得以改善。
本質(zhì)困難包括軟件的復雜性,不可見性、可變更性和符合性(指軟件開發(fā)還需要遵從諸如法律法規(guī)、外部系統(tǒng)等不受主觀意志決定的因素)
作為一名在軟件開發(fā)行業(yè)工作了20年的架構(gòu)師,《沒有銀彈》關(guān)于本質(zhì)困難和附屬性困難的論述給了我巨大啟發(fā)。
多年以來,我一直都把“管理本質(zhì)困難、消除附屬困難”作為軟件開發(fā)活動的座右銘。特別有意思的是,最近我發(fā)現(xiàn),作為一個主要工作在業(yè)務系統(tǒng)上的架構(gòu)師,在云原生漸成趨勢的時候,架構(gòu)師的職責已然發(fā)生了改變。而這個變化,恰恰和“管理本質(zhì)困難、消除附屬困難”密切相關(guān)。
業(yè)務架構(gòu)當然也是架構(gòu)師的重要職責。業(yè)務和技術(shù)已經(jīng)深度融合,業(yè)務對響應速度的要求和開發(fā)質(zhì)量的要求越來越高,同時在云原生時代,服務化幾乎成為必然選擇。而無論是業(yè)務響應能力、開發(fā)質(zhì)量和服務化,都和業(yè)務規(guī)劃能力密切相關(guān)。這不就是最重要的“管理本質(zhì)困難”的方面嘛!
領(lǐng)域驅(qū)動設(shè)計,雖然Eric Evans的同名書籍寫于2004年,多年以來,在技術(shù)社區(qū)也有較大影響。但是為什么最近幾年熱度突然大幅上升,變得特別受關(guān)注呢?這是因為,我們的業(yè)務終于越變越復雜,到了如果沒有恰當?shù)姆椒?#xff0c;就不能很好的管理的地步——這也恰恰暗合了DDD一書的副標題“軟件核心復雜性應對之道“。微服務和云原生在服務方面的劃分等,也是關(guān)鍵的助推因素。
成為云原生時代的架構(gòu)師
在今天的業(yè)務環(huán)境下,能更好地利用好云原生基礎(chǔ)設(shè)施,更好地進行業(yè)務規(guī)劃、高效高質(zhì)地分析和管理領(lǐng)域模型,用領(lǐng)域模型指導架構(gòu)設(shè)計和開發(fā)實踐,是云原生時代架構(gòu)師的重要技能。
這次云效和阿里云開發(fā)者學院聯(lián)合推出的《ALPD云架構(gòu)師系列——領(lǐng)域驅(qū)動設(shè)計》課程也正是圍繞著這個主題展開。
ALPD全稱Advanced Lean product development,它是阿里云云效團隊提出的云原生時代的研發(fā)新范式,它整合了技術(shù)、工程、協(xié)作、創(chuàng)新4類實踐,并提供高效解決方案。
上面2幅圖分別是ALPD方法和支撐體系圖,我們希望ALPD及其解決方案可以幫助企業(yè)和開發(fā)者,實現(xiàn)10倍效能提升——10倍的響應速度,10倍的過程質(zhì)量,10倍的有效價值交付。
在本次課程中,我們將為大家?guī)?ALPD方法體系中的領(lǐng)域驅(qū)動的架構(gòu)和實踐 部分的內(nèi)容。
能通過這一次的對外整理,將知識和經(jīng)驗分享給社區(qū)開發(fā)者小伙伴,也是非常開心的事情。
ALPD云架構(gòu)師系列課程——DDD高手進階
在課程整理中,我們把課程分成了如下章節(jié):
01|領(lǐng)域模型的本質(zhì)是業(yè)務認知
02|案例分析:高質(zhì)量領(lǐng)域模型提升業(yè)務靈活性
03|高質(zhì)量領(lǐng)域模型源自持續(xù)演進
04|案例分析:梳理業(yè)務概念,發(fā)現(xiàn)領(lǐng)域模型
05|從模型到代碼:領(lǐng)域驅(qū)動設(shè)計的構(gòu)造塊
06|聚合:保證業(yè)務完整性的單元
07|領(lǐng)域驅(qū)動設(shè)計的分層模型和代碼組織
08|核心域、通用域和支撐域
09|基于業(yè)務能力和業(yè)務場景拆分子域
10|守護領(lǐng)域邊界,構(gòu)建自治服務
11|限界上下文映射的模式
12|使用微服務構(gòu)建領(lǐng)域資產(chǎn)
其中每講都保持了15分鐘左右的篇幅,以聚焦于一個比較內(nèi)聚的主題。
1-4講,討論領(lǐng)域模型的一個基礎(chǔ)概念,包括什么是領(lǐng)域模型?為什么要關(guān)心領(lǐng)域模型?如何進行基本的領(lǐng)域建模?
5-7講,主要關(guān)心領(lǐng)域模型為中心的軟件實現(xiàn),具體對應于領(lǐng)域驅(qū)動設(shè)計的戰(zhàn)術(shù)模式,例如實體對象、值對象,領(lǐng)域服務、領(lǐng)域事件構(gòu)造塊及聚合、資源庫和工廠這些跟業(yè)務完整性密切相關(guān)的部分。
8-12講,關(guān)心領(lǐng)域模型為中心的架構(gòu)設(shè)計,具體對應于領(lǐng)域驅(qū)動設(shè)計的戰(zhàn)略模式,比如說子域、限界上下文、限界上下文映射等方面的話題。最后的12講,我們把微服務跟領(lǐng)域資產(chǎn)之間的關(guān)系也做了討論,微服務是當前一個重要話題,如果對領(lǐng)域驅(qū)動設(shè)計關(guān)注不足,也會影響到微服務和云原生的實施。
在整個課程中,沒有晦澀難懂的概念,我更希望能通過簡明的案例讓學員輕松理解領(lǐng)域驅(qū)動設(shè)計的核心思想和關(guān)鍵實踐。希望你也能通過學習這個課程,可以從本質(zhì)出發(fā),更好地理解DDD并付諸實際項目實施。
當然,領(lǐng)域建模和領(lǐng)域驅(qū)動設(shè)計仍然是需要長期刻意練習的技能,課程中的內(nèi)容也還只是拋磚引玉,在后續(xù)的實際工作中希望你能持續(xù)應用和提升,不斷精進,成為云原生時代的卓越架構(gòu)師!
原文鏈接
本文為阿里云原創(chuàng)內(nèi)容,未經(jīng)允許不得轉(zhuǎn)載。
總結(jié)
以上是生活随笔為你收集整理的如何成为云原生时代的卓越架构师的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 阿里云交通数据中台解决方案打造“数字化生
- 下一篇: mPaaS-RPC 拦截器各种场景下的使