作者丨小智 嘉賓丨江軍平 業(yè)務(wù)架構(gòu)是一個(gè)存在二十多年的概念,很多工程師認(rèn)為業(yè)務(wù)架構(gòu)與技術(shù)架構(gòu)相比,,缺乏技術(shù)含量,,對(duì)于工程師的能力增長沒有多少幫助。但對(duì)于大型科技公司而言,,業(yè)務(wù)架構(gòu)卻非常重要,。它是連接企業(yè)戰(zhàn)略和技術(shù)實(shí)現(xiàn)的橋梁,是連接業(yè)務(wù)人員與技術(shù)人員的橋梁,?;A(chǔ)架構(gòu)有很多可以復(fù)用的通用能力,,但業(yè)務(wù)架構(gòu)卻是千變?nèi)f化需要針對(duì)企業(yè)自身業(yè)務(wù)去設(shè)計(jì),、生長的,。 業(yè)務(wù)架構(gòu)的定義是什么?有哪些特點(diǎn)和難點(diǎn),?都有哪些發(fā)展階段和挑戰(zhàn),?業(yè)務(wù)架構(gòu)師該怎么設(shè)計(jì)架構(gòu)、做技術(shù)選型,?它與中臺(tái),、微服務(wù)的關(guān)系是什么?InfoQ 記者采訪了 ArchSummit 全球架構(gòu)師峰會(huì)(北京)“業(yè)務(wù)架構(gòu)”專題出品人,、58 同城高級(jí)總監(jiān)江軍平老師,,向他請(qǐng)教了業(yè)務(wù)架構(gòu)背后的那些事兒,。 2008 年從浙江大學(xué)畢業(yè)以后,,江軍平先后在微軟,、騰訊任職,研發(fā)過多款億級(jí)別的產(chǎn)品,,具有豐富的海量服務(wù)架構(gòu)設(shè)計(jì)經(jīng)驗(yàn),。2015 年加入 58 同城后,先后負(fù)責(zé)過基礎(chǔ)架構(gòu)部,、云平臺(tái)部,,承擔(dān)分布式存儲(chǔ)、IM 即時(shí)通訊,、微服務(wù)中間件,、私有云等系統(tǒng)研發(fā),,支撐全集團(tuán)每天幾千億次調(diào)用,。2019 年開始負(fù)責(zé) HBG 房產(chǎn)技術(shù)部(58 安居客),結(jié)合多年的技術(shù)積累,,深入房產(chǎn)業(yè)務(wù),,推動(dòng)服務(wù)升級(jí)。目前重點(diǎn)關(guān)注的技術(shù)方向是業(yè)務(wù)架構(gòu),,以及基礎(chǔ)架構(gòu)的前沿進(jìn)展,。 在他看來,業(yè)務(wù)架構(gòu)是實(shí)現(xiàn)業(yè)務(wù)目標(biāo)的一整套技術(shù)方案,,也可以是針對(duì)某個(gè)具體業(yè)務(wù)點(diǎn)的架構(gòu)方案,。在互聯(lián)網(wǎng)行業(yè),好的業(yè)務(wù)架構(gòu)具有業(yè)務(wù)效果好,、能快速落地,、可持續(xù)迭代、不容易出錯(cuò)等特點(diǎn),。 舉例而言,,對(duì)于創(chuàng)業(yè)型小團(tuán)隊(duì)來說,初期技術(shù)團(tuán)隊(duì)解決的幾乎所有問題都是業(yè)務(wù)架構(gòu)的范疇,。隨著業(yè)務(wù)的發(fā)展和團(tuán)隊(duì)規(guī)模不斷擴(kuò)大,,才會(huì)有一部分人專注地去做服務(wù)于其他開發(fā)人員的通用技術(shù)工作,最早被抽象出來的就是運(yùn)維和基礎(chǔ)架構(gòu)(微服務(wù)框架,、監(jiān)控,、云平臺(tái)、前端組件等),,上層業(yè)務(wù)只需關(guān)注業(yè)務(wù)本身的復(fù)雜性,,而不用去重復(fù)制造基礎(chǔ)設(shè)施的輪子,。 基礎(chǔ)架構(gòu)相對(duì)而言更加通用,因此也是開源社區(qū)比較活躍的領(lǐng)域,,有很多開源的成熟產(chǎn)品可以直接用,,或者結(jié)合自身業(yè)務(wù)特點(diǎn)二次開發(fā)深度定制。業(yè)務(wù)架構(gòu)和具體的業(yè)務(wù)領(lǐng)域相關(guān),,一般不能在不同業(yè)務(wù)中直接復(fù)用,,但是解決問題的思路方法是通用的,因此業(yè)務(wù)架構(gòu)非常適合分門別類介紹方法論,。 業(yè)務(wù)架構(gòu)的演進(jìn)和業(yè)務(wù)的發(fā)展變化是息息相關(guān)的,。 早期業(yè)務(wù)規(guī)模較小的時(shí)候,一臺(tái)服務(wù)器就可以搞定所有業(yè)務(wù),,研發(fā)人數(shù)也較少,,這個(gè)時(shí)候基本都會(huì)采用單體架構(gòu),比如流行的 LNMP 架構(gòu),。隨著業(yè)務(wù)發(fā)展壯大,,一臺(tái)機(jī)器搞不定,就要做分布式,,多臺(tái)機(jī)器同時(shí)提供服務(wù),。伴隨組織規(guī)模的不斷擴(kuò)大,單體架構(gòu)無法適應(yīng)業(yè)務(wù)的發(fā)展,,人越多越亂,,迭代速度變慢、上線困難等問題接踵而至,。這個(gè)時(shí)候微服務(wù)架構(gòu)就派上用場了,,將一個(gè)超大規(guī)模的單體應(yīng)用拆分為多個(gè)微服務(wù),每個(gè)微服務(wù)完成一個(gè)相對(duì)完備獨(dú)立的功能,,可以獨(dú)立研發(fā),、上線、演進(jìn),。組織也可以相應(yīng)地劃分為小團(tuán)隊(duì),,每個(gè)小團(tuán)隊(duì)都可以小步快跑,敏捷高效,。 以 58 集團(tuán)的業(yè)務(wù)架構(gòu)發(fā)展為例,。
業(yè)務(wù)架構(gòu)最常遇到的一個(gè)痛點(diǎn)是,,企業(yè)級(jí)的業(yè)務(wù)場景是多變的,如何讓業(yè)務(wù)架構(gòu)適應(yīng)不同階段的業(yè)務(wù)特性,,是業(yè)務(wù)架構(gòu)師們最頭疼的問題,。58 同城在 2015 年并購安居客、合并趕集網(wǎng)以后,,亟待解決的問題是如何整合多平臺(tái)的業(yè)務(wù)架構(gòu),。 以房產(chǎn)業(yè)務(wù)為例,細(xì)分的品類有新房,、二手房,、租房、商業(yè)地產(chǎn)等,,這些業(yè)務(wù)在 58 同城和安居客上都有,,但是兩個(gè) App 的客戶端和后端業(yè)務(wù)架構(gòu)完全不同,需要兩支團(tuán)隊(duì)分別開發(fā),整個(gè)團(tuán)隊(duì)的資源和效率被嚴(yán)重稀釋和消耗,,急需提升研發(fā)效率,。 為了解決這個(gè)問題,在保證現(xiàn)有線上業(yè)務(wù)正常運(yùn)轉(zhuǎn)的前提下,,業(yè)務(wù)架構(gòu)團(tuán)隊(duì)將 58 同城和安居客 App 的業(yè)務(wù)架構(gòu)進(jìn)行打通,,首先將 App 底層的公共組件統(tǒng)一,此后基于統(tǒng)一的公共組件對(duì)業(yè)務(wù)代碼進(jìn)行重構(gòu),,實(shí)現(xiàn)兩個(gè) App 的房產(chǎn)業(yè)務(wù)使用同一份代碼,,通過配置的方式實(shí)現(xiàn)差異化;同時(shí)整合了后端服務(wù),,將所有的底層系統(tǒng)打通,,包括邏輯層和數(shù)據(jù)層服務(wù),實(shí)現(xiàn)一個(gè)服務(wù)能夠同時(shí)承載 58 和安居客的業(yè)務(wù),,并且做到新老服務(wù)線上平滑切換,。架構(gòu)整合完成以后,團(tuán)隊(duì)可以同時(shí)做 58 和安居客的業(yè)務(wù)開發(fā)工作,,一次開發(fā),,兩網(wǎng)同步上線,大幅提升了業(yè)務(wù)的迭代效率,。 基礎(chǔ)架構(gòu)和業(yè)務(wù)架構(gòu)是一對(duì)雙生子,后者通常會(huì)受到更多的誤解,。 一般來說,,基礎(chǔ)架構(gòu)是通用的技術(shù)基礎(chǔ)設(shè)施,比如各家云服務(wù)廠商在云上提供的產(chǎn)品基本都是基礎(chǔ)架構(gòu)相關(guān):彈性計(jì)算,、數(shù)據(jù)庫,、存儲(chǔ)、中間件,、監(jiān)控等,。業(yè)務(wù)架構(gòu)則建立在基礎(chǔ)架構(gòu)之上,基礎(chǔ)架構(gòu)提供輪子,,業(yè)務(wù)架構(gòu)師將這些輪子又快又好地組裝成用戶想要的產(chǎn)品,。 外界對(duì)業(yè)務(wù)架構(gòu)的誤解通常是其相對(duì)基礎(chǔ)架構(gòu)而言,缺乏“技術(shù)含量”,,實(shí)則不然,。業(yè)務(wù)架構(gòu)師不僅要懂業(yè)務(wù),更要能很好地理解基礎(chǔ)架構(gòu)中每個(gè)輪子的特性和原理,,只有理解夠深刻,,才能用的更好,,技術(shù)選型才能做對(duì)。 對(duì)于業(yè)務(wù)架構(gòu)師來說,,除了要有扎實(shí)的技術(shù)功底,,還得有優(yōu)秀的溝通和業(yè)務(wù)理解能力,能夠把復(fù)雜的業(yè)務(wù)場景抽象,、分層,、簡化,拆分給多個(gè)人協(xié)同開發(fā),,對(duì)其中的關(guān)鍵技術(shù)難點(diǎn)要有很好的識(shí)別和把控能力,,比如數(shù)據(jù)規(guī)模、訪問量,、策略效果等,,做到快速開發(fā)快速上線,且對(duì)上線后的業(yè)務(wù)效果也要有預(yù)判能力,。因此要成為一個(gè)好的業(yè)務(wù)架構(gòu)師,,很不容易。 對(duì)于業(yè)務(wù)架構(gòu)師來說,,設(shè)計(jì)業(yè)務(wù)架構(gòu),,首先要做業(yè)務(wù)建模抽象,把架構(gòu)拆解為表現(xiàn)層,、邏輯層,、數(shù)據(jù)層,對(duì)于每一層的關(guān)鍵技術(shù)重點(diǎn)識(shí)別和把控,,搞清楚上下游系統(tǒng)的特性,,對(duì)整體架構(gòu)方案要做到心中有數(shù),一切盡在掌控,。
技術(shù)選型上,,可以考慮如下因素:
如前文所言,,業(yè)務(wù)架構(gòu)存在的時(shí)間已經(jīng)超過 20 多年,背后是一個(gè)不斷發(fā)展,、與時(shí)俱進(jìn)的過程,。在當(dāng)前的云時(shí)代下,業(yè)務(wù)架構(gòu)變得更加純粹專注,、聚焦在業(yè)務(wù)上,。云時(shí)代以前,業(yè)務(wù)架構(gòu)要大包大攬,,什么都自己做,,但在云時(shí)代下很多基礎(chǔ)的事情可以交給云來做。這里的云,,包括私有云和公有云,。 除了云時(shí)代給業(yè)務(wù)架構(gòu)帶來的改變,中臺(tái)概念的出現(xiàn)也對(duì)業(yè)務(wù)架構(gòu)的設(shè)計(jì)產(chǎn)生了很大影響,。一般來說多個(gè)業(yè)務(wù)能夠復(fù)用的技術(shù)能力,,應(yīng)該放在中臺(tái)來建設(shè),,業(yè)務(wù)架構(gòu)直接復(fù)用就行,不用重復(fù)造輪子,。 58 同城內(nèi)部有公司層面的技術(shù)中臺(tái),,負(fù)責(zé)通用技術(shù)能力的建設(shè),例如運(yùn)維,、存儲(chǔ),、中間件、云平臺(tái),、搜索,、數(shù)據(jù)平臺(tái)、AI 平臺(tái),、移動(dòng)組件,、即時(shí)通訊、安全,、商業(yè)等,。在房產(chǎn)業(yè)務(wù)線,也會(huì)建設(shè)業(yè)務(wù)中臺(tái),,比如房源庫,、樓盤字典、房產(chǎn)開放平臺(tái),、經(jīng)紀(jì)人服務(wù)等,,都是統(tǒng)一建設(shè),新房,、二手房,、租房、商業(yè)地產(chǎn)等業(yè)務(wù)線可直接復(fù)用,。 微服務(wù)是連接中臺(tái)和業(yè)務(wù)架構(gòu)的一個(gè)橋梁,,很多人認(rèn)為中臺(tái)不過是微服務(wù)的集散地,這種觀點(diǎn)其實(shí)有失偏頗,。首先,,從純技術(shù)的角度來看,中臺(tái)能力除了通過微服務(wù)的形式提供,,還有很多是前后端結(jié)合的,,比如即時(shí)通訊平臺(tái),大多數(shù)時(shí)候需要對(duì)接 JS 或 App 的 SDK,。其次,中臺(tái)也不是一個(gè)純技術(shù)的概念,,中臺(tái)需要組織的保障,,中臺(tái)能力是可以隨著前臺(tái)業(yè)務(wù)發(fā)展不斷迭代演進(jìn),,只有組織才能保障中臺(tái)的迭代能夠和業(yè)務(wù)的發(fā)展節(jié)奏同步。 隨著云架構(gòu),、中臺(tái),、Serverless 等架構(gòu)新趨勢的涌現(xiàn),業(yè)務(wù)架構(gòu)也需要持續(xù)迭代,、進(jìn)化生長,。互聯(lián)網(wǎng)企業(yè)的業(yè)務(wù)規(guī)模增長迅猛,,業(yè)務(wù)場景特性一天一變,,對(duì)于業(yè)務(wù)架構(gòu)的設(shè)計(jì)、實(shí)現(xiàn)乃至重構(gòu)都提出了更多的要求,,業(yè)務(wù)架構(gòu)工程師同樣需要持續(xù)學(xué)習(xí),、迭代自己的知識(shí)結(jié)構(gòu),以滿足變化多端的業(yè)務(wù)架構(gòu),。 業(yè)務(wù)架構(gòu)不是銀彈,,沒有放之四海皆準(zhǔn)的選型方案,適合的,,才是最好的,。 |
|