我在中小型項(xiàng)目SuperCell模式實(shí)戰(zhàn)經(jīng)驗(yàn)
軟件工程師羅小東,多年平臺(tái)架構(gòu)設(shè)計(jì)和落地經(jīng)驗(yàn),這里主要是針對(duì)于中臺(tái)化項(xiàng)目交付與傳統(tǒng)項(xiàng)目交付的一些心得體會(huì)。
理念
Supercell游戲開發(fā)公司內(nèi)部有一套技術(shù)平臺(tái),旨在提供支持Supercell開發(fā)的多款游戲的共享工具、技術(shù)和基礎(chǔ)設(shè)施。這個(gè)中臺(tái)包括了各種組件和服務(wù),如玩家賬戶系統(tǒng)、社交網(wǎng)絡(luò)功能、統(tǒng)計(jì)分析工具、虛擬貨幣交易系統(tǒng)等等,這些工具和服務(wù)都可以在Supercell開發(fā)的不同游戲之間進(jìn)行共享和復(fù)用。
讓Supercell游戲開發(fā)團(tuán)隊(duì)更加專注于開發(fā)游戲本身,而無(wú)需重新開發(fā)已經(jīng)存在的功能或迎合特定游戲的需求。同時(shí),這也能夠促進(jìn)Supercell內(nèi)的知識(shí)共享和協(xié)作,并且降低整體開發(fā)成本和風(fēng)險(xiǎn),這也是中臺(tái)架構(gòu)的由來(lái)。
概述
在過(guò)去幾年中,我們一直專注于中臺(tái)架構(gòu)和項(xiàng)目的開發(fā)。尤其是在處理中小型項(xiàng)目方面,我們積累了豐富的經(jīng)驗(yàn)。以下是一個(gè)典型案例的分析,我們將從實(shí)踐中總結(jié)出的心得和經(jīng)驗(yàn)。在23年的第一季度,團(tuán)隊(duì)完成了一個(gè)約為百萬(wàn)級(jí)的大數(shù)據(jù)項(xiàng)目。我們采用中臺(tái)產(chǎn)品和ISV(業(yè)務(wù)組)合作伙伴的方式進(jìn)行交付。
SuperCell模式在交付和團(tuán)隊(duì)優(yōu)化方面有明顯的不同。只是說(shuō)感覺(jué)相對(duì)于網(wǎng)上各種理論來(lái)說(shuō),各種概念的解釋來(lái)說(shuō),原來(lái)初衷的理念更加符合,而我想要的也是這個(gè)模式,而不是網(wǎng)絡(luò)上被各種名詞和概念所淹沒(méi)的中臺(tái)模式,有時(shí)候會(huì)把一些簡(jiǎn)單的事情說(shuō)得太過(guò)于玄乎,而沒(méi)有體現(xiàn)初衷,這也是為什么標(biāo)題使用SuperCell的原因。

起初聽到芬蘭SuperCell模式時(shí),原本覺(jué)得有這個(gè)可能,但是過(guò)程當(dāng)中的體會(huì)沒(méi)那么深,對(duì)外交流的時(shí)候,各種底氣還是來(lái)自于一些材料,但是當(dāng)真正自己在用SuperCell模式(也就是中臺(tái))的時(shí)候,你會(huì)發(fā)現(xiàn),這個(gè)結(jié)構(gòu)在一定的程度上確實(shí)將團(tuán)隊(duì)的結(jié)構(gòu)還有能力進(jìn)行了優(yōu)化處理,而且整個(gè)流程過(guò)程會(huì)更加順利,這里主要從幾個(gè)角度進(jìn)行闡述:
項(xiàng)目中的中臺(tái)組織結(jié)構(gòu)是怎么樣的;
過(guò)程怎么分工處理同時(shí)做好前端的支撐;
過(guò)程的一些常見問(wèn)題和規(guī)避操作;
不同于大廠的中臺(tái)交付模式,但團(tuán)隊(duì)和經(jīng)驗(yàn)不同,因此我們只針對(duì)中小型項(xiàng)目進(jìn)行說(shuō)明,我有我思。
過(guò)程
在過(guò)程中,做了很多的職責(zé)分離,這里針對(duì)于原來(lái)的數(shù)字中臺(tái)運(yùn)營(yíng)方式來(lái)進(jìn)行,角度闡述也是從這個(gè)運(yùn)營(yíng)思路。
項(xiàng)目中的中臺(tái)組織結(jié)構(gòu)是怎么樣的
傳統(tǒng)項(xiàng)目的組織結(jié)構(gòu)會(huì)一個(gè)項(xiàng)目從各個(gè)層級(jí)跟到尾,可能管理團(tuán)隊(duì)多個(gè)方面,而這里略有不同。
在這個(gè)大數(shù)據(jù)項(xiàng)目里面,我們的組織結(jié)構(gòu)基本上對(duì)項(xiàng)目經(jīng)理的職責(zé)還有中臺(tái)人員的職責(zé)進(jìn)行了調(diào)整(這里不提商務(wù))。
在傳統(tǒng)或者一般的項(xiàng)目里面,項(xiàng)目經(jīng)驗(yàn)對(duì)接的職責(zé)和范圍可能會(huì)比較大,在項(xiàng)目組里面人員權(quán)限也比較大,調(diào)動(dòng)的人員可能從下層的開發(fā)和底層的技術(shù)人員可能都會(huì)涉及,而在中臺(tái)的組織結(jié)構(gòu)里面,我們把項(xiàng)目結(jié)構(gòu)進(jìn)行了兩層拆分,分成了中臺(tái)層和項(xiàng)目層,而項(xiàng)目經(jīng)驗(yàn)對(duì)接的只是每層的負(fù)責(zé)人。另一個(gè)是項(xiàng)目的實(shí)施過(guò)程也進(jìn)行了拆分,分多個(gè)階段,一個(gè)是中臺(tái)的產(chǎn)品交付和業(yè)務(wù)需求的實(shí)施交付,還有另一個(gè)是中臺(tái)后期的支撐。
感覺(jué)這個(gè)過(guò)程好像跟一般的項(xiàng)目過(guò)程,比如甲方乙方等實(shí)施交付區(qū)別不大,我第一感覺(jué)也是如此,但是實(shí)際并不是。

