今天我分享的主題是京東服務(wù)技術(shù)中臺探索與實(shí)踐,分別從三個(gè)方面來講:
為何我們要做中臺?
京東服務(wù)技術(shù)中臺建設(shè)思路;
關(guān)于中臺建設(shè)的個(gè)人思考。
為何做中臺?答:拆掉煙囪
為什么要做服務(wù)技術(shù)中臺呢?舉個(gè)例子,假設(shè)一個(gè)用戶在京東買了東西,但不滿意,希望退換貨。他會通過在線聊天、電話找到客服,客服會對其進(jìn)行接待,并將用戶反映的問題記錄下來。最終京東官方會給出一個(gè)解決方案,可能是換貨、退貨或賠付。如果客戶是從京東平臺第三方商家買到的產(chǎn)品,那么京東還需要從中立角度為他與商家執(zhí)行仲裁。
所以,若想服務(wù)好顧客,我們會和許多部門打交道,包括物流、倉儲、維修等等,所以服務(wù)技術(shù)中臺是圍繞于人、財(cái)、物三者進(jìn)行服務(wù)的。
就架構(gòu)發(fā)展歷程來講,京東第一階段的應(yīng)用結(jié)構(gòu)都是單體應(yīng)用,例如在物理機(jī)上部署一個(gè) Nginx+Tomcat,要求非常簡單,就是快。那么多時(shí)間做復(fù)雜的設(shè)計(jì),簡單粗暴,一堆代碼放上去能跑就可以了。當(dāng)然,這種設(shè)計(jì)的缺點(diǎn)也非常明顯,就是運(yùn)維成本非常高,沒有什么災(zāi)備部署,服務(wù)器掛了就是掛了。
第二階段是“修身治國”,即當(dāng)業(yè)務(wù)開始快速增長,我們對業(yè)務(wù)架構(gòu)提出了更高的要求。在這種情況下,我們開始做業(yè)務(wù)的解耦和微服務(wù)化,將集群部署在多個(gè)不同的IDC,統(tǒng)一進(jìn)行服務(wù)治理,包括建立了自動部署體系、統(tǒng)一的日志體系、統(tǒng)一的監(jiān)控體系等基本的運(yùn)維設(shè)施。自此,運(yùn)維工作具備了橫向擴(kuò)展能力:日常運(yùn)維基于容器,部署自動化,可以很方便地收集、分析、處理告警,同時(shí)具備了一定的平臺化和可配置能力。
看起來一切都已經(jīng)很不錯(cuò),那為什么還要做中臺呢?很多同學(xué)在另一個(gè)角度上提出了這種疑惑,即微服務(wù)化改造和中臺戰(zhàn)略到底有什么區(qū)別?那么接下來,我來講一講為何要做中臺,以及中臺和微服務(wù)有什么不一樣。
從單一角度來看,第二階段確實(shí)沒有什么明顯問題。但如果站高一點(diǎn),站到整個(gè)公司的層面俯視,就會看到一堆“煙囪”,為什么是一堆“煙囪”?
首先我們會看到“產(chǎn)品煙囪”:不同的產(chǎn)品間,定位和功能雷同;
第二是“系統(tǒng)煙囪”,研發(fā)人員有一個(gè)特點(diǎn):自己寫代碼開發(fā)的系統(tǒng)才用著放心,別人的不愿意用,所以總是重復(fù)開發(fā);
第三是“數(shù)據(jù)煙囪”,在第二階段,各個(gè)系統(tǒng)產(chǎn)生的數(shù)據(jù)其實(shí)已經(jīng)匯聚到大數(shù)據(jù)平臺。在一定程度上,數(shù)據(jù)不存在分別存儲的問題,但這依然存在一些問題:產(chǎn)品不同,因而數(shù)據(jù)計(jì)算邏輯和口徑是不同的,那么很可能同一個(gè)數(shù)據(jù)指標(biāo)有不同的計(jì)算邏輯和計(jì)算口徑去計(jì)算,導(dǎo)致難以合并分析;
最后就是“組織煙囪”,即“部門墻”,天然存在,存在即合理?僧(dāng)“部門墻”太厚就形成了“組織煙囪”,導(dǎo)致信息不透明。
以上就是第二階段存在的問題。
京東的解決思路是什么?就是中臺戰(zhàn)略,兼濟(jì)天下,無論是產(chǎn)品還是工具,不能只為自己考慮,不管他人死活,中臺要賦能整個(gè)公司、社區(qū)、環(huán)境。產(chǎn)品的使用人數(shù)越多越能凸顯價(jià)值。
京東服務(wù)技術(shù)中臺建設(shè)思路
京東服務(wù)技術(shù)中臺經(jīng)過檢驗(yàn)建設(shè),共分為三層。
平臺層:核心能力包括及時(shí)通信平臺能力、音視頻能力,再加上業(yè)務(wù)引擎和基礎(chǔ) SaaS 設(shè)施,這構(gòu)成了我們的平臺層。
組件層:主要分為三個(gè)部分,第一部分是平臺插件和中心化。對于相對通用、容易用配置實(shí)現(xiàn)的功能或規(guī)則,用平臺配置中心完成,使標(biāo)準(zhǔn)化需求可以得到快速滿足;第二部分是插件裝配中心。如果一些需求無法標(biāo)準(zhǔn)化成配置,那么我們允許第三方,可以定制化自己的插件,插入我們的系統(tǒng)中,給用戶提供相應(yīng)的功能服務(wù)。比如說常見的訂單插件、商品插件;最后一部分是個(gè)性化接入中心,部分業(yè)務(wù)邏輯、流程與中臺已有的非常不一樣,這種差異導(dǎo)致計(jì)劃配置也要差異化實(shí)現(xiàn)。這時(shí)候我們提供個(gè)性化接入,讓其可以變成做成標(biāo)準(zhǔn)化服務(wù),接入整個(gè)服務(wù)網(wǎng)絡(luò)里面。
服務(wù)產(chǎn)品層:在前兩層之上,我們的產(chǎn)品體系最終得以構(gòu)建,包括客服服務(wù)平臺、電話呼叫中心服務(wù)平臺、售后服務(wù)平臺等,在這一層對接、服務(wù)京東所有的業(yè)務(wù)領(lǐng)域。
服務(wù)技術(shù)中臺主要解決兩個(gè)問題:成本和速度。
“成本”這個(gè)詞非常好理解,繁多的職能和產(chǎn)品整合到了一起,人力成本首先得到了解決;“速度”,指的是交付速度,當(dāng)新風(fēng)口出現(xiàn)的時(shí)候,如果沒有中臺戰(zhàn)略良好的底層積累,產(chǎn)品質(zhì)量沒有辦法保證。而對于中臺來說,新的產(chǎn)品可能只是換個(gè)殼。我們常說大中臺、小前臺,小前臺可以做得很快很輕,基于中臺的配置去完成。
所以,我們圍繞產(chǎn)品、系統(tǒng)、數(shù)據(jù)和組織來構(gòu)建中臺架構(gòu)。其中,組織其實(shí)是第一步工作,要把相同的產(chǎn)品、功能合并,再于產(chǎn)品之間進(jìn)行整合,使之成為一個(gè)完整的個(gè)體,成為一個(gè)中臺,去對外提供服務(wù)。
我稱這種整合為一種藝術(shù),為什么?第一,不同的“煙囪”確實(shí)代表業(yè)務(wù)需求不一樣,如果需求一致,不可能出現(xiàn)幾個(gè)煙囪;第二,業(yè)務(wù)方并不關(guān)心底層有幾套系統(tǒng)在做支撐,他們關(guān)注的是體驗(yàn)和交付有沒有得到提升,但我們要得到業(yè)務(wù)方的支持。因?yàn)橹信_建設(shè)其實(shí)需要投入大量的資源和人力,在這個(gè)過程中,一定程度上會減少支撐業(yè)務(wù)的技術(shù)人員數(shù)量,所以要和業(yè)務(wù)方提前達(dá)成一致。這就像要為高速奔馳的賽車更換發(fā)動機(jī),簡單的系統(tǒng)一兩周就遷移完了,復(fù)雜的系統(tǒng)可能要半年、一年才能遷移完成。
這里還需要解決一個(gè)基本問題:產(chǎn)品整合完之后,同一個(gè)中臺要支撐不同的業(yè)務(wù)線,不同的業(yè)務(wù)線又有不同的邏輯和流程、不同的業(yè)務(wù)量和資源需求,那么第一步要做什么?
就是用多租戶把整個(gè)業(yè)務(wù)線的配置、資源(計(jì)算資源、存儲資源)隔離開。不同產(chǎn)品的多租戶身份必須是統(tǒng)一的、唯一的,因?yàn)槿绻總(gè)系統(tǒng)都去建立自己的多租戶,當(dāng)兩者需要配合完成任務(wù)的時(shí)候,就會發(fā)生沖突。
在這個(gè)基礎(chǔ)上,我們要按照“開放封閉原則”去打造生態(tài)。開放封閉原則,大家一定不陌生,中臺內(nèi)部有非常完善的體系,我們并不希望外部需求去影響中臺的發(fā)展。同時(shí),為了實(shí)現(xiàn)這個(gè)目標(biāo),我們對外開放了足夠多的擴(kuò)展,包括多租戶、賬戶認(rèn)證、訂單接口等。
只要滿足我們的協(xié)議,能夠快速進(jìn)行配置,就完成了接入,速度非?。同時(shí)產(chǎn)品和產(chǎn)品之間也是解耦的,包括CM、工單和機(jī)器人。我們允許第三方接入,讓單一的產(chǎn)品也能和第三方配合起來,同時(shí)提供PaaS、SaaS、私有云這三種模式來給集團(tuán)賦能、外部賦能。
建設(shè)中臺的3問及5個(gè)必要條件
最后是我對服務(wù)技術(shù)中臺的一些思考。
首先建設(shè)中臺要問自己三個(gè)問題:
需要支撐多個(gè)不同的業(yè)務(wù)線嗎?
用戶來自不同的群體嗎?
存在重復(fù)建設(shè)嗎?
如果用戶和業(yè)務(wù)線相同,其實(shí)中臺在某種程度上是一個(gè)偽需求。
服務(wù)技術(shù)中臺建設(shè)的一些必要條件:
1.符合公司戰(zhàn)略發(fā)展方向;
2.領(lǐng)導(dǎo)層全力支持;
3.業(yè)務(wù)側(cè)的協(xié)同認(rèn)可;
4.基礎(chǔ)設(shè)施能提供支撐;
5.基礎(chǔ)服務(wù)治理。
我在分享服務(wù)技術(shù)中臺的構(gòu)建時(shí),并沒有分享統(tǒng)一日志、統(tǒng)一監(jiān)控、分布式框架、集群、容災(zāi)等方面的內(nèi)容,因?yàn)檫@些內(nèi)容在第二階段就已經(jīng)完成了。它們重不重要?非常重要,這是服務(wù)技術(shù)中臺建設(shè)的基礎(chǔ)。所以中臺建設(shè)的時(shí)機(jī)很重要,如果沒有這些基礎(chǔ),沒有領(lǐng)導(dǎo)層支持,與公司戰(zhàn)略也不吻合,中臺建設(shè)就會非常吃力。
中臺建設(shè)的最大挑戰(zhàn)
在我看來,建設(shè)服務(wù)技術(shù)中臺的最大挑戰(zhàn),既不是技術(shù),也不是基礎(chǔ)設(shè)施,而是組織和文化。
為什么這么說?前面我們提到很多“煙囪”,需要將他們進(jìn)行合并,最簡單的方式就是將兩個(gè)部門合并、將相同的產(chǎn)品合并,這就涉及到組織架構(gòu)調(diào)整,沒有高層支持是不可能的。
我之前遇到一個(gè)講師,他在深圳做整個(gè)公司的架構(gòu)負(fù)責(zé)人。他說,公司內(nèi)部另外一個(gè)業(yè)務(wù)部門做了和他們一樣的東西。這讓他非常困惑,想推廣本部門產(chǎn)品非常困難,推到做了“競品”的業(yè)務(wù)部門死活推不下去,這是非,F(xiàn)實(shí)的情況,也是沒有得到高層支持時(shí),常見的情況。
另一個(gè)挑戰(zhàn)是文化,其實(shí)很多公司都在進(jìn)行中臺建設(shè),但是在建設(shè)過程當(dāng)中會遇到很多文化挑戰(zhàn)。文化挑戰(zhàn)分兩種:第一種是供給者,第二種是需求者。
對于需求者來說,最大的挑戰(zhàn)是要克服“什么都要我自己做”的心理。舉個(gè)例子,當(dāng)產(chǎn)生了一個(gè)需求,最先想到的應(yīng)該是,在公司內(nèi)有無類似的產(chǎn)品是可以復(fù)用的,當(dāng)別人的產(chǎn)品能夠部分滿足我們需求時(shí),其實(shí)我們需要盡量地push他們,讓產(chǎn)品能夠盡量滿足我們的需求,而不是自己做。
對于供給者來說,最大的問題是工作和KPI是否能保持一致。如果只是滿足部門內(nèi)需求就可以了,為什么要把產(chǎn)品給整個(gè)公司使用呢?這其實(shí)是增加了該部門的運(yùn)營負(fù)擔(dān),但如果高層想實(shí)施中臺戰(zhàn)略,那么他一定會把這個(gè)部門的職責(zé),定義成為將產(chǎn)品覆蓋到整個(gè)公司,而不是只服務(wù)自己。當(dāng)這二者之間有了契合的時(shí)候,作為供給者的戰(zhàn)斗力才會發(fā)揮到最大。
(作者:京東商城服務(wù)技術(shù)中臺研發(fā)負(fù)責(zé)人賈樂 本文由一鵬根據(jù)賈樂在10月26日結(jié)束的GTLC·成都站上的現(xiàn)場發(fā)言整理而成。)