溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

公司為什么需要建立一套統(tǒng)一的開(kāi)發(fā)框架?

發(fā)布時(shí)間:2020-05-25 02:31:24 來(lái)源:網(wǎng)絡(luò) 閱讀:1773 作者:宜信技術(shù) 欄目:軟件技術(shù)

一、起因:野蠻生長(zhǎng)

近十年,中國(guó)互聯(lián)網(wǎng)發(fā)展的速度越來(lái)越快,互聯(lián)網(wǎng)科技顛覆了越來(lái)越多的傳統(tǒng)行業(yè),我們的衣食住行隨著互聯(lián)網(wǎng)科技的進(jìn)步,發(fā)生了翻天覆地的變化。在這個(gè)大潮中,越來(lái)越多新興的公司如雨后春筍般的冒了出來(lái),他們的業(yè)務(wù)增長(zhǎng)非???,公司規(guī)模也越來(lái)越大。這得益于中國(guó)經(jīng)濟(jì)的高速增長(zhǎng)和互聯(lián)網(wǎng)的快速發(fā)展。

公司為什么需要建立一套統(tǒng)一的開(kāi)發(fā)框架?

弊端一:自我繁衍

在公司快速的發(fā)展過(guò)程中,往往會(huì)出現(xiàn)這樣一個(gè)鏈條。新增一塊業(yè)務(wù) —> 招聘一位高級(jí)技術(shù)人員 —> 圍繞這位同事組建一只技術(shù)團(tuán)隊(duì) —> 該業(yè)務(wù)基本由這只團(tuán)隊(duì)負(fù)責(zé)。然后就形成了一個(gè)閉環(huán)。當(dāng)需要跟其他業(yè)務(wù)進(jìn)行交互時(shí),經(jīng)常是技術(shù)負(fù)責(zé)人之間自行決定。(我曾經(jīng)經(jīng)歷過(guò)一個(gè)項(xiàng)目,同樣一個(gè)業(yè)務(wù)接口,同時(shí)提供 RPC,HTTP,MQ 等多種方式,為了給不同的項(xiàng)目提供基礎(chǔ)服務(wù))。

弊端二:管控壁壘

隨著業(yè)務(wù)規(guī)模的快速發(fā)展,這個(gè)團(tuán)隊(duì)很快的形成了一個(gè)部門(mén),團(tuán)隊(duì)決策者通常會(huì)從自身利益考量,希望盡量減少對(duì)外部門(mén)的依賴(lài),無(wú)論是技術(shù)選型,規(guī)范建立,組件選取,運(yùn)行環(huán)境都能夠自行掌控。(在這里講一個(gè)笑話,在一家公司怎么成為中層領(lǐng)導(dǎo)呢?很簡(jiǎn)單,招聘足夠多的下屬就可以了)。

公司為什么需要建立一套統(tǒng)一的開(kāi)發(fā)框架?

弊端三:斷崖效應(yīng)

當(dāng)這樣的技術(shù)氛圍一旦形成,單個(gè)員工對(duì)單個(gè)項(xiàng)目的影響就會(huì)變的非常巨大。一個(gè)產(chǎn)品經(jīng)常會(huì)因?yàn)橐粌蓚€(gè)核心員工的離職難以為繼,最后不得不重新開(kāi)發(fā)新的產(chǎn)品。

公司為什么需要建立一套統(tǒng)一的開(kāi)發(fā)框架?

弊端四:資源浪費(fèi)

當(dāng)每個(gè)團(tuán)隊(duì)都在試圖構(gòu)建自己完整的研發(fā)流程時(shí)。中間的技術(shù)研究,產(chǎn)品研發(fā),運(yùn)維管理就會(huì)出現(xiàn)非常多的資源浪費(fèi)。

公司為什么需要建立一套統(tǒng)一的開(kāi)發(fā)框架?

弊端五:難以考核

