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