如何成为云原生时代的卓越架构师?
本文作者:張剛,阿里云云效資深技術(shù)專家,ALPD方法學(xué)核心成員。
立即學(xué)習(xí):https://developer.aliyun.com/topic/course/alpd
軟件開發(fā)的本質(zhì)困難
1986年,軟件工程巨匠Frederick Brooks撰寫了一篇著名的論文《沒有銀彈》。他在文章的開篇寫道:
在未來的10年以內(nèi),不存在任何單一的方法和技術(shù),能夠10倍以上的提高軟件開發(fā)的生產(chǎn)力。
這個(gè)論斷在當(dāng)時(shí)就引發(fā)了巨大的爭議。至今,《沒有銀彈》仍然是一個(gè)被經(jīng)常拿出來討論的話題。不過,這篇論文的真正價(jià)值遠(yuǎn)不限于此,繼續(xù)讀下去,就會(huì)發(fā)現(xiàn),。停留在是否存在10倍以上生產(chǎn)率的討論是不夠的。真正值得關(guān)心的,是Brooks對(duì)原因的論斷。我把其中的重要觀點(diǎn)概括如下:
軟件開發(fā)的困難有兩類,一類是本質(zhì)(Essential)困難,一類是附屬性(Accidental)困難。
本質(zhì)困難是和軟件的本質(zhì)緊密聯(lián)系在一起的,所以這類困難無法通過工具或者語言等加以解決。例如,軟件解決的問題是現(xiàn)實(shí)世界的問題,如果現(xiàn)實(shí)世界的問題本來就是復(fù)雜的,那么無論任何工具,都不可能消除這種復(fù)雜性。
附屬性困難是和我們采取的工具或者方法相關(guān)的。例如,軟件需要被通過某種語言實(shí)現(xiàn),軟件需要被編譯、被部署,軟件可能被實(shí)現(xiàn)為缺陷,這些都和具體的實(shí)現(xiàn)方法相關(guān)。這一類困難,可以通過工具、方法和技術(shù)的提升得以改善。
本質(zhì)困難包括軟件的復(fù)雜性,不可見性、可變更性和符合性(指軟件開發(fā)還需要遵從諸如法律法規(guī)、外部系統(tǒng)等不受主觀意志決定的因素)
作為一名在軟件開發(fā)行業(yè)工作了20年的架構(gòu)師,《沒有銀彈》關(guān)于本質(zhì)困難和附屬性困難的論述給了我巨大啟發(fā)。
多年以來,我一直都把“管理本質(zhì)困難、消除附屬困難”作為軟件開發(fā)活動(dòng)的座右銘。特別有意思的是,最近我發(fā)現(xiàn),作為一個(gè)主要工作在業(yè)務(wù)系統(tǒng)上的架構(gòu)師,在云原生漸成趨勢的時(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)速度的要求和開發(fā)質(zhì)量的要求越來越高,同時(shí)在云原生時(shí)代,服務(wù)化幾乎成為必然選擇。而無論是業(yè)務(wù)響應(yīng)能力、開發(fā)質(zhì)量和服務(wù)化,都和業(yè)務(wù)規(guī)劃能力密切相關(guān)。這不就是最重要的“管理本質(zhì)困難”的方面嘛!
領(lǐng)域驅(qū)動(dòng)設(shè)計(jì),雖然Eric Evans的同名書籍寫于2004年,多年以來,在技術(shù)社區(qū)也有較大影響。但是為什么最近幾年熱度突然大幅上升,變得特別受關(guān)注呢?這是因?yàn)?#xff0c;我們的業(yè)務(wù)終于越變越復(fù)雜,到了如果沒有恰當(dāng)?shù)姆椒?#xff0c;就不能很好的管理的地步——這也恰恰暗合了DDD一書的副標(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ì)和開發(fā)實(shí)踐,是云原生時(shí)代架構(gòu)師的重要技能。
這次云效和阿里云開發(fā)者學(xué)院聯(lián)合推出的《ALPD云架構(gòu)師系列——領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)》課程也正是圍繞著這個(gè)主題展開。
ALPD全稱Advanced Lean product development,它是阿里云云效團(tuán)隊(duì)提出的云原生時(shí)代的研發(fā)新范式,它整合了技術(shù)、工程、協(xié)作、創(chuàng)新4類實(shí)踐,并提供高效解決方案。
上面2幅圖分別是ALPD方法和支撐體系圖,我們希望ALPD及其解決方案可以幫助企業(yè)和開發(fā)者,實(shí)現(xiàn)10倍效能提升——10倍的響應(yīng)速度,10倍的過程質(zhì)量,10倍的有效價(jià)值交付。
在本次課程中,我們將為大家?guī)?ALPD方法體系中的領(lǐng)域驅(qū)動(dòng)的架構(gòu)和實(shí)踐 部分的內(nèi)容。
能通過這一次的對(duì)外整理,將知識(shí)和經(jīng)驗(yàn)分享給社區(qū)開發(fā)者小伙伴,也是非常開心的事情。
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ù)場景拆分子域
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)造塊及聚合、資源庫和工廠這些跟業(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)略模式,比如說子域、限界上下文、限界上下文映射等方面的話題。最后的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è)課程中,沒有晦澀難懂的概念,我更希望能通過簡明的案例讓學(xué)員輕松理解領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)的核心思想和關(guān)鍵實(shí)踐。希望你也能通過學(xué)習(xí)這個(gè)課程,可以從本質(zhì)出發(fā),更好地理解DDD并付諸實(shí)際項(xiàng)目實(shí)施。
點(diǎn)擊下方圖片或文末鏈接,加入《云架構(gòu)師系列課程——DDD架構(gòu)實(shí)戰(zhàn)》的學(xué)習(xí)之路吧!
當(dāng)然,領(lǐng)域建模和領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)仍然是需要長期刻意練習(xí)的技能,課程中的內(nèi)容也還只是拋磚引玉,在后續(xù)的實(shí)際工作中希望你能持續(xù)應(yīng)用和提升,不斷精進(jìn),成為云原生時(shí)代的卓越架構(gòu)師!
立即學(xué)習(xí):https://developer.aliyun.com/topic/course/alpd
原文鏈接:https://developer.aliyun.com/article/781097?
版權(quán)聲明:本文內(nèi)容由阿里云實(shí)名注冊用戶自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,阿里云開發(fā)者社區(qū)不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。具體規(guī)則請查看《阿里云開發(fā)者社區(qū)用戶服務(wù)協(xié)議》和《阿里云開發(fā)者社區(qū)知識(shí)產(chǎn)權(quán)保護(hù)指引》。如果您發(fā)現(xiàn)本社區(qū)中有涉嫌抄襲的內(nèi)容,填寫侵權(quán)投訴表單進(jìn)行舉報(bào),一經(jīng)查實(shí),本社區(qū)將立刻刪除涉嫌侵權(quán)內(nèi)容。總結(jié)
以上是生活随笔為你收集整理的如何成为云原生时代的卓越架构师?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 实时计算 Flink 版总体介绍
- 下一篇: 为什么你应该关心领域模型?