怎么衡量一個(gè)川菜廚師和一個(gè)魯菜廚師誰(shuí)更優(yōu)秀?當(dāng)每個(gè)團(tuán)隊(duì)都采用不同技術(shù)棧,不同的技術(shù)組件,不同的維護(hù)方式和規(guī)范時(shí)。已經(jīng)無(wú)法從產(chǎn)出效率來(lái)判斷一個(gè)團(tuán)隊(duì)的績(jī)效。KPI 指標(biāo)也就非常難以設(shè)立。

公司為什么需要建立一套統(tǒng)一的開(kāi)發(fā)框架?

二、如何破解?

在公司發(fā)展初期,為了快速的進(jìn)行業(yè)務(wù)拓展,大都不考慮成本投入,運(yùn)營(yíng)維護(hù)以及技術(shù)沉淀等問(wèn)題。所有的指標(biāo)導(dǎo)向都是業(yè)務(wù)的快速發(fā)展,盡可能的搶占市場(chǎng)份額,獲取足夠多的用戶(hù)數(shù)量。

在公司發(fā)展到一定階段后,市場(chǎng)逐漸趨于穩(wěn)定,先期快速擴(kuò)展的各種問(wèn)題會(huì)逐步暴露出來(lái)。從技術(shù)層面來(lái)講,如果可以形成公司級(jí)別的統(tǒng)一開(kāi)發(fā)框架,會(huì)在實(shí)際的生產(chǎn)過(guò)程中帶來(lái)非常大的收益。

三、統(tǒng)一開(kāi)發(fā)框架的優(yōu)勢(shì)

3.1 避免重復(fù)性技術(shù)研究——節(jié)約人力成本

讓項(xiàng)目組把精力更多的投入到業(yè)務(wù)中。相信這是大多數(shù)技術(shù)公司的共識(shí),如果讓項(xiàng)目組把精力投入在業(yè)務(wù)中?就需要在項(xiàng)目組之下構(gòu)建一個(gè)基礎(chǔ)的開(kāi)發(fā)架構(gòu)平臺(tái),把技術(shù)的共性問(wèn)題提煉出來(lái),交給這樣一個(gè)團(tuán)隊(duì)負(fù)責(zé)處理。避免每個(gè)項(xiàng)目都獨(dú)自去解決遇到的各種各樣的技術(shù)難題,有效的把精力釋放出來(lái)。

3.2 標(biāo)準(zhǔn)化技術(shù)規(guī)范——提升產(chǎn)品項(xiàng)目質(zhì)量

要千人一面,而不要千人千面。采用統(tǒng)一的開(kāi)發(fā)框架(平臺(tái))后,在技術(shù)棧,技術(shù)組件,技術(shù)實(shí)現(xiàn)方案,甚至在代碼規(guī)范上就能形成標(biāo)準(zhǔn)化的技術(shù)輸出模式,標(biāo)準(zhǔn)化帶來(lái)的最大效果不僅僅開(kāi)發(fā)效率的快速提升,還有產(chǎn)品質(zhì)量的大幅提升,這是顯而易見(jiàn)的。

3.3 進(jìn)行技術(shù)沉淀——提升公司整體技術(shù)能力,避免陷入一個(gè)人的能力決定一個(gè)項(xiàng)目

技術(shù)的進(jìn)步來(lái)源于不斷的技術(shù)積累和沉淀。每個(gè)工程師都是站在別人肩膀上完成工作的。以項(xiàng)目為導(dǎo)向的技術(shù)團(tuán)隊(duì),一般都會(huì)以實(shí)現(xiàn)業(yè)務(wù)需求為最重要的目標(biāo),技術(shù)只不過(guò)是完成業(yè)務(wù)的一種工具而已?;诖?,業(yè)務(wù)開(kāi)發(fā)團(tuán)隊(duì)就不可能把技術(shù)積累作為一項(xiàng)重要的工作。當(dāng)一位核心員工構(gòu)建了一些基礎(chǔ)的平臺(tái)工具后,往往隨著他的離開(kāi)把之前的技術(shù)積累全部丟棄掉,而更嚴(yán)重的情況會(huì)導(dǎo)致整個(gè)項(xiàng)目的持續(xù)運(yùn)行都成了問(wèn)題。

