自己為什么要從零開(kāi)始搭建企業(yè)級(jí)的統(tǒng)一研發(fā)平臺(tái)和中臺(tái)架構(gòu)設(shè)計(jì)

從零開(kāi)始搭建的意思,就是從需求分析,系統(tǒng)規(guī)劃,設(shè)計(jì)分析和落地實(shí)踐幾個(gè)步驟,從無(wú)到有的過(guò)程??紤]左右,為了個(gè)人學(xué)習(xí)和提升,選型基于流行的springboot+springcloud,從零開(kāi)始搭建一套自己用于學(xué)習(xí)的研發(fā)平臺(tái)。

整體平臺(tái)的流程,從管理、開(kāi)發(fā)、測(cè)試、運(yùn)維、生產(chǎn)幾條線,實(shí)現(xiàn)整體平臺(tái)的落地和管理,下面是整體研發(fā)平臺(tái)架構(gòu)。

整個(gè)研發(fā)平臺(tái)架構(gòu)設(shè)計(jì)

整個(gè)研發(fā)平臺(tái)產(chǎn)物:https://gitee.com/landonniao

整體研發(fā)平臺(tái)使用的基線規(guī)劃如下

平臺(tái)所有基線及所有項(xiàng)目目錄結(jié)構(gòu),整體從零開(kāi)始進(jìn)行平臺(tái)基線搭建及規(guī)劃,多個(gè)基線的規(guī)劃,考慮更合適多個(gè)崗位角色的管理

一、個(gè)人為什么要搭建一個(gè)統(tǒng)一研發(fā)平臺(tái)

1、為了有方向感,不迷茫,不浪費(fèi)時(shí)間,有可行的學(xué)習(xí)計(jì)劃

上大學(xué)的時(shí)候,就開(kāi)始學(xué)習(xí)計(jì)算機(jī),從基礎(chǔ)的Java到Java web,再到框架,再到在學(xué)校接一些小項(xiàng)目,如企業(yè)網(wǎng)站,兼職網(wǎng),報(bào)名網(wǎng)站等,這幾步路大概走了2年左右,而在學(xué)完兩年之后,人還是很迷茫,方向感還不是特別強(qiáng),而在找方向和突破迷茫上面,走過(guò)了很多彎路,終于找到點(diǎn)方向。后來(lái)才發(fā)現(xiàn),很多這個(gè)專業(yè)的同學(xué),可能畢業(yè)幾年之后,依然還找不到方向和定位,東學(xué)一點(diǎn)西學(xué)一點(diǎn),很浪費(fèi)時(shí)間,可能醒悟的時(shí)候,已經(jīng)過(guò)了3~5年,很難再轉(zhuǎn)回頭。

2、為了在工作和學(xué)習(xí)過(guò)得中不斷積累和提高學(xué)習(xí)效率

學(xué)習(xí)和工作的幾年里,幾乎每個(gè)項(xiàng)目,資料,文檔,規(guī)范都是有共性的,而由于各個(gè)項(xiàng)目的不統(tǒng)一,在接收新項(xiàng)目的,幾乎都從零開(kāi)始,一些非功能性需求的建設(shè)已經(jīng)占去了實(shí)際項(xiàng)目的很多時(shí)間,投入需求建設(shè)的時(shí)間其實(shí)沒(méi)多少,最簡(jiǎn)單的,代碼的CURD都是一樣,自己在做的時(shí)候,針對(duì)每個(gè)項(xiàng)目都有改進(jìn),比如這個(gè)項(xiàng)目統(tǒng)一了CURD,那個(gè)項(xiàng)目梳理出了公共代碼,但是項(xiàng)目是分開(kāi)的,最終新的項(xiàng)目,也是從零開(kāi)始或者復(fù)制,再加上人工,手工,人肉運(yùn)維,不斷的繁瑣而簡(jiǎn)單的工作的學(xué)習(xí)中無(wú)法脫身,影響進(jìn)入下一步學(xué)習(xí)。這類似于溫水煮青蛙,沒(méi)有感覺(jué),可能慢慢拖死自己,特別是做項(xiàng)目的前兩年,除了數(shù)據(jù)的添加刪除,還是這些。重復(fù)開(kāi)發(fā),無(wú)法共用這些都消耗了很長(zhǎng)的時(shí)間。比如一直想學(xué)大數(shù)據(jù),但是由于沒(méi)有好的平臺(tái)依托,目前還是無(wú)法投入學(xué)習(xí)。

3、為了可以總結(jié)和反思,可以不斷的打磨出一個(gè)平臺(tái),一個(gè)產(chǎn)品或者一個(gè)精品

