軟件工程師羅小東罐栈,多年平臺(tái)架構(gòu)設(shè)計(jì)和落地經(jīng)驗(yàn)豪嗽,以下針對(duì)于中小微團(tuán)隊(duì)在數(shù)字中臺(tái)的實(shí)踐管理外厂,主要偏于實(shí)操描述冕象。
背景
這里的產(chǎn)品并不是互聯(lián)網(wǎng)運(yùn)營(yíng)的,而是內(nèi)部研發(fā)產(chǎn)品汁蝶,后期用于項(xiàng)目渐扮。
數(shù)字中臺(tái)產(chǎn)品管理,產(chǎn)品線大概有20個(gè)掖棉,產(chǎn)品工程管理基線是50個(gè)左右墓律,自動(dòng)化任務(wù)大概有250+個(gè),當(dāng)前維護(hù)ACP產(chǎn)品的屬于微小團(tuán)隊(duì)啊片,當(dāng)前產(chǎn)品線的管理維護(hù)人員為6個(gè)人只锻,主要偏向于產(chǎn)品功能的優(yōu)化管理和升級(jí)玖像,前端ISV團(tuán)隊(duì)的支撐紫谷,項(xiàng)目的技術(shù)支撐,還有針對(duì)于運(yùn)行的數(shù)據(jù)治理上的二次開發(fā)(比如基于日志分析的安全感觸服務(wù))捐寥,配合商務(wù)的輸出等笤昨。
過程的管理主要是基于過程規(guī)范標(biāo)準(zhǔn)化、自動(dòng)化操作握恳、微服務(wù)瞒窒、容器化管理、數(shù)字中臺(tái)架構(gòu)乡洼、云計(jì)算等崇裁。
概述
在這個(gè)建設(shè)過程中,基于原來alinesno-cloud開源項(xiàng)目進(jìn)行升級(jí)優(yōu)化束昵,這里主要是針對(duì)在過程的實(shí)踐情況拔稳,還有團(tuán)隊(duì)的使用情況,包括主要使用的技術(shù)能力锹雏,運(yùn)維管理巴比,運(yùn)營(yíng)管理等,以低成本進(jìn)行運(yùn)維,提升團(tuán)隊(duì)的能力的競(jìng)爭(zhēng)力轻绞,希望可以給一些在往這塊方向的團(tuán)隊(duì)一些參考采记,在這個(gè)過程中主要使用的技術(shù)場(chǎng)景如下:
規(guī)范化標(biāo)準(zhǔn)化:工程過程的標(biāo)準(zhǔn)化和規(guī)劃化,規(guī)避掉培訓(xùn)成本政勃,管理成本唧龄,學(xué)習(xí)成本、升級(jí)成本的問題奸远,形成統(tǒng)一化选侨,比如在升級(jí)只需要調(diào)整核心包即可。
微服務(wù):工程的劃分會(huì)提高運(yùn)行的穩(wěn)定性然走,根據(jù)場(chǎng)景各個(gè)服務(wù)可拆分援制,可組件,規(guī)避工程的耦合芍瑞,還有管理職責(zé)分開等晨仑,還有微服務(wù)的性能還有分布式等能力
自動(dòng)化:主要是人工的解放,還有流程標(biāo)準(zhǔn)化的自動(dòng)化拆檬,規(guī)避掉一些低級(jí)的人工錯(cuò)誤洪己,操作成本等,比如過程的流水化竟贯、備份管理答捕、日志清理、數(shù)據(jù)抽取等屑那。
容器化:這里主要是服務(wù)的發(fā)布管理和部署低成本拱镐,還有工程版本的維護(hù),一鍵部署的管理持际,運(yùn)行監(jiān)控沃琅,比如鏈路跟蹤,客戶項(xiàng)目發(fā)布等蜘欲。
數(shù)字中臺(tái)架構(gòu):基礎(chǔ)技術(shù)組件和數(shù)據(jù)治理組件的融合益眉,對(duì)項(xiàng)目業(yè)務(wù)上進(jìn)行數(shù)字化解決方案和項(xiàng)目的數(shù)據(jù)治理、規(guī)范處理姥份、還有業(yè)務(wù)項(xiàng)目開發(fā)的管理等郭脂。
運(yùn)行監(jiān)控:這里主要是運(yùn)維上的預(yù)警管理、還有運(yùn)行狀態(tài)巡檢澈歉、應(yīng)用存活的管理等展鸡。
這里闡述主要通過幾個(gè)方面進(jìn)行實(shí)踐闡述,偏向于落地:
標(biāo)準(zhǔn)化和規(guī)劃化的要求闷祥,怎么樣做到項(xiàng)目和工程架構(gòu)的統(tǒng)一娱颊,怎么樣要求落地傲诵。
基礎(chǔ)環(huán)境能力的搭建,使用的資源有多少箱硕,后期怎么管理拴竹。
產(chǎn)品的迭代升級(jí)管理,還有過程怎么降低產(chǎn)品管理成本剧罩。
項(xiàng)目交付實(shí)施的過程是怎么樣的栓拜,怎么做項(xiàng)目交付支撐。
以上的所有操作過程基于整個(gè)DevOps/GitOps/DataOps架構(gòu)進(jìn)行整合惠昔,過程形成流水線管理幕与,每個(gè)架構(gòu)師設(shè)計(jì)有自己的情況,我有我思镇防。
過程實(shí)踐
這里通過幾個(gè)階段過程啦鸣,將過程節(jié)點(diǎn)進(jìn)行細(xì)化說明,以下為主要維護(hù)產(chǎn)品的團(tuán)隊(duì)来氧。
標(biāo)準(zhǔn)化和規(guī)劃化的要求诫给,怎么樣做到項(xiàng)目和工程架構(gòu)的統(tǒng)一,怎么樣要求
如果說這個(gè)制定過程需要做很多部門啦扬、溝通中狂、還有使用過程問題矛盾等,那就規(guī)避掉這些扑毡。
前幾次在其它團(tuán)隊(duì)做平臺(tái)的時(shí)候胃榕,前期最大的問題,就是溝通和團(tuán)隊(duì)人員的提升瞄摊,這個(gè)會(huì)花掉很多力氣勋又,特別是在意見上幾乎很難統(tǒng)一,團(tuán)隊(duì)越大泉褐,這個(gè)問題就越突出赐写,會(huì)給培訓(xùn)、還有各種技術(shù)思維的輸入等膜赃,做好前期的準(zhǔn)備。但是這個(gè)成本在中小團(tuán)隊(duì)成本是極高的揉忘,而且還有一個(gè)問題是人員流失的問題跳座,培養(yǎng)出來了人走了,后來換了一個(gè)思路泣矛,做這塊的只需要一兩個(gè)高級(jí)人員疲眷,后期提供出代碼生成器和標(biāo)準(zhǔn)文檔,發(fā)給項(xiàng)目組和開發(fā)就行您朽,其它的人員并不需要特別關(guān)注狂丝。
比如開發(fā)人員一定要會(huì)使用微服務(wù)换淆?一定要會(huì)springcloud的么?其實(shí)不然几颜,自己并不一定需要學(xué)習(xí)這個(gè)倍试,會(huì)寫controller,還有查詢mybatis編寫即可蛋哭,后面學(xué)習(xí)中會(huì)有遇到县习,這個(gè)過程可以做到無感。
開發(fā)人員會(huì)主動(dòng)去查詢材料和學(xué)習(xí)谆趾,主動(dòng)跟被動(dòng)的區(qū)別躁愿,效果差異是極大的,后面定義好崗位職責(zé)的考核沪蓬,根據(jù)過程做適當(dāng)?shù)呐嘤?xùn)彤钟,這個(gè)過程團(tuán)隊(duì)成長(zhǎng)更快。
標(biāo)準(zhǔn)化前期部分主要參考社區(qū)的流程跷叉,還有架構(gòu)也一樣样勃,但是這些不要緊,先有一版本性芬,技術(shù)還有能力很快就會(huì)沉淀在前期架構(gòu)的人員上峡眶,這個(gè)過程會(huì)不斷的迭代,所以在這塊上的選人是很重要植锉,至少能總結(jié)和有興趣辫樱,有優(yōu)化的主動(dòng)性。在建設(shè)出來一版本標(biāo)準(zhǔn)規(guī)范之后俊庇,將代碼做核心公共包的封裝狮暑,再加上代碼生成器,出來即是規(guī)范辉饱,幾乎是可以做到對(duì)團(tuán)隊(duì)人員的無感知搬男。
這個(gè)過程差不多1個(gè)月左右。
在前期的框架封裝上避免過度封裝彭沼,這個(gè)是新人架構(gòu)師的一個(gè)痛點(diǎn)缔逛,會(huì)有非常多的idea,但是前期基本上都禁掉了姓惑,換成的思路是先出一版簡(jiǎn)版的褐奴,再根據(jù)一些項(xiàng)目過程中,了解問題于毙,再進(jìn)一步的升級(jí)封裝敦冬。
這個(gè)過程經(jīng)歷過1個(gè)項(xiàng)目就基本上就比較成熟,包括架構(gòu)人員唯沮,具體時(shí)間看項(xiàng)目的情況脖旱。這個(gè)過程會(huì)遇到一些問題堪遂,也是允許的,這個(gè)是之前的培訓(xùn)成本遺留下來導(dǎo)致的萌庆,這個(gè)時(shí)候可以多一些使用培訓(xùn) 溶褪,針對(duì)問題來進(jìn)行統(tǒng)一的培訓(xùn)或者指導(dǎo)處理,過程多與團(tuán)隊(duì)溝通解決掉即可踊兜。
基礎(chǔ)環(huán)境能力的搭建竿滨,使用的資源有多少,后期怎么管理
這里基礎(chǔ)環(huán)境搭建分幾個(gè)部分捏境,一個(gè)是devops/gitops/dataops的環(huán)境搭建于游,還有公共服務(wù)組件的發(fā)布搭建,比如數(shù)據(jù)治理組件垫言、技術(shù)組件贰剥、運(yùn)維組件等。
這也是基于規(guī)范標(biāo)準(zhǔn)的要求筷频,比如自動(dòng)發(fā)布管理蚌成,這里做成參數(shù)型的配置,還有數(shù)據(jù)抽取組件也一樣凛捏,做成腳本型和參數(shù)型的設(shè)計(jì)担忧,使用Git統(tǒng)一的管理,主要是為了更好的做好記錄坯癣,權(quán)限瓶盛,留痕等,結(jié)合jenkins整合起來的示罗,包括運(yùn)維腳本惩猫、CICD、數(shù)據(jù)抽取等蚜点,使用人員比較少轧房,所以在這塊上的資源壓力倒不大。
目前整個(gè)環(huán)境使用了3臺(tái)服務(wù)器绍绘,主要是一臺(tái)jenkins/技術(shù)組件/數(shù)據(jù)組件奶镶,主要的配置如下:
自動(dòng)化服務(wù)(Jenkins): 16G內(nèi)存/8C/250G磁盤
技術(shù)組件:16G內(nèi)存/4C/80G磁盤
數(shù)據(jù)治理組件:32G內(nèi)存/8C/1024G磁盤
這主要是得益于微小團(tuán)隊(duì)的產(chǎn)品開發(fā)維護(hù),另外我們數(shù)據(jù)倉(cāng)庫(kù)并不一定要求使用Hadoop套件脯倒,而且針對(duì)項(xiàng)目情況來進(jìn)行適配選型实辑,所以這并不是很大的壓力,而且一些高峰的操作藻丢,比如備份和巡檢、數(shù)據(jù)抽取等會(huì)在晚上執(zhí)行摄乒。
在實(shí)際項(xiàng)目中悠反,會(huì)根據(jù)項(xiàng)目的情況抽取產(chǎn)品部署残黑,這主要利益于微服務(wù)架構(gòu),可拆分的能力斋否,將耦合降到最低梨水,比如有些可能需要的數(shù)據(jù)組件只有一兩個(gè),那就部署一兩個(gè)茵臭,做好對(duì)應(yīng)的適配資源即可疫诽。以降低項(xiàng)目成本和維護(hù)成本,還有客戶成本等旦委。
這個(gè)過程的管理基本上是寫好腳本之后奇徒,就根據(jù)監(jiān)控即可,這里集成了釘釘缨硝,主要是方便管理摩钙,這個(gè)任務(wù)大概是250多個(gè)任務(wù),基本上都是利益于GitOps的理念查辩,這里需要的是它的理念胖笛,然后整合起來的,過程主要是針對(duì)于Git基線宜岛,而不是需要針對(duì)于所有长踊,從Git流程的最終結(jié)果是釘釘通知,這樣以降低學(xué)習(xí)成本還有規(guī)避掉過多的人工操作萍倡。
這個(gè)的搭建和規(guī)范建設(shè)身弊,大概是2個(gè)星期左右,當(dāng)然遣铝,這主要得益于經(jīng)驗(yàn)的積累佑刷,只需要做調(diào)試,如果從零開始酿炸,可能需要1-2個(gè)月左右考慮會(huì)比較合適瘫絮。
產(chǎn)品的迭代升級(jí)管理,還有過程怎么降低產(chǎn)品管理成本
這里類似于運(yùn)營(yíng)管理填硕,這里的運(yùn)營(yíng)主要是指內(nèi)部團(tuán)隊(duì)的運(yùn)營(yíng)麦萤,將ISV和其它部門當(dāng)做客戶即可。
這里的組件比較多扁眯,針對(duì)于微型團(tuán)隊(duì)來說壮莹,如果沒有統(tǒng)一的基礎(chǔ)設(shè)施和規(guī)范是很難的,這里主要是利益于微服務(wù)架構(gòu)和容器化管理姻檀,還有中臺(tái)架構(gòu)思維命满。
公共和基礎(chǔ)服務(wù)已經(jīng)將大部分非業(yè)務(wù)邏輯的都做了,也抽取成公共的服務(wù)能力绣版,比如日志胶台、登陸歼疮、公共權(quán)限、前端埋點(diǎn)诈唬、數(shù)據(jù)抽取韩脏、監(jiān)控等,都已經(jīng)是打成基礎(chǔ)的能力铸磅,每個(gè)服務(wù)都是可以一開始就擁有這些能力赡矢,也可拔插,主要升級(jí)組件內(nèi)的邏輯阅仔,比如集成監(jiān)控吹散。
當(dāng)然還有很多。
將公共組件進(jìn)行沉淀霎槐,在各個(gè)產(chǎn)品只需要送浊,也只能保留業(yè)務(wù)部分,而且一定不能過分的建設(shè)每個(gè)組件的公共部分丘跌,這樣會(huì)導(dǎo)致后期的升級(jí)和版本管理的困難袭景,這也是中小微團(tuán)隊(duì)的靈活性,就是因?yàn)樾”帐鳎谡{(diào)整的時(shí)候耸棒,可以統(tǒng)一,每次升級(jí)會(huì)把需要調(diào)整的部分列出來报辱,然后發(fā)給對(duì)應(yīng)的組件即可∮胙辏現(xiàn)在基本上是調(diào)整版本號(hào)即可,因?yàn)楣膊糠值某槿∫呀?jīng)很好了碍现,比如前端幅疼,后臺(tái),還有ORM層等昼接,基本上業(yè)務(wù)組件并不需要調(diào)整爽篷。
另一種是功能的升級(jí),這個(gè)過程根據(jù)業(yè)務(wù)調(diào)整單獨(dú)組件即可慢睡,小的功能升級(jí)會(huì)做好接口的兼容逐工,大的單獨(dú)提供出新的接口,同時(shí)加上版本號(hào)漂辐。在這部分比較擔(dān)心的是穩(wěn)定性泪喊,所以在工程模塊上的劃分,也是做了嚴(yán)格的限制髓涯,也主要得益于DDD架構(gòu)思維袒啼,但并不是完全照搬,而是根據(jù)實(shí)際做了調(diào)整,取其優(yōu)勢(shì)即可瘤泪,工程模塊如下:
這里抽取了一個(gè)domain服務(wù)組件灶泵,這個(gè)服務(wù)組件一定要資深人員才能處理育八,其它的非核心邏輯都在gateway和provide模塊里面对途,調(diào)用domain工程的寫好的邏輯,其它的人員寫前端和接口即可髓棋。
這么做的原因是為確保服務(wù)的穩(wěn)定性实檀,以前遇到過挺多類似的情況,初級(jí)的維護(hù)人員和經(jīng)驗(yàn)不足的碰到和核心服務(wù)的邏輯按声,但是熟悉程度不夠膳犹,導(dǎo)致了很多不穩(wěn)定的因素,在這塊上是做了很嚴(yán)格的要求限制签则。
實(shí)在不行须床,就重寫接口,但是不會(huì)影響到核心邏輯渐裂,核心邏輯部分主要是由更高一級(jí)的人員來編寫維護(hù)的豺旬,一個(gè)是編碼的質(zhì)量,另一個(gè)是穩(wěn)定性柒凉,以確保后期的產(chǎn)品的質(zhì)量族阅。
基于上面的技術(shù)思維和管理規(guī)范,組件的升級(jí)膝捞,比如當(dāng)前的國(guó)產(chǎn)庫(kù)適配坦刀、漏洞的升級(jí)等基本上是調(diào)整核心包的版本號(hào)即可,功能的升級(jí)也是通過核心和外圍接口兩個(gè)概念進(jìn)行區(qū)別蔬咬,不需要說再花時(shí)間去深入到模塊和業(yè)務(wù)等鲤遥,調(diào)用接口實(shí)現(xiàn)。
提交代碼之后林艘,就是走剛剛上面提到自動(dòng)化流程盖奈,等釘釘通知和容器監(jiān)控狀態(tài),然后結(jié)合界面測(cè)試北启。
項(xiàng)目交付實(shí)施的過程是怎么樣的卜朗,怎么做項(xiàng)目交付支撐
這個(gè)是數(shù)字中臺(tái)價(jià)值輸出體現(xiàn)之一,主要是偏向于跟ISV團(tuán)隊(duì)的整合咕村,讓ISV團(tuán)隊(duì)主要考慮業(yè)務(wù)邏輯的事情场钉。這里主要提供幾個(gè)能力:
產(chǎn)品使用培訓(xùn)還有技術(shù)架構(gòu)方案支撐
過程涉及數(shù)字中臺(tái)產(chǎn)品的技術(shù)架構(gòu)和解決
需求的適配的一些功能開發(fā)或者問題處理
商務(wù)上的文檔支撐和客戶講解
….
通過以上為ISV團(tuán)隊(duì)賦能,主要的目標(biāo)是項(xiàng)目的落地懈涛,提升ISV的能力提升逛万,這也是數(shù)字中臺(tái)的價(jià)值體現(xiàn)之一。
ISV團(tuán)隊(duì)要考慮的是業(yè)務(wù),而我們主要的目標(biāo)是不要讓他們深入到技術(shù)宇植、還有非業(yè)務(wù)性的內(nèi)容上得封,同時(shí)提升出好的工具給他們。
這樣更好的進(jìn)行區(qū)分職責(zé)邊界指郁,這個(gè)其實(shí)也是個(gè)矛盾點(diǎn)忙上。目前是通過代碼生成器生成出業(yè)務(wù)組件,然后在這個(gè)組件里面只包含業(yè)務(wù)闲坎,其它非技術(shù)的組件交互(比如賬號(hào)權(quán)限)通過Api來進(jìn)行處理障斋,有哪個(gè)API就有哪個(gè)能力症革,以規(guī)避掉職責(zé)不清的問題。
業(yè)務(wù)組與整個(gè)數(shù)字中臺(tái)進(jìn)行對(duì)接的是Git還有可視化的界面,并不需要它關(guān)注太多的東西秸谢,業(yè)務(wù)邏輯提交到Git之后宛渐,其它的流水線會(huì)自動(dòng)走下來牍戚,然后得到對(duì)應(yīng)的訪問鏈接即可伦仍。
而數(shù)字中臺(tái)就使用產(chǎn)品型的交付,根據(jù)項(xiàng)目情況進(jìn)行服務(wù)的抽取怖喻,其它的商務(wù)不做太多的接觸底哗,只需要關(guān)注數(shù)字中臺(tái)產(chǎn)品體系的內(nèi)容,一個(gè)是沉淀罢防,另一個(gè)是項(xiàng)目涉及到的面比較多艘虎,避免平臺(tái)人員沉入到里面,而無法抽出咒吐,同時(shí)也規(guī)避掉ISV團(tuán)隊(duì)過度依賴平臺(tái)人員野建,為后期的維護(hù)考慮。
這里也有一個(gè)特別需要注意的項(xiàng)恬叹,就是職責(zé)角色一定要區(qū)分候生,不能互相深入,比如平臺(tái)人員做項(xiàng)目的事情绽昼,項(xiàng)目人員做平臺(tái)的事情唯鸭,這會(huì)無形中增大成本和提高項(xiàng)目風(fēng)險(xiǎn),可能會(huì)導(dǎo)致后期的管理混亂硅确,商務(wù)和項(xiàng)目上糾結(jié)不清目溉,如果項(xiàng)目更多的的,會(huì)以提工單的形式來進(jìn)行反饋菱农,比如需求和問題缭付。
這個(gè)過程一般是在項(xiàng)目前期一兩個(gè)星期會(huì)有比較多的溝通,ISV后期和熟悉之后循未,后面的合適會(huì)比較順利陷猫,即使是在ISV新人切入,這個(gè)過程成本也會(huì)低很多。
總結(jié)
數(shù)字中臺(tái)本身是一個(gè)很大的概念绣檬,但是在過程怎么使用和抽取足陨,還有適配團(tuán)隊(duì),其實(shí)并不代表會(huì)有一個(gè)非常高的成本管理娇未,而是根據(jù)團(tuán)隊(duì)來進(jìn)行適配墨缘,以體驗(yàn)和獲取到云原生時(shí)代、新技術(shù)的便捷紅利忘蟹,以提升團(tuán)隊(duì)的技術(shù)能力飒房、競(jìng)爭(zhēng)能力、還有新的商業(yè)模式媚值,在數(shù)字化的時(shí)代做好準(zhǔn)備,以適應(yīng)當(dāng)前行業(yè)的發(fā)展护糖。
以上為在數(shù)字中臺(tái)建設(shè)和管理的一些實(shí)踐褥芒,希望可以給一些在往這塊方向的團(tuán)隊(duì)一些參考。