如何成爲雲原生時代的卓越架構師?

簡介:「軟件開發須要面對本質困難和附屬困難。雲原生、DevOps大幅下降了附屬困難,使得架構師能夠全力聚焦於業務複雜性,而DDD恰是管理業務複雜性的有效方法。」

本文做者:張剛,阿里云云效資深技術專家,ALPD方法學核心成員。架構

當即學習:https://developer.aliyun.com/topic/course/alpdide

軟件開發的本質困難

1986年,軟件工程巨匠Frederick Brooks撰寫了一篇著名的論文《沒有銀彈》。他在文章的開篇寫道:微服務

在將來的10年之內,不存在任何單一的方法和技術,可以10倍以上的提升軟件開發的生產力。工具

這個論斷在當時就引起了巨大的爭議。至今,《沒有銀彈》仍然是一個被常常拿出來討論的話題。不過,這篇論文的真正價值遠不限於此,繼續讀下去,就會發現,。停留在是否存在10倍以上生產率的討論是不夠的。真正值得關心的,是Brooks對緣由的論斷。我把其中的重要觀點歸納以下:學習

軟件開發的困難有兩類,一類是本質(Essential)困難,一類是附屬性(Accidental)困難。阿里雲

本質困難是和軟件的本質緊密聯繫在一塊兒的,因此這類困難沒法經過工具或者語言等加以解決。例如,軟件解決的問題是現實世界的問題,若是現實世界的問題原本就是複雜的,那麼不管任何工具,都不可能消除這種複雜性。spa

附屬性困難是和咱們採起的工具或者方法相關的。例如,軟件須要被經過某種語言實現,軟件須要被編譯、被部署,軟件可能被實現爲缺陷,這些都和具體的實現方法相關。這一類困難,能夠經過工具、方法和技術的提高得以改善。架構設計

本質困難包括軟件的複雜性,不可見性、可變動性和符合性(指軟件開發還須要聽從諸如法律法規、外部系統等不受主觀意志決定的因素)設計

做爲一名在軟件開發行業工做了20年的架構師,《沒有銀彈》關於本質困難和附屬性困難的論述給了我巨大啓發。對象

多年以來,我一直都把「管理本質困難、消除附屬困難」做爲軟件開發活動的座右銘。特別有意思的是,最近我發現,做爲一個主要工做在業務系統上的架構師,在雲原生漸成趨勢的時候,架構師的職責已然發生了改變。而這個變化,偏偏和「管理本質困難、消除附屬困難」密切相關。

業務架構固然也是架構師的重要職責。業務和技術已經深度融合,業務對響應速度的要求和開發質量的要求愈來愈高,同時在雲原生時代,服務化幾乎成爲必然選擇。而不管是業務響應能力、開發質量和服務化,都和業務規劃能力密切相關。這不就是最重要的「管理本質困難」的方面嘛!

領域驅動設計,雖然Eric Evans的同名書籍寫於2004年,多年以來,在技術社區也有較大影響。可是爲何最近幾年熱度忽然大幅上升,變得特別受關注呢?這是由於,咱們的業務終於越變越複雜,到了若是沒有恰當的方法,就不能很好的管理的地步——這也偏偏暗合了DDD一書的副標題「軟件核心複雜性應對之道「。微服務和雲原生在服務方面的劃分等,也是關鍵的助推因素。

成爲雲原生時代的架構師

在今天的業務環境下,能更好地利用好雲原生基礎設施,更好地進行業務規劃、高效高質地分析和管理領域模型,用領域模型指導架構設計和開發實踐,是雲原生時代架構師的重要技能。

此次雲效和阿里雲開發者學院聯合推出的《ALPD雲架構師系列——領域驅動設計》課程也正是圍繞着這個主題展開。

ALPD全稱Advanced Lean product development,它是阿里云云效團隊提出的雲原生時代的研發新範式,它整合了技術、工程、協做、創新4類實踐,並提供高效解決方案。

image.png

image.png

上面2幅圖分別是ALPD方法和支撐體系圖,咱們但願ALPD及其解決方案能夠幫助企業和開發者,實現10倍效能提高——10倍的響應速度,10倍的過程質量,10倍的有效價值交付。

在本次課程中,咱們將爲你們帶來 ALPD方法體系中的領域驅動的架構和實踐 部分的內容。

能經過這一次的對外整理,將知識和經驗分享給社區開發者小夥伴,也是很是開心的事情。

ALPD雲架構師系列課程——DDD高手進階

在課程整理中,咱們把課程分紅了以下章節:

01|領域模型的本質是業務認知
02|案例分析:高質量領域模型提高業務靈活性
03|高質量領域模型源自持續演進
04|案例分析:梳理業務概念,發現領域模型
05|從模型到代碼:領域驅動設計的構造塊
06|聚合:保證業務完整性的單元
07|領域驅動設計的分層模型和代碼組織
08|核心域、通用域和支撐域
09|基於業務能力和業務場景拆分子域
10|守護領域邊界,構建自治服務
11|限界上下文映射的模式
12|使用微服務構建領域資產

其中每講都保持了15分鐘左右的篇幅,以聚焦於一個比較內聚的主題。

1-4講,討論領域模型的一個基礎概念,包括什麼是領域模型?爲何要關心領域模型?如何進行基本的領域建模?
5-7講,主要關心領域模型爲中心的軟件實現,具體對應於領域驅動設計的戰術模式,例如實體對象、值對象,領域服務、領域事件構造塊及聚合、資源庫和工廠這些跟業務完整性密切相關的部分。
8-12講,關心領域模型爲中心的架構設計,具體對應於領域驅動設計的戰略模式,好比說子域、限界上下文、限界上下文映射等方面的話題。最後的12講,咱們把微服務跟領域資產之間的關係也作了討論,微服務是當前一個重要話題,若是對領域驅動設計關注不足,也會影響到微服務和雲原生的實施。
在整個課程中,沒有晦澀難懂的概念,我更但願能經過簡明的案例讓學員輕鬆理解領域驅動設計的核心思想和關鍵實踐。但願你也能經過學習這個課程,能夠從本質出發,更好地理解DDD並付諸實際項目實施。

點擊下方圖片或文末連接,加入《雲架構師系列課程——DDD架構實戰》的學習之路吧!

固然,領域建模和領域驅動設計仍然是須要長期刻意練習的技能,課程中的內容也還只是拋磚引玉,在後續的實際工做中但願你能持續應用和提高,不斷精進,成爲雲原生時代的卓越架構師!

當即學習:https://developer.aliyun.com/topic/course/alpd

本文內容由阿里雲實名註冊用戶自發貢獻,版權歸原做者全部,阿里雲開發者社區不擁有其著做權,亦不承擔相應法律責任。具體規則請查看《阿里雲開發者社區用戶服務協議》和《阿里雲開發者社區知識產權保護指引》。若是您發現本社區中有涉嫌抄襲的內容,填寫侵權投訴表單進行舉報,一經查實,本社區將馬上刪除涉嫌侵權內容。