TID大会学习心得之敏捷软件架构-微服务
敏捷微服務(wù)構(gòu)建
王威: TW咨詢師、架構(gòu)轉(zhuǎn)型教練、敏捷技術(shù)教練
敏捷的目標(biāo)
敏捷的目標(biāo)是提升效率?降低成本?減員增效?
敏捷:關(guān)注價(jià)值、快速反饋、快速響應(yīng)。其的目標(biāo)是提升響應(yīng)力,響應(yīng)力的提升不一定會提升效率、降低成本、減員增效
敏捷追求的是加速度,而不是速度(個人理解)。短期來看加速度不能提升速度,甚至?xí)档退俣?#xff0c;但長期來看加速度可以提升速度!
敏捷的軟件架構(gòu)
敏捷的軟件架構(gòu)需要支持關(guān)注價(jià)值、快速反饋、快速響應(yīng)。如何體現(xiàn)軟件架構(gòu)的響應(yīng)力(或加速度)?相對單體、分層的架構(gòu)來說,微服務(wù)具有獨(dú)特的優(yōu)勢:高內(nèi)聚低耦合、獨(dú)立開發(fā)、獨(dú)立運(yùn)維、高可測試性、延遲決策….
- 大泥團(tuán)
Product類承擔(dān)了過多的職責(zé):產(chǎn)品價(jià)格的職責(zé)、產(chǎn)品運(yùn)輸?shù)穆氊?zé)、產(chǎn)品購買的職責(zé)、產(chǎn)品的個人化信息等等。各種職責(zé)的代碼相互糾纏,形成一個大泥團(tuán)。 - DDD(領(lǐng)域驅(qū)動設(shè)計(jì))與界限上下文
從業(yè)務(wù)領(lǐng)域角度抽象界限上下文,對于產(chǎn)品分離出不同界限上下文的領(lǐng)域概念:市場領(lǐng)域的產(chǎn)品概念、銷售領(lǐng)域的產(chǎn)品概念等等。 - 領(lǐng)域架構(gòu)
將業(yè)務(wù)領(lǐng)域映射到一個獨(dú)立的微服務(wù)中,由單個微服務(wù)承擔(dān)此領(lǐng)域的產(chǎn)品職責(zé)。
關(guān)鍵問題
如何識別界限上下文?王威老師現(xiàn)場針對寵物商店的業(yè)務(wù),組織一個DDD的工作坊(event storming),大致過程如下:
- 識別領(lǐng)域事件:
針對一個寵物商店有哪些領(lǐng)域事件:添加寵物、提交訂單、收貨確認(rèn)等等 - 按時間軸排序:
針對上述領(lǐng)域事件根據(jù)時間軸進(jìn)行排序 - 識別命令并關(guān)聯(lián)到事件:
命令包括:用戶觸發(fā)命令、外部其他系統(tǒng)觸發(fā)命令、定時任務(wù)三類。
用完成式描述命令,例如用戶已添加寵物到購物車、用戶已提交訂單等,最后將識別的命令貼在第一個觸發(fā)事件上,可能有多個事件對應(yīng)同一個命令。 - 根據(jù)命令找到聚合邊界得到一個微服務(wù):
在時間軸上兩個命令之間的時間和第一個相關(guān)命令聚合為一個微服務(wù)。
界限上下文的識別必須由領(lǐng)域?qū)<掖_認(rèn),團(tuán)隊(duì)所有成員參加。這樣利于大家達(dá)成共識。
關(guān)于event storming和DDD的擴(kuò)展資料:
https://groups.google.com/forum/#!forum/dddcqrs
http://techbeacon.com/introduction-event-storming-easy-way-achieve-domain-driven-design
來自為知筆記(Wiz)
轉(zhuǎn)載于:https://www.cnblogs.com/cuiyunfeng/p/5716035.html
總結(jié)
以上是生活随笔為你收集整理的TID大会学习心得之敏捷软件架构-微服务的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php开启curl和openssl
- 下一篇: css设置技巧