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