小螞蟻說(shuō):
成都創(chuàng)新互聯(lián)主要從事網(wǎng)頁(yè)設(shè)計(jì)、PC網(wǎng)站建設(shè)(電腦版網(wǎng)站建設(shè))、wap網(wǎng)站建設(shè)(手機(jī)版網(wǎng)站建設(shè))、響應(yīng)式網(wǎng)站設(shè)計(jì)、程序開(kāi)發(fā)、網(wǎng)站優(yōu)化、微網(wǎng)站、小程序制作等,憑借多年來(lái)在互聯(lián)網(wǎng)的打拼,我們?cè)诨ヂ?lián)網(wǎng)網(wǎng)站建設(shè)行業(yè)積累了豐富的成都網(wǎng)站建設(shè)、成都網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、網(wǎng)絡(luò)營(yíng)銷(xiāo)經(jīng)驗(yàn),集策劃、開(kāi)發(fā)、設(shè)計(jì)、營(yíng)銷(xiāo)、管理等多方位專(zhuān)業(yè)化運(yùn)作于一體。在金融級(jí)互聯(lián)網(wǎng)產(chǎn)品持續(xù)交付方面,螞蟻金服積累了豐富的經(jīng)驗(yàn)和最佳工程實(shí)踐。在2018年ATEC技術(shù)探索大會(huì)上,螞蟻金服解決方案架構(gòu)師呂中邦(鳳啟)從行業(yè)背景出發(fā),分析了金融級(jí)互聯(lián)網(wǎng)產(chǎn)品持續(xù)交付的核心挑戰(zhàn),從“更快更早地交付價(jià)值”和“守住技術(shù)風(fēng)險(xiǎn)底線保障交付質(zhì)量”兩個(gè)維度分享了螞蟻應(yīng)對(duì)這些挑戰(zhàn)的最佳工程實(shí)踐做法,最后還介紹了螞蟻研發(fā)效能平臺(tái)支撐持續(xù)交付的實(shí)踐經(jīng)驗(yàn)。跟著小螞蟻一起來(lái)學(xué)習(xí)吧~
一、行業(yè)背景與主要挑戰(zhàn)
數(shù)字化轉(zhuǎn)型的大背景下,企業(yè)需要打造多方面的核心能力,這些能力客觀上要求企業(yè)升級(jí)或者采用新一代的技術(shù)架構(gòu)。其中非常重要的一個(gè)環(huán)節(jié)就是基于云端的基礎(chǔ)設(shè)施、分布式架構(gòu)下的持續(xù)交付。談到持續(xù)交付,很容易想到一些具體的挑戰(zhàn):比如如何縮短新業(yè)務(wù)產(chǎn)品的研發(fā)與投產(chǎn)時(shí)間,快速響應(yīng)細(xì)分客戶需求;如何應(yīng)對(duì)分布式微服務(wù)架構(gòu)帶來(lái)的業(yè)務(wù)場(chǎng)景復(fù)雜和高并發(fā)挑戰(zhàn);如何通過(guò)技術(shù)手段推動(dòng)自動(dòng)化減少研發(fā)過(guò)程中的人工投入等等。
此外,我們還需要認(rèn)真審視所處的行業(yè),到底有怎樣的特點(diǎn)。金融互聯(lián)網(wǎng)產(chǎn)品最核心的兩個(gè)關(guān)鍵詞,第一個(gè)就是“ 金融 ”。 金融屬性最重要的是保障資金、安全、高可用,歸結(jié)成一個(gè)字——“穩(wěn)” ;另外一個(gè)關(guān)鍵詞“ 互聯(lián)網(wǎng) ”, 最顯著的特征就是快速交付價(jià)值,支持業(yè)務(wù)的快速創(chuàng)新,我們把這歸結(jié)成另外一個(gè)字——“快” 。不僅要快而且要穩(wěn),這就是金融互聯(lián)網(wǎng)行業(yè)的基本特質(zhì),看似矛盾的兩個(gè)方面,缺一不可。
談到“穩(wěn)”和“快”,螞蟻金服做得怎么樣呢?分享上財(cái)年的幾個(gè)實(shí)際數(shù)據(jù):線上服務(wù)可用率——100%;每天應(yīng)用發(fā)布超過(guò)150次;迭代平均研發(fā)周期5.8天;測(cè)試自動(dòng)化率超過(guò)了80%;運(yùn)維自動(dòng)化率超過(guò)98%。
基于數(shù)字化轉(zhuǎn)型背景和行業(yè)的基本特征,我們認(rèn)為金融互聯(lián)網(wǎng)產(chǎn)品在持續(xù)交付領(lǐng)域最核心的挑戰(zhàn)是: 如何兼顧快和穩(wěn)?既能夠敏捷快速地交付價(jià)值,又可以穩(wěn)妥創(chuàng)新、守住技術(shù)風(fēng)險(xiǎn)底線、持續(xù)滿足監(jiān)管合規(guī)的要求 。
二、敏捷交付——如何更快更早地交付價(jià)值
本章節(jié)分四個(gè)部分展開(kāi),首先是精益研發(fā)流程定制和多樣化分支與發(fā)布策略,主要解決我們的體系或流程如何適配不同業(yè)務(wù)場(chǎng)景,正確的路徑和姿勢(shì)是研發(fā)交付提效的基本前提。
其次是職能服務(wù)化、高效聯(lián)調(diào)和問(wèn)題診斷,這兩個(gè)部分主要是闡述如何通過(guò)技術(shù)或自動(dòng)化手段解放人肉、提高效率。
1. 精益研發(fā)流程定制
說(shuō)到流程定制,很多人會(huì)問(wèn):我們依據(jù)什么來(lái)定制研發(fā)流程?在螞蟻我們有一個(gè)比較有效的做法,那就是依據(jù)應(yīng)用分級(jí)。應(yīng)用分級(jí)主要考慮三方面的因素:依賴(lài)服務(wù)的調(diào)用量,日交易資金量,以及每日的PV和UV。根據(jù)這三個(gè)方面我們定義了從A1-C4十二個(gè)不同的應(yīng)用級(jí)別,然后為每個(gè)級(jí)別的應(yīng)用設(shè)置基線的研發(fā)規(guī)則,在基線規(guī)則之上我們還支持各業(yè)務(wù)去自定義附加的風(fēng)險(xiǎn)管控措施。
舉兩個(gè)例子,一是按需配置流程。螞蟻金服的業(yè)務(wù)非常復(fù)雜和多樣,有些比較核心的業(yè)務(wù)系統(tǒng)穩(wěn)定性要求非常高,相應(yīng)配套的技術(shù)風(fēng)險(xiǎn)防控措施、測(cè)試驗(yàn)證環(huán)節(jié)就會(huì)比較完善;反之,一些新業(yè)務(wù)或內(nèi)部服務(wù)系統(tǒng)會(huì)傾向于更快、更早地上線,流程相對(duì)來(lái)說(shuō)會(huì)更輕量、更敏捷。二是可編排、可擴(kuò)展的流水線,效能平臺(tái)的組件中心定義了很多質(zhì)量檢測(cè)組件,其中包括第三方或業(yè)務(wù)自建的組件,通過(guò)平臺(tái)的編排能力為不同的業(yè)務(wù)編排個(gè)性化的流水線模板。有些應(yīng)用強(qiáng)制做代碼評(píng)審,有些應(yīng)用需要通過(guò)CI的自動(dòng)化測(cè)試或某專(zhuān)項(xiàng)測(cè)試之后才能向下推進(jìn),類(lèi)似的場(chǎng)景都可以通過(guò)流水線編排來(lái)實(shí)現(xiàn)。
關(guān)于分支模式和發(fā)布策略,螞蟻主要有四種玩法。
首先是日常發(fā)布 ,我們把它比作一輛定期發(fā)車(chē)的火車(chē),適用于全站的核心業(yè)務(wù)系統(tǒng)、應(yīng)用之間關(guān)聯(lián)性比較強(qiáng)的場(chǎng)景。
第二種是獨(dú)立發(fā)布 ,我們把它比作一輛小汽車(chē),想什么時(shí)候發(fā)車(chē)就什么時(shí)候發(fā)車(chē),適用于獨(dú)立業(yè)務(wù)域、應(yīng)用間有一定耦合和關(guān)聯(lián)的場(chǎng)景。
第三種是單應(yīng)用發(fā)布 ,我們把它比作是一輛摩托車(chē),適用于業(yè)務(wù)獨(dú)立性更強(qiáng)、與其他業(yè)務(wù)在架構(gòu)層面完全解耦的場(chǎng)景。前三種模式通常采用分支開(kāi)發(fā)主干發(fā)布的模式。
最后一種緊急發(fā)布 ,我們把它比作救護(hù)車(chē),適用于緊急業(yè)務(wù)需求或線上故障的解決,通常采用分支開(kāi)發(fā)分支發(fā)布的模式。
通過(guò)這四種模式,螞蟻所有的業(yè)務(wù)場(chǎng)景基本得到覆蓋,各業(yè)務(wù)可以根據(jù)自己的需要找到匹配的玩法。
3. 職能服務(wù)化
介紹完了敏捷交付的姿勢(shì)和路徑,接下來(lái)看看自動(dòng)化提效方面。
通常在一個(gè)研發(fā)迭代中,會(huì)涉及到很多職能部門(mén),傳統(tǒng)的做法是各職能團(tuán)隊(duì)基于經(jīng)驗(yàn)復(fù)核進(jìn)行人肉的風(fēng)險(xiǎn)管控。比如,當(dāng)開(kāi)發(fā)人員完成了編碼、自測(cè),就會(huì)有安全、風(fēng)控等職能團(tuán)隊(duì)層層把關(guān),基于經(jīng)驗(yàn)進(jìn)行審核,“部門(mén)墻”會(huì)嚴(yán)重影響協(xié)作和交付的效率。在螞蟻,各職能團(tuán)隊(duì)的協(xié)作方式完全不同,他們不再直接參與到項(xiàng)目迭代中,承擔(dān)迭代驗(yàn)證和審核這種重復(fù)機(jī)械的活動(dòng),而是轉(zhuǎn)型為能力輸出和自動(dòng)化工具建設(shè),實(shí)現(xiàn)職能服務(wù)化,從而對(duì)業(yè)務(wù)的開(kāi)發(fā)測(cè)試團(tuán)隊(duì)進(jìn)行賦能,這種模式大大提高了研發(fā)協(xié)作的效率。
4. 高效聯(lián)調(diào)和問(wèn)題診斷
金融互聯(lián)網(wǎng)產(chǎn)品的業(yè)務(wù)場(chǎng)景非常復(fù)雜,搭建項(xiàng)目環(huán)境是是一個(gè)非常耗時(shí)耗力的事情。比如一個(gè)交易鏈路涉及20個(gè)應(yīng)用,一般的做法是在研發(fā)迭代過(guò)程中給每個(gè)應(yīng)用部署一遍,最后形成聯(lián)調(diào)環(huán)境。螞蟻的做法又會(huì)不同,首先我們搭建了一個(gè)共享的STABLE環(huán)境,在研發(fā)迭代中只需要針對(duì)有變更和修改的應(yīng)用進(jìn)行部署,然后通過(guò)sofarouter分組能力把所有20個(gè)應(yīng)用關(guān)聯(lián)在一起就形成了聯(lián)調(diào)環(huán)境。這樣做不僅大大提升了效率,還大化利用了測(cè)試資源。此外,當(dāng)代碼發(fā)布上線之后,平臺(tái)會(huì)自動(dòng)更新STABLE環(huán)境保證其為最新代碼。
如果在聯(lián)調(diào)過(guò)程中發(fā)現(xiàn)問(wèn)題,如何在如此復(fù)雜的鏈路中定位和診斷問(wèn)題也非常重要。開(kāi)發(fā)同學(xué)可通過(guò)TraceID或交易號(hào)查詢(xún)鏈路圖、時(shí)序圖,直觀全面地了解應(yīng)用間的調(diào)用交互信息,再結(jié)合業(yè)務(wù)日志就可以非常容易地找到錯(cuò)誤應(yīng)用并定位問(wèn)題根源。
三、穩(wěn)妥創(chuàng)新——守住風(fēng)險(xiǎn)底線保障交付質(zhì)量
本章節(jié)同樣分四個(gè)部分來(lái)探討,其中技術(shù)風(fēng)險(xiǎn)評(píng)估、質(zhì)量?jī)?nèi)建、測(cè)試驗(yàn)證是按照開(kāi)發(fā)的事前、事中、事后的邏輯來(lái)展開(kāi),最后向大家分享我們是如何守住安全底線、保障信息安全的。
毫無(wú)疑問(wèn),開(kāi)發(fā)事前的技術(shù)風(fēng)險(xiǎn)評(píng)估是非常重要的。螞蟻的技術(shù)風(fēng)險(xiǎn)評(píng)估主要基于兩大輸入來(lái)做:第一是需求輸入,第二是治理分析相關(guān)數(shù)據(jù)輸入和賦能,后者對(duì)我們來(lái)說(shuō)更為重要。開(kāi)發(fā)同學(xué)可以非常便捷地獲取應(yīng)用依賴(lài)、服務(wù)調(diào)用、消息巡檢、組件管控、代碼檢索等數(shù)據(jù),全面準(zhǔn)確地評(píng)估變更帶來(lái)的技術(shù)風(fēng)險(xiǎn),基于這些數(shù)據(jù)和分析,就輕而易舉地確定風(fēng)險(xiǎn)應(yīng)對(duì)策略,做到有效的閉環(huán)的反饋。
開(kāi)發(fā)的事中——內(nèi)建質(zhì)量與實(shí)時(shí)閉環(huán)反饋,幫助開(kāi)發(fā)人員在第一時(shí)間把事情做對(duì)。在螞蟻內(nèi)部,我們鼓勵(lì)基于gitflow的最佳實(shí)踐,通過(guò)MergeRequest方式而不是Push方式向項(xiàng)目分支或主干提交代碼, 給代碼門(mén)禁、CI檢測(cè)一個(gè)機(jī)會(huì)。事實(shí)上Pipeline流水線的所有節(jié)點(diǎn)和組件都是可編排、可擴(kuò)展的。在提交代碼之后,每執(zhí)行完一個(gè)組件,平臺(tái)都會(huì)實(shí)時(shí)反饋結(jié)果,并自動(dòng)更新迭代的質(zhì)量數(shù)據(jù),協(xié)助開(kāi)發(fā)測(cè)試同學(xué)管控質(zhì)量風(fēng)險(xiǎn)。
開(kāi)發(fā)的事后,也就是測(cè)試驗(yàn)證部分,我們分享兩個(gè)點(diǎn):第一是全環(huán)境驗(yàn)證,從開(kāi)發(fā)》集成》預(yù)發(fā)》灰度一步步接近和模擬生產(chǎn)環(huán)境,確保生產(chǎn)發(fā)布沒(méi)有問(wèn)題。第二是業(yè)務(wù)分層驗(yàn)證,在每個(gè)環(huán)境,都有對(duì)應(yīng)的測(cè)試手段。比如壓測(cè),很多公司都在做,但多基于線下環(huán)境進(jìn)行,而螞蟻會(huì)直接在生產(chǎn)環(huán)境里做壓力測(cè)試,真正做到系統(tǒng)的高可用。
穩(wěn)妥交付的最后部分,在保障信息安全方面,螞蟻有一套完整的體系:在需求設(shè)計(jì)評(píng)審階段,架構(gòu)師會(huì)評(píng)估業(yè)務(wù)風(fēng)險(xiǎn);在開(kāi)發(fā)階段,首先SOFA框架自身的安全是有保障的,其次每次代碼提交我們都有安全的自動(dòng)掃描,此外還會(huì)有專(zhuān)項(xiàng)的安全測(cè)試;最后在系統(tǒng)上線之后,我們有專(zhuān)門(mén)針對(duì)安全的監(jiān)控和應(yīng)急機(jī)制。
四、研發(fā)效能平臺(tái)AntLinkE支撐
前面我們不僅介紹了如何敏捷交付,還介紹了如何穩(wěn)妥創(chuàng)新,接下來(lái)分享工具平臺(tái)層面是如何支撐整個(gè)持續(xù)交付過(guò)程的。
螞蟻研發(fā)效能平臺(tái)所做的事情,主要?dú)w結(jié)為三個(gè)方面:
DevOps—一站式開(kāi)發(fā)集成持續(xù)交付
DevMind—實(shí)時(shí)多維的數(shù)據(jù)分析賦能研發(fā)過(guò)程
DevServices—為研發(fā)者提供高效技術(shù)支持和咨詢(xún)服務(wù)
下面是我們的產(chǎn)品大圖,頂部是平臺(tái)支撐的業(yè)務(wù)和交付的價(jià)值,底部DevOps、DevMind、DevServices三方面的主要能力,今天我們重點(diǎn)來(lái)介紹一下中間的產(chǎn)品層。
首先是持續(xù)交付,從創(chuàng)建迭代開(kāi)始,到發(fā)布上線結(jié)束,為整個(gè)研發(fā)生命周期提供支撐。下面是配套的子產(chǎn)品:研發(fā)協(xié)作管理項(xiàng)目、迭代和需求;代碼服務(wù)提供代碼托管、代碼搜索、CR等能力;IDE是螞蟻比較有特色的產(chǎn)品,可以幫助開(kāi)發(fā)人員第一時(shí)間做代碼掃描,還與效能平臺(tái)的Web端做了整合和集成打通,開(kāi)發(fā)人員不用頻繁切換工作臺(tái)來(lái)開(kāi)展開(kāi)發(fā)工作;測(cè)試服務(wù)支持測(cè)試管理、自動(dòng)化測(cè)試;問(wèn)題診斷依賴(lài)分布式鏈路和業(yè)務(wù)日志快速定位和解決問(wèn)題。最下面是研發(fā)洞察,在研發(fā)過(guò)程中,無(wú)論是IDE端還是研發(fā)效能平臺(tái)的Web端,都會(huì)沉淀大量數(shù)據(jù),這些數(shù)據(jù)是非常寶貴有價(jià)值的資產(chǎn),我們通過(guò)對(duì)這些數(shù)據(jù)進(jìn)行采集、統(tǒng)計(jì)、分析來(lái)驅(qū)動(dòng)整個(gè)研發(fā)體系和組織的持續(xù)優(yōu)化和升級(jí)。
一站式持續(xù)交付解決方案如圖所示。中間部分是研發(fā)效能平臺(tái),提供了從需求到發(fā)布的持續(xù)交付引擎,將所有相關(guān)的能力和工具串接在一起;底部是應(yīng)用PAAS平臺(tái),效能平臺(tái)通過(guò)openAPI與之交互,打通環(huán)境管理和環(huán)境部署等功能;右側(cè)是分布式中間件,研發(fā)效能平臺(tái)通過(guò)研發(fā)容器,統(tǒng)一管理多環(huán)境的中間件配置,既實(shí)現(xiàn)環(huán)境間的隔離,又實(shí)現(xiàn)了環(huán)境間的自動(dòng)轉(zhuǎn)換和同步;此外研發(fā)效能平臺(tái)與技術(shù)風(fēng)險(xiǎn)防控平臺(tái)打通,把技術(shù)風(fēng)險(xiǎn)防控的措施落實(shí)在研發(fā)過(guò)程中;此外,螞蟻研發(fā)效能平臺(tái)先天具備開(kāi)放集成能力,可以通過(guò)組件的方式對(duì)接企業(yè)自有的工具平臺(tái),大化發(fā)揮既有資產(chǎn)的價(jià)值。
五、結(jié)語(yǔ)
無(wú)論對(duì)內(nèi)部還是外部,螞蟻研發(fā)效能平臺(tái)一直秉承并將繼續(xù)追求這樣一個(gè)初心—— 提升研發(fā)者幸福感,提高企業(yè)創(chuàng)新效率,讓我們一起重新定義研發(fā)!