這個(gè)階段之間的分隔,在傳統(tǒng)項(xiàng)目交付里面并沒(méi)有那么明確,而且人員意識(shí)還有團(tuán)隊(duì)意識(shí),過(guò)程的溝通,交付產(chǎn)物等,各個(gè)角色支持力度等需要更加的明確,怎么說(shuō)的呢,就是在前期一些培訓(xùn)階段的時(shí)候,問(wèn)題最多不是技術(shù),反而是這個(gè)階段之間的實(shí)施問(wèn)題。常常會(huì)出現(xiàn),要么就是業(yè)務(wù)進(jìn)到中臺(tái)層里面,要么就是中臺(tái)層進(jìn)入到業(yè)務(wù)里面,類似的情況,往往是缺少階段處理的意識(shí),這個(gè)就會(huì)形成一定的交付隱患。
中臺(tái)層要做的是架構(gòu)方面和一定范圍能力的技術(shù)的支持,但是不要介入到業(yè)務(wù)里面,業(yè)務(wù)場(chǎng)景最合適的業(yè)務(wù)層的解決辦法,中臺(tái)需要提供的是平臺(tái)級(jí)的能力,因?yàn)橹信_(tái)層要支撐的不僅僅是一個(gè)項(xiàng)目,而是多個(gè)項(xiàng)目,這個(gè)需要在支撐階段提出明確的支撐能力,哪些有,哪些沒(méi)有。
業(yè)務(wù)只需要根據(jù)中臺(tái)的能力來(lái)進(jìn)行場(chǎng)景的規(guī)劃,如果需要的或者確實(shí)沒(méi)有的而一定需要用到的,或者提交需求到中臺(tái)即可,而不是等著中臺(tái)解決業(yè)務(wù)問(wèn)題,形成兩邊的死循環(huán)。
在前期的組織結(jié)構(gòu)初期,就做了明確的溝通要求了邊界,明確劃分哪個(gè)階段參與和明確提出計(jì)劃和時(shí)間。
過(guò)程怎么分工處理同時(shí)做好前端的支撐
傳統(tǒng)項(xiàng)目可能前期有需求還有原型等之類的,或者需求調(diào)研之后才會(huì)考慮到實(shí)施,這里也略有不同。
在數(shù)字中臺(tái)上會(huì)帶有一部分基礎(chǔ)的業(yè)務(wù)能力,還有一些通用的服務(wù)組件,在項(xiàng)目確定開始之后,基本上實(shí)施計(jì)劃和工作就已經(jīng)開始,另外加上是一些數(shù)據(jù)類項(xiàng)目,通用的組件更多,而我們要做的是數(shù)據(jù)輸入層,也就是數(shù)據(jù)調(diào)研和采集,這個(gè)前期都有一定的模板和樣例,在項(xiàng)目開始的前一周,實(shí)施的準(zhǔn)備條件就已開始部署,交付出第一版本給客戶演示的時(shí)候,差不多是項(xiàng)目開始后的兩三個(gè)星期左右,后面就是培訓(xùn)使用。
而這個(gè)過(guò)程業(yè)務(wù)端在進(jìn)行業(yè)務(wù)的處理的開發(fā),中間加上客戶的時(shí)間情況等等,這個(gè)業(yè)務(wù)型開發(fā)的時(shí)間在一個(gè)月左右,因?yàn)樵谥信_(tái)上也包含技術(shù)devops,在這個(gè)過(guò)程都會(huì)自動(dòng)同步到用戶測(cè)試環(huán)境,這個(gè)過(guò)程時(shí)間相對(duì)來(lái)說(shuō),也比較從容,業(yè)務(wù)團(tuán)隊(duì)過(guò)程中需要的文檔和手冊(cè)等處理,中臺(tái)團(tuán)隊(duì)會(huì)有一些培訓(xùn),這個(gè)培訓(xùn)時(shí)間大概是前面的三天左右時(shí)間。其它的就是等數(shù)據(jù)調(diào)研這部分的結(jié)果,完成之后數(shù)據(jù)采集到數(shù)據(jù)中臺(tái)里面,進(jìn)一步的分層、計(jì)算、接口等獲取到指標(biāo),輸出給業(yè)務(wù)方,這部分主要是中臺(tái)的過(guò)程中的操作,同步帶好業(yè)務(wù)端的人員怎么使用,帶好流程。