當(dāng)存在公司級(jí)別的統(tǒng)一開(kāi)發(fā)框架(平臺(tái)),項(xiàng)目團(tuán)隊(duì)基于該平臺(tái)進(jìn)行自身項(xiàng)目的研發(fā),不再需要關(guān)注于底層技術(shù)實(shí)現(xiàn),只需要關(guān)注業(yè)務(wù)即可。當(dāng)存在核心同事離職時(shí),平臺(tái)的研發(fā)同事可以對(duì)新進(jìn)入項(xiàng)目的同事進(jìn)行相關(guān)培訓(xùn),不會(huì)導(dǎo)致青黃不接的事情發(fā)生。而且,專(zhuān)注于平臺(tái)的同事為了更好的滿(mǎn)足項(xiàng)目組的技術(shù)需求,對(duì)平臺(tái)進(jìn)行不斷的改進(jìn),從而達(dá)到技術(shù)積累和沉淀的目標(biāo)。

3.4 可衡量的研發(fā)投入——對(duì)研發(fā)團(tuán)隊(duì)的有效管理和考核

當(dāng)基于同一開(kāi)發(fā)框架(平臺(tái))的標(biāo)準(zhǔn)化技術(shù)規(guī)范建立起來(lái)后,對(duì)業(yè)務(wù)功能的代碼實(shí)現(xiàn)就可以進(jìn)行相對(duì)有效的評(píng)估和考量,可以避免因?yàn)榧夹g(shù)實(shí)現(xiàn)差異而出現(xiàn)的種種問(wèn)題。這對(duì) KPI 的制定和考核是一個(gè)巨大的幫助。

四、統(tǒng)一開(kāi)發(fā)框架(平臺(tái))的定位和目標(biāo)

統(tǒng)一開(kāi)發(fā)框架(平臺(tái))定位于技術(shù)層面,其主要目的是為統(tǒng)一公司內(nèi)相關(guān)產(chǎn)品研發(fā)和項(xiàng)目實(shí)施使用的技術(shù)架構(gòu)和開(kāi)發(fā)工具,有效提高統(tǒng)一技術(shù)支持力度,形成持續(xù)的技術(shù)積累手段,提升技術(shù)人員的利用率并降低對(duì)人員的依賴(lài)性,最終提升軟件的規(guī)?;⒘魉€式的生產(chǎn)能力。

五、統(tǒng)一開(kāi)發(fā)框架(平臺(tái))的建設(shè)思路

5.1 基于 Spring Cloud 技術(shù)棧

Spring Cloud 在 2017 年一躍成為最流行的微服務(wù)開(kāi)發(fā)框架,不是采用了 Spring Cloud 框架就實(shí)現(xiàn)了微服務(wù)架構(gòu),具備了微服務(wù)架構(gòu)的優(yōu)勢(shì)。正確的理解是使用 Spring Cloud 框架開(kāi)發(fā)微服務(wù)架構(gòu)的系統(tǒng),使系統(tǒng)具備微服務(wù)架構(gòu)的優(yōu)勢(shì)。下圖為選擇 Spring Cloud 作為技術(shù)棧的原因。

公司為什么需要建立一套統(tǒng)一的開(kāi)發(fā)框架?

5.3 部分 SpringCloud 構(gòu)件的增強(qiáng)

Spring Cloud 提供的基礎(chǔ)構(gòu)建可能無(wú)法完全滿(mǎn)足業(yè)務(wù)需求,需要在部分構(gòu)件之上做二次研發(fā)。比如我們?cè)?Zuul 基礎(chǔ)之上研發(fā)的 API 網(wǎng)關(guān)、服務(wù)注冊(cè)發(fā)現(xiàn)中心 EurekaPlus 等。

下圖為服務(wù)注冊(cè)發(fā)現(xiàn)中心 EurekaPlus 的截圖,可以手動(dòng)控制服務(wù)注冊(cè)中心的節(jié)點(diǎn)狀態(tài),從而支持藍(lán)綠部署。

公司為什么需要建立一套統(tǒng)一的開(kāi)發(fā)框架?