這幾年的工作和學(xué)習(xí)中,有很多都是在學(xué)習(xí),在努力,也很上進(jìn),資料有不計(jì)其數(shù),但是卻在用的時(shí)候,沒(méi)有深入或者精通某一個(gè)模塊,最常見(jiàn)的,連自己精通的模塊都無(wú)法界定,不自信,沒(méi)有自己的深入心得,比較浮在表面上。自己近乎有兩年的狀態(tài)如此,一直在努力,但是卻一直沒(méi)有達(dá)到預(yù)期的,別人認(rèn)可的效果,接觸的面好像很多,但是卻沒(méi)有哪一樣是完全吃透的。最終發(fā)現(xiàn)的原因是沒(méi)有做好總結(jié)和復(fù)習(xí),反思,一個(gè)知識(shí)點(diǎn)以為看過(guò)了就懂,但是沒(méi)有結(jié)合實(shí)際進(jìn)行提煉與打磨,沒(méi)有吃透,就往下一個(gè)模塊,最終導(dǎo)致好像不斷的在撿東西,但最終這些東西都不是自己的。所以需要打磨自己的東西,能談出自己心得,這就是自己的產(chǎn)品,就是自己的精品,或者自己就一個(gè)精品。

4、為了擴(kuò)大自己的視野和學(xué)習(xí)心態(tài),開(kāi)放心態(tài)

學(xué)習(xí)中最怕和就是無(wú)溝通與交流,沒(méi)有他人的指點(diǎn)和自己的固步自封,坐井觀天等心態(tài),在學(xué)得一些技術(shù)之后,開(kāi)始自以為自,然后偏向于安逸。明顯,這種心態(tài)自己曾經(jīng)有過(guò),而且持續(xù)很長(zhǎng)一段時(shí)間。這間接造成不管是溝通、技術(shù)方面都慢慢出現(xiàn)問(wèn)題。自己一直相信,心態(tài)有多開(kāi)放,有多寬容,幫助的人越多,自己也才更好的成長(zhǎng),不管是技術(shù)還是管理,包括生活等。

二、個(gè)人需要搭建怎么樣的研發(fā)平臺(tái)來(lái)學(xué)習(xí)

1、可以隨時(shí)隨地的學(xué)習(xí),只要有網(wǎng)絡(luò)和電腦,就可以學(xué)習(xí)

閑碎的時(shí)間常常存在,比如學(xué)校上機(jī),看手機(jī),還有一些無(wú)聊的聚會(huì),甚至上廁所,這些都要能可以用來(lái)學(xué)習(xí),網(wǎng)絡(luò)現(xiàn)在無(wú)處不在,有個(gè)手機(jī)就可以上網(wǎng),所以這些時(shí)間要能充分利用起來(lái)。

2、可以好的工具和學(xué)習(xí)環(huán)境

學(xué)習(xí)過(guò)程,工具的成熟度和熟練程度很多時(shí)間影響到自己的學(xué)習(xí)效率。比如vim的配置使用,熟練之后,不管在編輯和代碼方面,速度都比一般的操作快得多。還有jenkins,在這個(gè)工具上不斷的學(xué)習(xí)和積累,不管是配置和權(quán)限,發(fā)布,運(yùn)維,分布式都能很大的幫助,同時(shí)節(jié)省很多時(shí)間。

3、可以不斷的學(xué)習(xí)目標(biāo),最好從基礎(chǔ)程序員到總監(jiān)

學(xué)習(xí)有一個(gè)從零開(kāi)始,到不斷往上的過(guò)程,并且有目標(biāo),知道每個(gè)目標(biāo)階段需要什么樣的技術(shù),能力,成長(zhǎng)時(shí)間等,做到心知肚明,不浪費(fèi)多余時(shí)間 。可以不斷的有學(xué)習(xí)積累,在積累上由量變到質(zhì)變

5、可以不斷的跟外界溝通交流,避免閉門(mén)造車,固步自封

需要不斷的與外部學(xué)習(xí),獲取到外部的建議,看到自己的不足,同時(shí)也看到自己的優(yōu)點(diǎn)。在自己不斷學(xué)習(xí)的過(guò)程中,同時(shí)不斷的成果,并讓別人看到,給自己提建議,在自己把自己的思路成果對(duì)外貢獻(xiàn)的同時(shí),別人也一樣幫自己提升。

三、研發(fā)平臺(tái)怎么搭建,搭建到什么樣的程度

搭建的思路都是先有一稿,然后再后期慢慢在這一稿上面做好優(yōu)化,同時(shí)參考當(dāng)前社會(huì)主流技術(shù),便于學(xué)習(xí)。

1、制定整體學(xué)習(xí)規(guī)劃和學(xué)習(xí)路線,技術(shù)路線和成長(zhǎng)規(guī)劃