這個(gè)過(guò)程中一個(gè)比較大的體會(huì)是角色定位和分工上,還有時(shí)間點(diǎn)的把控上等都會(huì)比較明確,會(huì)有一些卡點(diǎn),但是相對(duì)于以前傳統(tǒng)項(xiàng)目方式來(lái)說(shuō),這個(gè)會(huì)更加明確。
過(guò)程有碰到的一個(gè)時(shí)間是過(guò)年時(shí)間,在這個(gè)時(shí)間后,基本上業(yè)務(wù)演示的第一版本也就出來(lái)了,在給領(lǐng)導(dǎo)層做演示,得到一定的認(rèn)可后,基本上就走驗(yàn)收流程。前后大概是兩個(gè)月的時(shí)間,其它的時(shí)間點(diǎn)會(huì)有一些運(yùn)維和管理的操作,這部分在業(yè)務(wù)上,也在移交到運(yùn)維層面上,在項(xiàng)目上投入的資源也進(jìn)一步的減少。
這個(gè)過(guò)程中的一個(gè)比較明確的體會(huì)就是時(shí)間,時(shí)間點(diǎn)上會(huì)比較明確和準(zhǔn)時(shí),如果說(shuō)業(yè)務(wù)組在缺少數(shù)據(jù)中臺(tái)產(chǎn)品的支撐和中臺(tái)團(tuán)隊(duì)的支撐,是基本上不可能在這么短的時(shí)間出的結(jié)果,而中臺(tái)團(tuán)隊(duì)沒(méi)有前期的積累也基本上不太可能會(huì)跟業(yè)務(wù)組和項(xiàng)目實(shí)施等配合得好。甚至在實(shí)施過(guò)程中,因?yàn)闃I(yè)務(wù)組一直做的是業(yè)務(wù)組件(我們把業(yè)務(wù)組件分開和微服務(wù)化),在交付實(shí)施過(guò)程才發(fā)現(xiàn)這個(gè)項(xiàng)目是一個(gè)比較大的項(xiàng)目,涉及到模塊那么多,這也是原來(lái)考慮的,業(yè)務(wù)組要做的是做好業(yè)務(wù)場(chǎng)景需求就可以,其它的中臺(tái)層給好支撐點(diǎn)。
另外一個(gè)因素是中臺(tái)和業(yè)務(wù)組的磨合,初期的項(xiàng)目會(huì)有一些磨合,如果這個(gè)過(guò)程沒(méi)有做過(guò),可能會(huì)消耗一至兩周的時(shí)間點(diǎn),這個(gè)需要考慮的。
過(guò)程的一些常見問(wèn)題和規(guī)避操作
過(guò)程一直強(qiáng)調(diào)角色和職責(zé),業(yè)務(wù)組和中臺(tái)組就做好自己的事情就可以。
在這個(gè)過(guò)程中,也會(huì)有很多的坑點(diǎn),一些不注意可能也會(huì)形成項(xiàng)目后期的問(wèn)題,類似于技術(shù)債,大致列了幾個(gè)問(wèn)題:
1. 避免讓業(yè)務(wù)組接觸太多的技術(shù)概念而忽視業(yè)務(wù)
在中臺(tái)會(huì)有很我技術(shù)概念和學(xué)習(xí)層面,這個(gè)過(guò)程容易使業(yè)務(wù)組的技術(shù)人員深入到技術(shù)層面,比如微服務(wù)、容器化、主數(shù)據(jù)、Hive等,它需要的是一個(gè)模板和使用說(shuō)明,而不是研究說(shuō)明,根據(jù)業(yè)務(wù)場(chǎng)景來(lái)進(jìn)行模板輸出就可以,后面根據(jù)個(gè)人興趣去學(xué)習(xí)即可,重點(diǎn)是給出使用案例。比如數(shù)據(jù)采集,跟業(yè)務(wù)組人員說(shuō)“發(fā)送到數(shù)據(jù)總線”可能他們會(huì)迷糊一下,但是跟他說(shuō)“發(fā)送到這個(gè)API接口”他就立馬明白。
2. 實(shí)施過(guò)程中臺(tái)文檔的產(chǎn)出
文檔材料的產(chǎn)出是過(guò)程中特別需要注意和加深的,也是中臺(tái)組的要求,這里對(duì)業(yè)務(wù)組的要求由項(xiàng)目經(jīng)理,但是中臺(tái)組的要求是一定要有文檔的產(chǎn)出,這個(gè)文檔的產(chǎn)出并不是只是一個(gè)項(xiàng)目,而是多個(gè)項(xiàng)目都有在使用的時(shí)候,這些文檔和沉淀對(duì)中臺(tái)組來(lái)說(shuō)意義就比較大,實(shí)現(xiàn)的輸出的意義也比較大,同時(shí)對(duì)文檔有比較嚴(yán)格的要求,格式還有內(nèi)容等,形成高質(zhì)量的文檔,這部分不論在哪個(gè)項(xiàng)目都做了強(qiáng)制性的要求,同時(shí)方便后期更新迭代等。
3. 避免兩個(gè)組之間互相切換和沉入
中臺(tái)切入業(yè)務(wù),業(yè)務(wù)切入中臺(tái),這個(gè)是前期特別容易出現(xiàn)的問(wèn)題,只需要一個(gè)簡(jiǎn)單的場(chǎng)景,在討論過(guò)程中,如果沒(méi)有這個(gè)意識(shí),就會(huì)變成中臺(tái)組在做業(yè)務(wù)組件開發(fā)的情況出來(lái),或者業(yè)務(wù)組提要求了,然后中臺(tái)組根據(jù)特定(注意是特定)修改中臺(tái)組件的情況,后面一種是我們特別容易出現(xiàn)的,而且也特別頭大,有些情況下確確實(shí)實(shí)是中臺(tái)組加個(gè)字段或者加個(gè)功能會(huì)比較簡(jiǎn)單,但是這個(gè)屬性是某業(yè)務(wù)特有的,實(shí)際上這個(gè)過(guò)程從業(yè)務(wù)組做維護(hù)會(huì)更好。比如我們會(huì)用電信廠家的接口發(fā)送短信,而不會(huì)給個(gè)單獨(dú)給某個(gè)業(yè)務(wù)設(shè)置接口,除非說(shuō)這個(gè)接口有多行業(yè)公共的屬性,那再統(tǒng)一集成。
當(dāng)然,還有周期、工時(shí)、支撐、商務(wù)等挺多方面,這些主要依賴于過(guò)程的團(tuán)隊(duì)的情況和管理方式進(jìn)行處理,這里就不做過(guò)多的闡述。
總結(jié)
在前期多個(gè)中小型項(xiàng)目中,我們建設(shè)中臺(tái)體系的過(guò)程雖然有聽說(shuō)中臺(tái)模式的好處和優(yōu)勢(shì),但是身邊比較少成功的案例(除了一些大廠),或者說(shuō)在使用了并沒(méi)有發(fā)揮出它本身應(yīng)該有的作用,結(jié)合起來(lái)發(fā)現(xiàn)并沒(méi)有達(dá)到降本增效的層面,反而發(fā)現(xiàn)過(guò)程更加復(fù)雜和麻煩,最后發(fā)現(xiàn)可能還沒(méi)有原來(lái)單體應(yīng)用的簡(jiǎn)單。
這些以前見到其它陷入的比較多,從自己的心得來(lái)說(shuō),這些是一個(gè)過(guò)程點(diǎn),但是要達(dá)到終點(diǎn),這個(gè)需要比較大的,而且長(zhǎng)期的團(tuán)隊(duì)實(shí)戰(zhàn)和不斷迭代升級(jí)過(guò)程,上面是在這方面的心得體會(huì),希望可能給一些參考。?