5.3 新基礎(chǔ)組件產(chǎn)品的研發(fā)

除了 Spring Cloud 的基礎(chǔ)構(gòu)件外,我們往往需要開(kāi)發(fā)新的基礎(chǔ)組件產(chǎn)品來(lái)滿(mǎn)足項(xiàng)目組的需求。特別是當(dāng)前微服務(wù)架構(gòu)大行其道,常常需要基于微服務(wù)架構(gòu)的設(shè)計(jì)思想來(lái)開(kāi)發(fā)新的組件產(chǎn)品,比如我們開(kāi)發(fā)的分布式任務(wù)調(diào)度框架。采用自動(dòng)抓取,在線編排的模式,完全契合于 Spring Cloud 技術(shù)棧。

下圖為分布式任務(wù)調(diào)度框架原理。執(zhí)行器在啟動(dòng)時(shí)將任務(wù)接口注冊(cè)到分布式數(shù)據(jù)中心,編排中心從分布式數(shù)據(jù)中心獲取執(zhí)行器信息進(jìn)行編排,然后把編排信息保存到數(shù)據(jù)存儲(chǔ)中,調(diào)度中心從數(shù)據(jù)存儲(chǔ)中獲取信息對(duì)執(zhí)行器進(jìn)行遠(yuǎn)程調(diào)度。

公司為什么需要建立一套統(tǒng)一的開(kāi)發(fā)框架?

六、統(tǒng)一開(kāi)發(fā)框架(平臺(tái))團(tuán)隊(duì)的運(yùn)作方式

如何在公司推進(jìn)統(tǒng)一開(kāi)發(fā)框架(平臺(tái))的建設(shè),并不是一件簡(jiǎn)單的事情。以我個(gè)人的經(jīng)驗(yàn),從分工和運(yùn)作方式上來(lái)講,我主要著重把統(tǒng)一開(kāi)發(fā)框架(平臺(tái))的工作分成三個(gè)部分。

開(kāi)發(fā)示例、技術(shù)支持和技術(shù)規(guī)范。編寫(xiě)完整的開(kāi)發(fā)示例,對(duì)很多新接觸統(tǒng)一開(kāi)發(fā)框架的同事來(lái)說(shuō),有一份完成業(yè)務(wù)開(kāi)發(fā)是非常重要,不僅僅可以指導(dǎo)你如何進(jìn)行業(yè)務(wù)代碼的編寫(xiě),同時(shí)還能夠指導(dǎo)你如何編寫(xiě)出正確、高效的代碼。還需要對(duì)很多同事進(jìn)行技術(shù)培訓(xùn)與技術(shù)支持支持,都是統(tǒng)一開(kāi)發(fā)框架(平臺(tái))團(tuán)隊(duì)?wèi)?yīng)該完成的工作。

服務(wù)運(yùn)維。統(tǒng)一開(kāi)發(fā)框架(平臺(tái))提供了很多公司內(nèi)部的服務(wù),比如服務(wù)注冊(cè)發(fā)現(xiàn)中心、配置中心、監(jiān)控中心、鏈路中心、健康監(jiān)測(cè)中心等。這些都需要統(tǒng)一開(kāi)發(fā)框架(平臺(tái))團(tuán)隊(duì)進(jìn)行運(yùn)維。

新組件、新產(chǎn)品的研發(fā)。前一章節(jié)提到的 API 網(wǎng)關(guān)、分布式任務(wù)調(diào)度框架、服務(wù)注冊(cè)中心 Plus 等。都是統(tǒng)一開(kāi)發(fā)框架(平臺(tái))團(tuán)隊(duì)的工作范圍。

七、過(guò)猶不及

雖然建設(shè)公司級(jí)的統(tǒng)一開(kāi)發(fā)框架(平臺(tái))會(huì)在實(shí)際的生產(chǎn)過(guò)程中帶來(lái)非常大的收益。但未必適用于所有情況,考慮到某些項(xiàng)目產(chǎn)品的特殊性,并不能一概而論。

作者:梁鑫

來(lái)源:宜信技術(shù)學(xué)院

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI