中台架构与实现(基于DDD和微服务)-读书笔记1
前緒
一、DDD(Domain?Driven?Design,領(lǐng)域驅(qū)動(dòng)設(shè)計(jì))、微服務(wù)、中臺(tái)
? ? ? ?中臺(tái)需要將通用的、可復(fù)用的業(yè)務(wù)能力沉淀到中臺(tái),實(shí)現(xiàn)企業(yè)級(jí)能力的復(fù)用。企業(yè)在進(jìn)行中臺(tái)建設(shè)時(shí)首先要從業(yè)務(wù)領(lǐng)域出發(fā),考慮如何按照可復(fù)用的原則進(jìn)行領(lǐng)域分解,完成中臺(tái)領(lǐng)域建模。中臺(tái)本質(zhì)是企業(yè)的業(yè)務(wù)建模,而微服務(wù)則是中臺(tái)領(lǐng)域建模系統(tǒng)落地時(shí)的一種架構(gòu)實(shí)現(xiàn)方式。
? ? ? ?DDD首先從業(yè)務(wù)領(lǐng)域入手,劃分業(yè)務(wù)領(lǐng)域邊界,采用事件風(fēng)暴工作坊方法,分析并提取業(yè)務(wù)場(chǎng)景中的實(shí)體、值對(duì)象、聚合根、聚合、領(lǐng)域事件等領(lǐng)域?qū)ο?#xff0c;根據(jù)界限上下文邊界構(gòu)建領(lǐng)域模型,將領(lǐng)域模型作為微服務(wù)設(shè)計(jì)的輸入,進(jìn)而完成微服務(wù)詳細(xì)設(shè)計(jì)。用DDD方法設(shè)計(jì)的微服務(wù),業(yè)務(wù)和應(yīng)用邊界清晰,符合“高內(nèi)聚、低耦合”的設(shè)計(jì)原則,適應(yīng)業(yè)務(wù)模型變化和服務(wù)架構(gòu)演進(jìn)。DDD包含戰(zhàn)略設(shè)計(jì)和戰(zhàn)術(shù)設(shè)計(jì)兩個(gè)階段。通過(guò)戰(zhàn)略設(shè)計(jì)可完成中臺(tái)業(yè)務(wù)邊界劃分和領(lǐng)域建模,然后將領(lǐng)域建模作為戰(zhàn)術(shù)設(shè)計(jì)的輸入,完成微服務(wù)設(shè)計(jì)。
? ? ? ?微服務(wù)與DDD的共生關(guān)系包含兩方面。一方面,微服務(wù)提供將應(yīng)用進(jìn)行服務(wù)化拆分,通過(guò)業(yè)務(wù)領(lǐng)域邊界實(shí)現(xiàn)應(yīng)用服務(wù)邊界的劃分;另一方面,DDD提供了一種基于業(yè)務(wù)限界上下文邊界來(lái)實(shí)現(xiàn)微服務(wù)“高內(nèi)聚、低耦合”的服務(wù)建設(shè)方法。將兩者合理搭配使用,研發(fā)組織科輕松實(shí)現(xiàn)面向服務(wù)的設(shè)計(jì),享受持續(xù)交付與架構(gòu)演進(jìn)。
? ? ? ?DDD、微服務(wù)與中臺(tái)都強(qiáng)調(diào)從業(yè)務(wù)領(lǐng)域出發(fā)。DDD可同時(shí)指導(dǎo)中臺(tái)領(lǐng)域建模和微服務(wù)設(shè)計(jì),是中臺(tái)領(lǐng)域建模和微服務(wù)設(shè)計(jì)的最佳指導(dǎo)方法,而微服務(wù)是中臺(tái)的最佳技術(shù)實(shí)踐。三者為鐵三角關(guān)系。三者結(jié)合,從企業(yè)領(lǐng)域到子域的戰(zhàn)略設(shè)計(jì)、宏觀業(yè)務(wù)領(lǐng)域邊界劃分到微服務(wù)內(nèi)底層領(lǐng)域?qū)ο蟮闹鸺?jí)細(xì)化設(shè)計(jì),降低軟件產(chǎn)品建設(shè)的復(fù)雜度,實(shí)現(xiàn)從宏觀戰(zhàn)略到技術(shù)實(shí)現(xiàn)細(xì)節(jié)的無(wú)縫銜接。
二、傳統(tǒng)企業(yè)數(shù)字化轉(zhuǎn)型的問(wèn)題
1、技術(shù)體系落后
? ? ? ?傳統(tǒng)企業(yè)大多采用集中式架構(gòu),技術(shù)體系相對(duì)落后,可擴(kuò)展能力不強(qiáng)。集中式架構(gòu)過(guò)于依賴設(shè)備資源,基于穩(wěn)定和性能考慮,大多運(yùn)行在大型機(jī)或小型機(jī)上。同時(shí),傳統(tǒng)企業(yè)多采用“兩地三中心”容災(zāi)模式,高可用能力不強(qiáng),難以實(shí)現(xiàn)多中心多活,容易帶來(lái)資源浪費(fèi)。在運(yùn)維能力上,過(guò)于依賴人工,難以實(shí)現(xiàn)自動(dòng)化運(yùn)維,面對(duì)突發(fā)高配訪問(wèn)的業(yè)務(wù)場(chǎng)景,不能實(shí)現(xiàn)自動(dòng)彈性伸縮。
2、單體架構(gòu)問(wèn)題
? ? ? ?集中式單體應(yīng)用會(huì)將多個(gè)功能放到一個(gè)應(yīng)用中,經(jīng)過(guò)日積月累,應(yīng)用會(huì)變得龐大而復(fù)雜。企業(yè)難以嘗試新的技術(shù),以至于技術(shù)能力一直停滯不前,無(wú)法及時(shí)完成技術(shù)升級(jí),導(dǎo)致技術(shù)債越積越多。
3、研發(fā)與運(yùn)維能力落后問(wèn)題
? ? ? ?一般單體應(yīng)用通常采用傳統(tǒng)的瀑布開發(fā)模式,弊端在于開發(fā)和測(cè)試周期耗時(shí)長(zhǎng),交付質(zhì)量和周期難以保證,不能實(shí)現(xiàn)持續(xù)快速交付,對(duì)業(yè)務(wù)需求和市場(chǎng)的響應(yīng)能力相對(duì)較慢,難以實(shí)現(xiàn)敏捷開發(fā)。云計(jì)算平臺(tái)和自動(dòng)化運(yùn)維工具對(duì)單體應(yīng)用的生態(tài)支持有限,應(yīng)用的部署和運(yùn)維過(guò)程相對(duì)復(fù)雜。當(dāng)應(yīng)用出現(xiàn)問(wèn)題時(shí),基本靠人肉排查,且研發(fā)團(tuán)隊(duì)與運(yùn)維團(tuán)隊(duì)難以快速定位和協(xié)同解決問(wèn)題。
4、IT能力重復(fù)建設(shè)問(wèn)題
? ? ? ? 再集團(tuán)內(nèi)部,由于缺少IT建設(shè)總體規(guī)劃,不同子公司之間的公共業(yè)務(wù)能力的重復(fù)建設(shè)問(wèn)題可能會(huì)更加突出。要解決IT重復(fù)建設(shè)問(wèn)題,就要從提升技術(shù)能力和重構(gòu)業(yè)務(wù)模型入手,實(shí)現(xiàn)企業(yè)級(jí)業(yè)務(wù)能力的復(fù)用,這也是傳統(tǒng)企業(yè)中臺(tái)數(shù)字化轉(zhuǎn)型亟需重點(diǎn)解決的問(wèn)題。
三、AKF可擴(kuò)展能力立方體模型
? ? ? ?AKF可擴(kuò)展能力立方體模型由X、Y、Z三個(gè)軸,分別從三個(gè)維度來(lái)定義軟件產(chǎn)品的擴(kuò)展能力。三個(gè)維度相輔相成,涵蓋業(yè)務(wù)和技術(shù)的多個(gè)領(lǐng)域。通過(guò)克隆應(yīng)用和數(shù)據(jù)庫(kù)實(shí)例,可提高應(yīng)用和數(shù)據(jù)庫(kù)業(yè)務(wù)承載容量,對(duì)應(yīng)X軸擴(kuò)展能力。通過(guò)劃分業(yè)務(wù)職能邊界建立領(lǐng)域模型,以拆分應(yīng)用和設(shè)計(jì)微服務(wù),可以提高業(yè)務(wù)的復(fù)用和擴(kuò)展能力,對(duì)應(yīng)Y軸擴(kuò)展能力。通過(guò)分片策略將數(shù)據(jù)集拆分為多個(gè)數(shù)據(jù)子集或業(yè)務(wù)單元,可提高數(shù)據(jù)的擴(kuò)展能力,對(duì)應(yīng)Z軸擴(kuò)展能力。
1、X軸:容量擴(kuò)展能力
? ? ? ?X軸關(guān)注無(wú)差別的服務(wù)和數(shù)據(jù)的復(fù)制,解決應(yīng)用和數(shù)據(jù)庫(kù)容量水平擴(kuò)容問(wèn)題。當(dāng)應(yīng)用或數(shù)據(jù)庫(kù)實(shí)例負(fù)載過(guò)重時(shí),可復(fù)制應(yīng)用或數(shù)據(jù)實(shí)例實(shí)現(xiàn)擴(kuò)容。擴(kuò)容后,任務(wù)可通過(guò)負(fù)載均衡均勻分布到不同應(yīng)用服務(wù)或數(shù)據(jù)實(shí)例,所有實(shí)例都可無(wú)差異地完成任務(wù)。在分布式架構(gòu)下,X軸的典型實(shí)踐案例主要體現(xiàn)在應(yīng)用和數(shù)據(jù)庫(kù)實(shí)例的水平擴(kuò)展能力上。
2、Y軸:業(yè)務(wù)擴(kuò)展能力
? ? ? ?Y軸主要用于劃分業(yè)務(wù)和應(yīng)用邊界,解決業(yè)務(wù)能力復(fù)用的問(wèn)題。Y軸的典型實(shí)踐案例是從單體向微服務(wù)的演進(jìn)。這個(gè)過(guò)程會(huì)有業(yè)務(wù)和應(yīng)用邊界拆分的問(wèn)題。DDD幫助完成應(yīng)用的拆分和微服務(wù)的設(shè)計(jì)。會(huì)按照流程或功能邊界分解業(yè)務(wù)領(lǐng)域,根據(jù)業(yè)務(wù)上下文邊界,構(gòu)建領(lǐng)域模型,并將其進(jìn)行微服務(wù)設(shè)計(jì)的輸入。
3、Z軸:數(shù)據(jù)擴(kuò)展能力
? ? ? ?Z軸關(guān)注數(shù)據(jù)的擴(kuò)展能力,它按照業(yè)務(wù)類型或數(shù)據(jù)屬性進(jìn)行數(shù)據(jù)分片。根據(jù)數(shù)據(jù)分片策略將數(shù)據(jù)集劃分為不同的數(shù)據(jù)子集,提升數(shù)據(jù)的擴(kuò)展能力。數(shù)據(jù)庫(kù)水平切分是通過(guò)數(shù)據(jù)分片規(guī)劃將一個(gè)大的數(shù)據(jù)集切分為多個(gè)數(shù)據(jù)子集,并分布到不同的數(shù)據(jù)庫(kù)中,按照分片規(guī)則可路由到具體數(shù)據(jù)庫(kù)完成數(shù)據(jù)查詢等操作。單元化架構(gòu)是按照業(yè)務(wù)特點(diǎn)或yoghurt需求進(jìn)行數(shù)據(jù)分片,將一個(gè)數(shù)據(jù)集水平切分為多個(gè)數(shù)據(jù)子集,然后根據(jù)數(shù)據(jù)分片分別部署業(yè)務(wù)應(yīng)用單元。業(yè)務(wù)應(yīng)用單元包含若干依賴緊密的應(yīng)用,應(yīng)用在單元內(nèi)可不依賴單元外的服務(wù)獨(dú)立完成單元內(nèi)地業(yè)務(wù)全流程,以形成業(yè)務(wù)場(chǎng)景閉環(huán)。業(yè)務(wù)單元之間相互獨(dú)立、天然隔離。但業(yè)務(wù)需要擴(kuò)容時(shí),只需增加和部署新的業(yè)務(wù)單元與數(shù)據(jù)子集就可以很容易實(shí)現(xiàn)擴(kuò)容,從而提高業(yè)務(wù)承載能力。
四、企業(yè)數(shù)字化轉(zhuǎn)型的重要關(guān)注點(diǎn)
? ? ? ?數(shù)字化轉(zhuǎn)型是企業(yè)能力全面體系提升的過(guò)程,遠(yuǎn)不是升級(jí)幾個(gè)系統(tǒng)技術(shù)架構(gòu)就能解決的事情。這種能力的提升是企業(yè)從技術(shù)、業(yè)務(wù)到組織能力的全面提升,需要從技術(shù)能力、業(yè)務(wù)能力和組織架構(gòu)等多方面,分步驟、有計(jì)劃地統(tǒng)籌推進(jìn),從多個(gè)方面整體提升企業(yè)核心競(jìng)爭(zhēng)力。
1、提升技術(shù)能力,完成從集中式架構(gòu)向分布式架構(gòu)的轉(zhuǎn)型
- 提升技術(shù)平臺(tái)能力
- 提升人員技能、知識(shí)和方法體系等方面鄧麗
- 打破傳統(tǒng)核心應(yīng)用與移動(dòng)互聯(lián)應(yīng)用才有統(tǒng)一的技術(shù)壁壘,促進(jìn)量大關(guān)鍵技術(shù)和業(yè)務(wù)體系的融合。
? ? ? ?技術(shù)鞥哪里提升了,傳統(tǒng)應(yīng)用和移動(dòng)互聯(lián)因公才有統(tǒng)一的基礎(chǔ);應(yīng)用統(tǒng)一了,才會(huì)有業(yè)務(wù)模型的統(tǒng)一;業(yè)務(wù)模型統(tǒng)一了,才能實(shí)現(xiàn)業(yè)務(wù)能力共享和復(fù)用,企業(yè)才會(huì)有實(shí)時(shí)中臺(tái)戰(zhàn)略的技術(shù)基礎(chǔ)。
2、降低應(yīng)用建設(shè)復(fù)雜度,完成從單體到微服務(wù)的轉(zhuǎn)型
? ? ? ?微服務(wù)采用分治的策略,降低了應(yīng)用建設(shè)復(fù)雜度,解決了單體應(yīng)用建設(shè)過(guò)程中遇到的若干問(wèn)題。從單體到微服務(wù)的轉(zhuǎn)型,對(duì)應(yīng)AKF模型Y軸的業(yè)務(wù)擴(kuò)展能力。“高內(nèi)聚、低耦合”的可復(fù)用的業(yè)務(wù)模型和微服務(wù),可更靈活地應(yīng)對(duì)業(yè)務(wù)變化,更快地響應(yīng)市場(chǎng)需求。微服務(wù)優(yōu)勢(shì):
- 業(yè)務(wù)職責(zé)單一,團(tuán)隊(duì)規(guī)模較小,可更好地實(shí)施敏捷開發(fā)。
- 微服務(wù)軟件部署包較小,可更好地上云,實(shí)現(xiàn)應(yīng)用彈性擴(kuò)展能力,提高自動(dòng)化的運(yùn)維能力,更好地管理和利用好資源。
3、提升業(yè)務(wù)復(fù)用能力,從IT重復(fù)建設(shè)到中臺(tái)戰(zhàn)略
? ? ? ?實(shí)現(xiàn)企業(yè)級(jí)能力復(fù)用,降低IT重復(fù)建設(shè)。通過(guò)實(shí)施中臺(tái)戰(zhàn)略,重構(gòu)企業(yè)業(yè)務(wù)模型,提升企業(yè)級(jí)業(yè)務(wù)的復(fù)用能力。在從單體應(yīng)用向微服務(wù)轉(zhuǎn)型時(shí),通過(guò)劃分業(yè)務(wù)邊界構(gòu)建領(lǐng)域模型,將可復(fù)用的業(yè)務(wù)能力沉淀到中臺(tái)領(lǐng)域模型,建立企業(yè)級(jí)整理解決方案,實(shí)現(xiàn)業(yè)務(wù)和流程的組合、復(fù)用和融合。
4、提升移動(dòng)運(yùn)營(yíng)能力,從傳統(tǒng)PC端向移動(dòng)線上化轉(zhuǎn)型
? ? ? ?結(jié)合AI和大數(shù)據(jù)等技術(shù)應(yīng)用,完成核心業(yè)務(wù)能力的移動(dòng)線上化轉(zhuǎn)型,進(jìn)而實(shí)現(xiàn)企業(yè)業(yè)務(wù)能力的無(wú)限延伸。在產(chǎn)品移動(dòng)線上化后,企業(yè)可將能力延伸到客戶和前臺(tái)一線,這樣企業(yè)就具備了實(shí)施數(shù)字化轉(zhuǎn)型的前提和基礎(chǔ)。
5、提升企業(yè)組織能力,建立與中臺(tái)相適應(yīng)的組織架構(gòu)和方法體系
? ? ? ?建立與中臺(tái)建設(shè)、中臺(tái)運(yùn)營(yíng)和商業(yè)模式創(chuàng)新相適應(yīng)的組織架構(gòu)。在企業(yè)全院建立統(tǒng)一的中臺(tái)文化和方法體系,按照統(tǒng)一的標(biāo)準(zhǔn)和方法協(xié)同推進(jìn)中臺(tái)建設(shè)。
總結(jié)
以上是生活随笔為你收集整理的中台架构与实现(基于DDD和微服务)-读书笔记1的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Google Glass 初体验
- 下一篇: busybox源码介绍