DDD & Microserivces——讀書(shū)筆記

1 為什么人們將DDD與Microservices兩個(gè)技術(shù)詞語(yǔ)綁定在一起凯傲?

DDD是一種架構(gòu)設(shè)計(jì)設(shè)計(jì)方法杭抠,其想法是讓軟件的實(shí)現(xiàn)與一個(gè)演進(jìn)的架構(gòu)模型保持一致羊始,而這個(gè)演進(jìn)的模型來(lái)自于業(yè)務(wù)需求谱俭。

Martin Flower和James Lewis總結(jié)的能夠持續(xù)演進(jìn)的大型復(fù)雜系統(tǒng)所具備的9大核心特質(zhì)就是Microservices架構(gòu)所擁有的特質(zhì)帮匾。

可見(jiàn)一個(gè)是架構(gòu)設(shè)計(jì)方法啄骇,一個(gè)是架構(gòu),都從業(yè)務(wù)需求出發(fā)瘟斜,試圖讓軟件實(shí)現(xiàn)隨著業(yè)務(wù)多元變化而與時(shí)俱進(jìn)缸夹。它們存在因果聯(lián)系,所以人們經(jīng)常把二者聯(lián)系在一起哼转。

2 從業(yè)務(wù)視角分離復(fù)雜度

面對(duì)高復(fù)雜度時(shí)明未,人們會(huì)做關(guān)注點(diǎn)分離。一般可從業(yè)務(wù)維度或技術(shù)維度進(jìn)行關(guān)注點(diǎn)分離壹蔓。比如技術(shù)維度分離——MVC分層思想,業(yè)務(wù)維度分離——按售前猫态、銷(xiāo)售佣蓉、售后劃分披摄。

Microservices架構(gòu)更強(qiáng)調(diào)從業(yè)務(wù)維度的關(guān)注點(diǎn)分離來(lái)應(yīng)對(duì)高復(fù)雜度。傳統(tǒng)SOA的ESB是一個(gè)典型的從技術(shù)關(guān)注點(diǎn)分離的中間件勇凭。它封裝了大量的業(yè)務(wù)規(guī)則和流程疚膊,成為了復(fù)雜度之源,以至于破壞了SOA架構(gòu)之前承諾的各種優(yōu)勢(shì)虾标。ESB是一種架構(gòu)上的反模式寓盗。

本質(zhì)上作為一種架構(gòu)設(shè)計(jì)方法的DDD和作為一種架構(gòu)風(fēng)格的Microservices都是為了追求高響應(yīng)力目標(biāo)而從業(yè)務(wù)視角去分離復(fù)雜度的手段。

3 業(yè)務(wù)和技術(shù)漸進(jìn)統(tǒng)一的架構(gòu)設(shè)計(jì)

架構(gòu)設(shè)計(jì)簡(jiǎn)化為三個(gè)層面的工作以及它們傳統(tǒng)意義上的負(fù)責(zé)人

  • 業(yè)務(wù)架構(gòu)(業(yè)務(wù)人員):根據(jù)業(yè)務(wù)需求設(shè)計(jì)業(yè)務(wù)模塊及交互關(guān)系璧函。
  • 系統(tǒng)架構(gòu)(架構(gòu)師/TL):根據(jù)業(yè)務(wù)需求設(shè)計(jì)系統(tǒng)和子系統(tǒng)的模塊傀蚌。
  • 技術(shù)架構(gòu)(開(kāi)發(fā)人員):根據(jù)業(yè)務(wù)需求決定采用的技術(shù)及框架。

DDD的核心訴求就是讓業(yè)務(wù)架構(gòu)和系統(tǒng)架構(gòu)形成綁定關(guān)系蘸吓,這樣一來(lái)當(dāng)我們?nèi)ロ憫?yīng)業(yè)務(wù)變化調(diào)整業(yè)務(wù)架構(gòu)時(shí)善炫,系統(tǒng)架構(gòu)的改變也會(huì)隨之發(fā)生。

這個(gè)變化的結(jié)構(gòu)有兩個(gè):
業(yè)務(wù)架構(gòu)的梳理與系統(tǒng)架構(gòu)的梳理是同步漸進(jìn)的库继,其結(jié)果是劃分出的業(yè)務(wù)上下文和系統(tǒng)模塊結(jié)構(gòu)是綁定的箩艺。
技術(shù)架構(gòu)是解耦的,可以根據(jù)劃分出來(lái)的業(yè)務(wù)上下文的系統(tǒng)架構(gòu)選擇最合適的實(shí)現(xiàn)技術(shù)宪萄。

4 跨職能協(xié)作的架構(gòu)設(shè)計(jì)