平臺(tái)構(gòu)建過(guò)程中,產(chǎn)生大量的技術(shù)產(chǎn)物和管理產(chǎn)物,而在大量的項(xiàng)目過(guò)程中,同時(shí)也會(huì)產(chǎn)生大量的問(wèn)題導(dǎo)致過(guò)程中細(xì)節(jié)的不完善,人為的不完善及限制,導(dǎo)致平臺(tái)無(wú)法正常管理和運(yùn)維,開(kāi)發(fā)平臺(tái)的管理規(guī)劃即針對(duì)整體平臺(tái)的運(yùn)維管理進(jìn)行的建議,以達(dá)到管理統(tǒng)一有序,過(guò)程明確,產(chǎn)物明確,目標(biāo)明確等

從需求->準(zhǔn)備->組織->開(kāi)發(fā)<->內(nèi)部測(cè)試<->用戶測(cè)試<->自動(dòng)測(cè)試->生產(chǎn)(試運(yùn)行)->生產(chǎn)->運(yùn)維整個(gè)流程完善,每個(gè)流程中又包括多個(gè)工作,如需求管理,同時(shí)每個(gè)工具必然有一定的產(chǎn)物,如需求管理的產(chǎn)物是需求管理基線和需求文檔。

為達(dá)到以上的要求,也為了過(guò)程有記錄和沉淀,考慮一些必要性的管理工具,暫時(shí)考慮以下幾個(gè)工具:

以下為文檔管理基線示例

2、制定持續(xù)集成環(huán)境,為學(xué)習(xí)提供基礎(chǔ)的準(zhǔn)備和提升效率

持續(xù)集成他一套比較成熟的自動(dòng)化研發(fā)解決方案,使用也有幾年時(shí)間,不同的人有不同的設(shè)計(jì),有些可能只是發(fā)布工程,這里針對(duì)于需求、開(kāi)發(fā)、測(cè)試、文檔、運(yùn)維幾個(gè)維度,進(jìn)行了整合,同時(shí)也制定和管理方案,以達(dá)到基礎(chǔ)規(guī)范?–?組織結(jié)構(gòu)?–?基礎(chǔ)架構(gòu)?–?業(yè)務(wù)開(kāi)發(fā)?–?持續(xù)集成–?自動(dòng)化部署–?自動(dòng)化測(cè)試?–?生產(chǎn)運(yùn)維監(jiān)控?–?在線升級(jí)?幾個(gè)方向自動(dòng)化,這里不得不提一下Jenkins+git,確實(shí)是整個(gè)自動(dòng)化的核心。目前考慮了一下這些工具,針對(duì)于開(kāi)發(fā)的:

自動(dòng)化持續(xù)集成的效果如下:

文檔持續(xù)集成效果如下:

3、下載和整理軟件工具,整理軟件工具版本

基礎(chǔ)環(huán)境完善及配置,為整個(gè)開(kāi)發(fā)平臺(tái)做基礎(chǔ),以環(huán)境搭建為主,為本地開(kāi)發(fā)環(huán)境。

使用的阿里云服務(wù)器規(guī)劃如下:

規(guī)劃的使用工具如下:

4、規(guī)劃平臺(tái)非功能性需求組件,包括基礎(chǔ)組件等

功能重用,組件重用,目前最好的技術(shù)承載就是微服務(wù)了,這也是這幾年才出現(xiàn),這樣規(guī)劃研發(fā)平臺(tái)構(gòu)架,對(duì)我而言,微服務(wù)架構(gòu)自然成為不二的選擇(后面的中臺(tái)業(yè)務(wù)也是在微服務(wù)上進(jìn)行進(jìn)程創(chuàng)建)

服務(wù)設(shè)計(jì)原則

服務(wù)單庫(kù)設(shè)計(jì),以減少遷移,服務(wù)之前影響等;?

基礎(chǔ)服務(wù)只為調(diào)用設(shè)計(jì),位于服務(wù)的底層或者中間層,基礎(chǔ)服務(wù)禁止調(diào)用業(yè)務(wù)服務(wù);

業(yè)務(wù)服務(wù)調(diào)用基礎(chǔ)服務(wù),或者其它服務(wù),業(yè)務(wù)服務(wù)為服務(wù)的頂層,用于定制化業(yè)務(wù);

同一級(jí)服務(wù)之間可以互相調(diào)用,只能自下往下調(diào)用,平級(jí)調(diào)用,禁止自下往上調(diào)用,以避免服務(wù)混亂及維護(hù)混亂。

每種服務(wù)目錄按999個(gè)服務(wù)規(guī)劃

服務(wù)設(shè)計(jì)規(guī)劃

工程目錄規(guī)劃

關(guān)于命名方向,一直不知道用什么名字比較合適,所以使用自己網(wǎng)站的域名。

5、提取出業(yè)務(wù)中臺(tái)規(guī)劃,并完善組件,打磨中臺(tái)業(yè)務(wù)產(chǎn)品