DDD成功運(yùn)用的基礎(chǔ)就是創(chuàng)造讓業(yè)務(wù)和系統(tǒng)這兩種不同認(rèn)知模型逐步統(tǒng)一的環(huán)境艺谆。

Event Stroming模式化協(xié)作工作坊是一種讓不同背景人協(xié)作起來(lái)進(jìn)行架構(gòu)設(shè)計(jì)的方式。

5 永無(wú)終止的DDD和演進(jìn)的Microservices

成功的DDD方法運(yùn)用時(shí)貫穿系統(tǒng)的整個(gè)生命周期的拜英,這個(gè)過(guò)程中業(yè)務(wù)和技術(shù)的協(xié)作是持續(xù)發(fā)生的擂涛。

[備注]Microservices的9大特質(zhì)

  • 組件以服務(wù)形式來(lái)提供:正如其名,微服務(wù)也是面向服務(wù)的聊记。
  • 圍繞業(yè)務(wù)功能進(jìn)行組織:微服務(wù)更傾向于圍繞業(yè)務(wù)功能對(duì)服務(wù)結(jié)構(gòu)進(jìn)行劃分撒妈、拆解。這樣的服務(wù)排监,是針對(duì)業(yè)務(wù)領(lǐng)域有著關(guān)完整實(shí)現(xiàn)的軟件狰右,它包含使用接口、持久存儲(chǔ)舆床、以及對(duì)旬的交互棋蚌。因此團(tuán)隊(duì)?wèi)?yīng)該是跨職能的,包含完整的開(kāi)發(fā)技術(shù):用戶體驗(yàn)挨队、數(shù)據(jù)庫(kù)谷暮、以及項(xiàng)目管理。
  • 產(chǎn)品不是項(xiàng)目:傳統(tǒng)的開(kāi)發(fā)模式盛垦,是至力于提供一些被認(rèn)為是完整的軟件湿弦。一旦開(kāi)發(fā)完成,軟件將移交給維護(hù)或者實(shí)施部門(mén)腾夯,然后颊埃,開(kāi)發(fā)組就可以解散掉了蔬充。而微服務(wù)要求開(kāi)發(fā)團(tuán)隊(duì)對(duì)軟件產(chǎn)品的整個(gè)生命周期負(fù)責(zé)。這要求開(kāi)發(fā)者每天都關(guān)注軟件產(chǎn)品的運(yùn)行情況班利,并與用戶聯(lián)系的更緊密饥漫,同時(shí)承擔(dān)一些售后支持。越小的服務(wù)粒度越容易促進(jìn)用戶與服務(wù)提供商之前的關(guān)系罗标。Amazon 的理念就是“You build, you run it”庸队,這也正是 DevOps 的文化理念。
  • 強(qiáng)化終端及弱化通道:微服務(wù)的應(yīng)用致力松耦合和高內(nèi)聚闯割,它們更喜歡簡(jiǎn)單的REST 風(fēng)格彻消,而不是復(fù)雜的協(xié)議(如WS或者BPEL或者集中式框架)∨耍或者采用輕量級(jí)消息總線(如 RabbitMQ 或 ZeroMQ 等)來(lái)發(fā)布消息证膨。
  • 分散治理:這是跟傳統(tǒng)的集中式管理很大區(qū)別的地方。微服務(wù)把整體式框架中的組件鼓黔,拆分成不同的服務(wù)央勒,在構(gòu)建它們時(shí)將會(huì)有更多的選擇。
  • 分散數(shù)據(jù)管理:當(dāng)整體式的應(yīng)用使用單一邏輯數(shù)據(jù)庫(kù)對(duì)數(shù)據(jù)持久化時(shí)澳化,企業(yè)通常選擇在應(yīng)用的范圍內(nèi)使用一個(gè)數(shù)據(jù)庫(kù)崔步。微服務(wù)讓每個(gè)服務(wù)管理自己的數(shù)據(jù)庫(kù):無(wú)論是相同數(shù)據(jù)庫(kù)的不同實(shí)例,或者是不同的數(shù)據(jù)庫(kù)系統(tǒng)缎谷。
  • 基礎(chǔ)設(shè)施自動(dòng)化:云計(jì)算井濒,特別是 AWS 的發(fā)展,減少了構(gòu)建列林、發(fā)布瑞你、運(yùn)維微服務(wù)的復(fù)雜性。微服務(wù)的團(tuán)隊(duì)更加依賴于基礎(chǔ)設(shè)施的自動(dòng)化希痴,畢竟發(fā)布工作相當(dāng)?shù)臒o(wú)趣者甲。近些年開(kāi)始火爆的 Docker 也是一個(gè)不錯(cuò)的選擇(可以參閱《簡(jiǎn)述 Docker》)。
  • 容錯(cuò)性設(shè)計(jì):任務(wù)服務(wù)都可能因?yàn)楣?yīng)商的不可靠而故障砌创。微服務(wù)應(yīng)為每個(gè)應(yīng)用的服務(wù)及數(shù)據(jù)中心提供日常故障檢測(cè)和恢復(fù)虏缸。
  • 改進(jìn)設(shè)計(jì):由于設(shè)計(jì)會(huì)不斷更改,微服務(wù)所提供的服務(wù)應(yīng)該能夠替換或者報(bào)廢嫩实,而不是要長(zhǎng)久的發(fā)展的刽辙。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市甲献,隨后出現(xiàn)的幾起案子宰缤,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,820評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件撵溃,死亡現(xiàn)場(chǎng)離奇詭異疚鲤,居然都是意外死亡锥累,警方通過(guò)查閱死者的電腦和手機(jī)缘挑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,648評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)桶略,“玉大人语淘,你說(shuō)我怎么就攤上這事〖始撸” “怎么了惶翻?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,324評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)鹅心。 經(jīng)常有香客問(wèn)我吕粗,道長(zhǎng),這世上最難降的妖魔是什么旭愧? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,714評(píng)論 1 297
  • 正文 為了忘掉前任颅筋,我火速辦了婚禮,結(jié)果婚禮上输枯,老公的妹妹穿的比我還像新娘议泵。我一直安慰自己,他們只是感情好桃熄,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,724評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布先口。 她就那樣靜靜地躺著,像睡著了一般瞳收。 火紅的嫁衣襯著肌膚如雪碉京。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 52,328評(píng)論 1 310
  • 那天螟深,我揣著相機(jī)與錄音谐宙,去河邊找鬼。 笑死血崭,一個(gè)胖子當(dāng)著我的面吹牛卧惜,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播夹纫,決...
    沈念sama閱讀 40,897評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼咽瓷,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了舰讹?” 一聲冷哼從身側(cè)響起茅姜,我...
    開(kāi)封第一講書(shū)人閱讀 39,804評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后钻洒,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體奋姿,經(jīng)...
    沈念sama閱讀 46,345評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,431評(píng)論 3 340
  • 正文 我和宋清朗相戀三年素标,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了称诗。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,561評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡头遭,死狀恐怖寓免,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情计维,我是刑警寧澤袜香,帶...
    沈念sama閱讀 36,238評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站鲫惶,受9級(jí)特大地震影響蜈首,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜欠母,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,928評(píng)論 3 334
  • 文/蒙蒙 一欢策、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧艺蝴,春花似錦猬腰、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,417評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至缩擂,卻和暖如春鼠冕,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背胯盯。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,528評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工懈费, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人博脑。 一個(gè)月前我還...
    沈念sama閱讀 48,983評(píng)論 3 376
  • 正文 我出身青樓憎乙,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親叉趣。 傳聞我的和親對(duì)象是個(gè)殘疾皇子泞边,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,573評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • Microservices(微服務(wù)架構(gòu))和DDD(領(lǐng)域驅(qū)動(dòng)設(shè)計(jì))是時(shí)下最炙手可熱的兩個(gè)技術(shù)詞匯。在最近兩年的咨詢工...
    ThoughtWorks閱讀 2,336評(píng)論 1 32
  • “微服務(wù)架構(gòu)”這一術(shù)語(yǔ)在前幾年橫空出世疗杉,用于描述這樣一種特定的軟件設(shè)計(jì)方法阵谚,即以若干組可獨(dú)立部署的服務(wù)的方式進(jìn)行軟...
    ThoughtWorks閱讀 16,916評(píng)論 1 71
  • 10月有幸參加ThoughtWorks組織的《領(lǐng)域驅(qū)動(dòng)的微服務(wù)架構(gòu)設(shè)計(jì)實(shí)戰(zhàn)工作坊》培訓(xùn)課程,盡管課程時(shí)間只有短短一...
    李戩plutocracy閱讀 7,063評(píng)論 4 36
  • 完整版文章請(qǐng)?jiān)L問(wèn)我的個(gè)人博客查看:damienzhong.com 微服務(wù) “微服務(wù)架構(gòu)(Microservice ...
    呆萌鐘閱讀 732評(píng)論 0 2
  • 春天來(lái)了奠蹬,桃花開(kāi)了,柳樹(shù)發(fā)芽了…… 走著走著嗡午,腦海中又浮現(xiàn)出那個(gè)長(zhǎng)發(fā)及腰的女孩兒囤躁,她跟他站在他們第一...
    陳小帥真帥閱讀 405評(píng)論 0 0