上面也提到,業(yè)務(wù)中臺(tái)也是在微服務(wù)上面構(gòu)建,設(shè)計(jì)原則加上了幾個(gè)點(diǎn),分別如下:

按“重中臺(tái)”+”輕應(yīng)用”設(shè)計(jì),業(yè)務(wù)應(yīng)用邏輯思路放在前端應(yīng)用,推薦是盡量減少或不拆分前端服務(wù);

重中臺(tái)的建設(shè),在于前端應(yīng)用共性部分的抽取和后期的沉淀,形成中臺(tái)業(yè)務(wù)服務(wù);

中臺(tái)服務(wù)調(diào)用基礎(chǔ)服務(wù),或者其它同級(jí)服務(wù),中臺(tái)服務(wù)為服務(wù)的中層,用于業(yè)務(wù)共性(共享)抽取;

整體中臺(tái)的業(yè)務(wù)架構(gòu)如下:

中臺(tái)業(yè)務(wù)建設(shè)目標(biāo)如下

6、統(tǒng)一和通用的權(quán)限配置系統(tǒng)和界面設(shè)計(jì)

這個(gè)就是通用的,只需要在配置平臺(tái)添加好菜單,分配好賬號(hào)權(quán)限,本地開(kāi)發(fā)只需要賬戶就可以進(jìn)行本地開(kāi)發(fā),配置平臺(tái)包括的一些功能規(guī)劃如下:

應(yīng)用管理:用于配置系統(tǒng)應(yīng)用,添加和刪除管理。

用戶管理:用戶是系統(tǒng)操作者,該功能主要完成系統(tǒng)用戶配置。

部門(mén)管理:配置系統(tǒng)組織機(jī)構(gòu)(公司、部門(mén)、小組),樹(shù)結(jié)構(gòu)展現(xiàn)支持?jǐn)?shù)據(jù)權(quán)限。

崗位管理:配置系統(tǒng)用戶所屬擔(dān)任職務(wù)。

菜單管理:配置系統(tǒng)菜單,操作權(quán)限,按鈕權(quán)限標(biāo)識(shí)等。

角色管理:角色菜單權(quán)限分配、設(shè)置角色按機(jī)構(gòu)進(jìn)行數(shù)據(jù)范圍權(quán)限劃分。

字典管理:對(duì)系統(tǒng)中經(jīng)常使用的一些較為固定的數(shù)據(jù)進(jìn)行維護(hù)。

參數(shù)管理:對(duì)系統(tǒng)動(dòng)態(tài)配置常用參數(shù)。

通知公告:系統(tǒng)通知公告信息發(fā)布維護(hù)。

操作日志:系統(tǒng)正常操作日志記錄和查詢;系統(tǒng)異常信息日志記錄和查詢。

登錄日志:系統(tǒng)登錄日志記錄查詢包含登錄異常。

在線用戶:當(dāng)前系統(tǒng)中活躍用戶狀態(tài)監(jiān)控。

定時(shí)任務(wù):在線(添加、修改、刪除)任務(wù)調(diào)度包含執(zhí)行結(jié)果日志。

代碼生成:前后端代碼的生成(java、html、xml、sql)支持CRUD下載 。

然后大概的設(shè)計(jì)如下:

開(kāi)發(fā)人員的開(kāi)發(fā)流程如下:

7、完善軟件組件輔助,包括測(cè)試、運(yùn)維、環(huán)境管理

以上組件的搭建過(guò)程,如果一個(gè)人管理,會(huì)產(chǎn)生很多問(wèn)題,同時(shí)延伸出其它方向的建設(shè),其中包括最基礎(chǔ)的服務(wù)器管理和服務(wù)預(yù)警方向,安全策略管理,平臺(tái)整體入口和常用文檔,功能,平臺(tái)組件的質(zhì)量保證,即運(yùn)維、機(jī)房環(huán)境,測(cè)試這幾塊。在建設(shè)統(tǒng)一研發(fā)平臺(tái)的同時(shí),也自然包括建設(shè)這些內(nèi)容,大概做了一些建設(shè)工作,以下為一些設(shè)計(jì)的示例。

機(jī)房服務(wù)器管理系統(tǒng)

平臺(tái)統(tǒng)一門(mén)戶管理

其它的建議,如包括人才培養(yǎng),大數(shù)據(jù),人工智能,項(xiàng)目管理,都是在研發(fā)平臺(tái)中慢慢積累和培養(yǎng)的產(chǎn)物,而最終的結(jié)果是為了整理出一套完整的企業(yè)統(tǒng)一研發(fā)平臺(tái)。

四、總結(jié)

以上為目前搭建整體個(gè)人整體研發(fā)平臺(tái)的思路和設(shè)計(jì),一個(gè)優(yōu)秀的研發(fā)人員的工作并非只是編制代碼,更多的是自己能做什么,完成什么,有什么價(jià)值,能幫別人做什么。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容