許關飛:美團●大眾點評高級技術專家勾怒,酒店后臺研發(fā)組eHome團隊負責人。新美大高級技術專家荒椭。 2012年加入美團谐鼎,主導了新美大酒店業(yè)務從通用團購模式到專業(yè)酒店預訂的技術轉型;負責過美團酒店預訂業(yè)務系統(tǒng)趣惠,平臺系統(tǒng)该面,目前帶領酒店孵化業(yè)務技術團隊。
導讀:新美大以團購作為切入點信卡,為了更好的連接用戶與商戶,從2012年開始在酒店题造、外賣傍菇、電影等垂直領域深耕細作。到2016年界赔,美團酒店交易額單日破億丢习,間夜量行業(yè)第一。
在酒店業(yè)務的轉型和高速發(fā)展過程中淮悼,不同的階段對系統(tǒng)結構也提出來不同的要求咐低,本次分享會通過對幾個階段的系統(tǒng)整體情況的分析、演化袜腥,和大家一起整理業(yè)務的不同階段給系統(tǒng)帶來的挑戰(zhàn)和機遇见擦,希望可以為處于文中某個階段的同學提供一些思路上的參考。
一、 案例背景
美團酒店從2012年開始鲤屡,以團購為基礎损痰,著手酒店業(yè)務的精細化發(fā)展;
2012年~2016年期間酒来,探索并完成了團購業(yè)務到預訂業(yè)務的升級卢未,預訂業(yè)務占比90%以上;
期間酒店業(yè)務快速發(fā)展堰汉,2016年消費額單日破1.5億辽社,單日入住間夜量突破80W,行業(yè)第一翘鸭;
在業(yè)務轉型升級滴铅、快速發(fā)展的整個過程中,不同的階段對系統(tǒng)架構的設計帶來了不同的挑戰(zhàn)矮固。
二失息、案例解讀
我們將從開始酒店精耕細作到現(xiàn)階段,把酒店系統(tǒng)的整個發(fā)展過程分為4個大階段:決策档址、落地盹兢、支撐、優(yōu)化守伸,如圖1绎秒。
決策階段是指我們需要去思考、確定以后酒店系統(tǒng)應該如何去發(fā)展尼摹、才能夠更好的去支撐见芹、推動業(yè)務的發(fā)展。
落地階段是指在做好決定之后蠢涝,需要將決定的內容逐步落地玄呛、實現(xiàn)。
支撐階段是指在系統(tǒng)需要能夠很好的支撐業(yè)務迅猛的發(fā)展和二。
優(yōu)化階段是指在系統(tǒng)的支撐徘铝、發(fā)展過程,我們需要通過不斷的優(yōu)化業(yè)務惯吕、系統(tǒng)惕它,以更好的推動業(yè)務發(fā)展。
圖1 酒店系統(tǒng)發(fā)展歷程
●2.1 決策階段
首先我們進入決策階段(圖2)废登。
圖2 決策階段
在當時的階段中淹魄,伴隨著團購業(yè)務的發(fā)展,已經形成一套完整的團購系統(tǒng)體系堡距,包含全套的供給甲锡、數(shù)據(jù)兆蕉、售賣流程,包含toB搔体、toE恨樟、toC的全套功能,并搭配著相關的基礎設施疚俱,如DB劝术、Cache、RPC等呆奕,而這一套系統(tǒng)同時支撐著餐飲养晋、電影、酒店梁钾、旅游等20多個大品類绳泉。如圖3所示。
圖3 團購系統(tǒng)體系
酒店業(yè)務的精細化發(fā)展需要我們在供給姆泻、產品零酪、促銷、交易等環(huán)節(jié)進行進一步的擴充拇勃、升級四苇。如圖4。
圖4 酒店業(yè)務的精細化發(fā)展要求
擺在面前的是一系列非常常見的問題:老系統(tǒng)支撐難方咆、新系統(tǒng)成本高月腋、業(yè)務可行性不確認。
老系統(tǒng)支撐難:原有團購系統(tǒng)是全品類系統(tǒng)架構瓣赂,通用性強榆骚,修改、訂制較難煌集,系統(tǒng)歷史“包袱”較重妓肢;
新系統(tǒng)成本高:如果新建一套系統(tǒng)鏈路長,涉及面廣苫纤,改動量大职恳,周期長;
業(yè)務可行性不確認:無論采取何種方式來看方面,成本都不會低,而此時我們對于這個業(yè)務方向是否是真正滿足用戶需求還存在一定的不確認性色徘。
這是非常常見的場景恭金,也是非常難做的決定。對于很難決定的事情褂策,我們需要收集更多的信息:
首先横腿,低成本驗證業(yè)務可行性颓屑。
采取和現(xiàn)有流程較為松耦合的方式實現(xiàn)簡易版業(yè)務(圖5),以保證可以確認用戶對此類需求的使用情況耿焊,同時盡量保持低成本揪惦。經驗證,業(yè)務方向OK罗侯。
圖5 簡易版業(yè)務流程
第二器腋,典型需求驗證“支撐難”。
通過典型的“價格計劃”需求(圖6)钩杰,驗證團購系統(tǒng)進行定制化開發(fā)的成本纫塌。經過實際驗證,一個典型的需求持續(xù)2個月左右讲弄,影響方非常多措左,而以后類似需求還會有很多。所以避除,成本基本不可接受怎披。
圖6 “計劃價格”需求
第三,MVP需求驗證“成本高”瓶摆。
通過酒店集團接入打造酒店系統(tǒng)MVP版本(圖7)凉逛,以第三方為供給來源,PC版做出口赏壹,實現(xiàn)最簡版邏輯鱼炒,以確認新建系統(tǒng)范圍、成本蝌借。經過實際驗證昔瞧,周期在2個月左右,成本不小菩佑,但基本可控自晰。
圖7 酒店系統(tǒng)MVP版本
經過三方面的驗證得出結論:業(yè)務方向OK、復用成本過高稍坯,新建成本基本可控酬荞。依此得出方案:構建酒店系統(tǒng)(造個輪子),如圖8瞧哟。
圖8 解決方案
●2.2 落地階段
方向確定后混巧,我們進入落地階段(圖9)。
圖9 落地階段
落地過程中主要關注三個方面:
哪些輪子需要自己造(自建 or 復用):全鏈路中涉及非常多的系統(tǒng)勤揩,全部重建成本高咧党,且有部分是可以重用的,如何取舍陨亡。
輪子造多大(分 與 合):服務化粒度問題傍衡,業(yè)務初期需求變動頻繁深员,小服務協(xié)調成本高,大服務穩(wěn)定性蛙埂、隔離性差倦畅。
車不停,怎么把輪子搞上去(保證業(yè)務發(fā)展):整個服務構建需要周期绣的,期間會對業(yè)務造成較大影響叠赐,如何降低影響,保證業(yè)務發(fā)展被辑。
應對:“自建” or “復用”→掐頭去尾燎悍,保核心競爭力
構建酒店系統(tǒng)并不意味著所有的輪子都要重造一遍,過程中遵循幾個原則(如圖10):
掐頭:基礎設施如緩存盼理、RPC框架等復用谈山,保證基礎設施穩(wěn)定性;基礎服務如用戶宏怔、支付奏路、風控等復用,保證以后不同業(yè)務之間的協(xié)作臊诊。
去尾:對外的統(tǒng)一出口如主搜鸽粉、推薦、訂單等復用抓艳,保證對下游用戶體驗的統(tǒng)一性触机、簡單性。
保核心競爭力:中間業(yè)務邏輯部分玷或,關注和業(yè)務核心競爭力最核心相關部分儡首。非核心部分“隨緣”,多業(yè)務核心部分“要結果”偏友,只酒店核心部分“自己搞”蔬胯。
圖10 “自建”or“復用”
應對:“分”與“合”→對內分,對外合
對于分與合的問題位他,服務化是趨勢氛濒,但我們要盡量降低業(yè)務前期頻繁的變動和大需求扎堆的情況對系統(tǒng)帶來的影響,采取對內分鹅髓、對外合的方式(如圖11):
對內分:對內保留業(yè)務邏輯擴展性舞竿,如產品內部服務會根據(jù)后續(xù)業(yè)務發(fā)展方向拆分銷售規(guī)則、價格窿冯、庫存等服務骗奖,保證可擴展性。
對外合:對外保證服務邏輯完整性:如產品服務對外提供的接口,可以完成對產品的完整操作和信息獲取重归,以避免服務擴散太細,帶來的高協(xié)作成本厦凤。
圖11 “分”與“合”
應對:保證業(yè)務發(fā)展→分階段落地鼻吮,區(qū)分優(yōu)先級,保證每階段收益
系統(tǒng)的整個構建涉及面較廣较鼓,如果一次性完成周期較長椎木,同時也不利于快速驗證和優(yōu)化,所以將整個項目進行分步博烂,分步的要求有兩個:
優(yōu)先解決業(yè)務痛點香椎;
必須有階段性產出。
首先禽篱,識別項目的核心目標:高效的供給→良好的用戶體驗畜伐。
然后,確認核心目標的優(yōu)先級:
用戶體驗依賴于高效供給產生的豐富躺率、高質量產品玛界,并且供給系統(tǒng)建設完成之后需要一定的積累周期;
所以:優(yōu)先解決供給問題悼吱,然后完善用戶體驗慎框。
最后,明確每個階段的業(yè)務收益:
供給階段:效率提升
用戶體驗階段:退款率
步驟一:解決效率問題
通過對于供給系統(tǒng)后添、產品系統(tǒng)的建設笨枯,使供給效率達到300%的提升,同時在這個過程中遇西,完成了酒店系統(tǒng)的前半部分建設:供給到產品(如圖12)馅精。
圖12 供給到產品
步驟二:解決體驗問題
通過對于預付系統(tǒng)的建設,進行業(yè)務升級努溃,用戶退款率降低60%硫嘶,同時在這個過程中,完成了酒店系統(tǒng)的后部分建設:售賣到交易(如圖13)梧税。
圖13 售賣到交易
步驟三:系統(tǒng)融合
將團購系統(tǒng)中的酒店業(yè)務和酒店系統(tǒng)進行融合沦疾,保證各個業(yè)務形態(tài)共享效率、體驗的紅利第队,同時統(tǒng)一酒店的所有系統(tǒng)哮塞。(如圖14)
圖14 系統(tǒng)融合
經過以上的幾步,完成了酒店系統(tǒng)的初步建設凳谦。
圖15中忆畅,灰色部分為去尾的基礎組件部分,桃紅色部分是去尾的基礎服務部分尸执,綠色部分是未掐頭的統(tǒng)一出口部分家凯,而其余的大片深青色部分缓醋,則是酒店業(yè)務核心相關的系統(tǒng)部分。
圖15 酒店系統(tǒng)
●2.3 支撐階段:支撐業(yè)務需求绊诲、業(yè)務量的快速增長
酒店系統(tǒng)建設完成后送粱,就需要承擔起原有團購業(yè)務量,再加上用戶爆發(fā)的需求掂之,系統(tǒng)需要進一步的改進以更好的支撐業(yè)務抗俄。(圖16)
圖16 支撐階段
支撐階段我們主要從以下幾個方面來看:
質量:輪子總壞,壞一次修半天世舰;一天N個故障动雹,一直在處理線上問題。
穩(wěn)定性:調整各內部的小輪子跟压,整個車都跪了胰蝠;一個小需求上線,導致整個系統(tǒng)癱瘓裆馒。
性能:車太重姊氓,輪子hold不住了;業(yè)務量越來越大喷好,系統(tǒng)相應越來越慢翔横,逐漸hold不住了。
服務化:小輪子變大輪子梗搅;原本的一個小服務禾唁,隨著業(yè)務的發(fā)展,越來越大无切,很多人都不敢動了荡短。
應對:質量
一談到質量,可以很快想到需要從需求哆键、設計掘托、開發(fā)、上線籍嘹、維護等各個環(huán)節(jié)嚴格把關闪盔,才能保證最終的質量。
一個通用的理論是:在越前置的環(huán)節(jié)發(fā)現(xiàn)問題,造成的影響越小,恢復成本越低趁曼。
但伴隨著這個理論的同時,還有另一個維度的問題:在越前置的環(huán)節(jié)想要發(fā)現(xiàn)問題异赫,需要投入的成本通常也越高。當每天都在忙于救火時,如果我們直接硬抓單測覆蓋率塔拳,精力方面不太允許鼠证,所以我們在對于這些質量控制措施的優(yōu)先級有適當?shù)恼{整(當然各方面的事情都需要同時做)。
抓線上監(jiān)控靠抑、問題處理:保證問題快速發(fā)現(xiàn)名惩、快速解決
監(jiān)控層面:完善基礎監(jiān)控、服務監(jiān)控孕荠、業(yè)務監(jiān)控,查缺補漏攻谁,保證全流程監(jiān)控稚伍,以快速發(fā)現(xiàn)問題。
排查層面:通過系統(tǒng)調用trace和業(yè)務trace維度戚宦,保證可以根據(jù)問題情況个曙,迅速定位原因。
處理層面:內部問題通過處理工具受楼、數(shù)據(jù)修復工具快速處理垦搬,外部問題通過降級、限流等措施快速響應艳汽。
圖17 線上監(jiān)控問題處理
如圖17猴贰,當把線上的監(jiān)控、排查河狐、處理方面做的差不多的時候米绕,我們終于可以從救火中抽出一些精力來,繼續(xù)向前走馋艺。
抓上線流程:保證問題影響范圍盡量姓じ伞(圖18)
內網環(huán)境:內網線上環(huán)境,內部驗證捐祠。
灰度環(huán)境:灰度部分用戶環(huán)境碱鳞,小流量用戶驗證。
全量環(huán)境:全量用戶環(huán)境踱蛀,上線窿给。
圖18 上線環(huán)境
抓主流程自動化測試:保證問題的嚴重程度盡量低(圖19)
通過MockServer進行外部服務mock,保證測試環(huán)境穩(wěn)定性星岗;
對業(yè)務功能進行分級填大;
按業(yè)務功能優(yōu)先級覆蓋自動化測試,保關鍵流程不失俏橘。
圖19 流程自動化測試
抓設計允华、開發(fā)、自測:保證問題盡早避免、盡早發(fā)現(xiàn)
設計階段:提供標準的設計范例靴寂,保證設計產出的質量磷蜀;通過設計Review的方式,保證設計結果百炬;
開發(fā)階段:通過最佳實踐的參照褐隆,避免重復的學習和填坑成本;通過靜態(tài)掃描規(guī)則的定制剖踊,排除常見的問題庶弃;通過需求代碼Review和代碼定期走讀,對代碼精益求精德澈;
自測階段:提供單元測試規(guī)范歇攻,設定覆蓋度目標,持續(xù)集成長期檢查梆造。
圖20 設計開發(fā)自測階段監(jiān)控
應對:穩(wěn)定性
系統(tǒng)穩(wěn)定性方面可以有很多個維度進行考慮缴守,這里我們核心討論隔離問題。
分層:變與不變分離
對服務進行分層:數(shù)據(jù)層镇辉、服務層屡穗、應用層、API層忽肛,穩(wěn)定性依次降低村砂,將變化的邏輯盡量控制在上層區(qū)域,避免底層修改屹逛。(圖21)
圖21 服務分層
瘦身:核心流程與分支流程分離
主線邏輯梳理箍镜,剝離無用邏輯、非主線邏輯煎源,保證核心流程的穩(wěn)定清晰色迂,如圖22。
圖22 核心流程與分支流程分離
隔離:內部與外部分離
交互部分進行檢測手销,發(fā)現(xiàn)問題后Fail Fast歇僧,避免因為一個點的問題拖壞整個系統(tǒng)。如圖23锋拖。
圖23 內外部隔離
應對:性能
搞性能最重要的事情:數(shù)據(jù)诈悍。任何的優(yōu)化請用數(shù)據(jù)說話,不然都是瞎搞兽埃。
常用的優(yōu)化性能的幾個思路(基礎組件侥钳、網絡等層面優(yōu)化不在這里討論):簡化、異步柄错、并行舷夺、就近(如圖24)苦酱。
簡化:是不是有那么復雜
異步:是不是有那么著急
并行:是不是必須等著別人
圖24 簡化、異步给猾、并行
就近:擴機房慢了疫萤,能不能本地機房;網絡訪問慢了敢伸,能不能用本地數(shù)據(jù)等扯饶,如圖25所示。
圖25 就近
應對:服務化
隨著業(yè)務的發(fā)展池颈,原本的小服務越來越大尾序,需要考慮服務化問題。一般服務拆分有以下幾個思考維度:
業(yè)務層面:獨立性躯砰、完整性蹲诀、原子性等
服務層面:輕重、快慢弃揽、讀寫等
組織層面:組織劃分決定系統(tǒng)架構
另外,對于可以多業(yè)務公用的部分则北,可以按平臺方式構建矿微,如客服系統(tǒng)、結算系統(tǒng)等尚揣,如圖26涌矢。
圖26 平臺構建
經過一段時間的折騰,系統(tǒng)變成了如圖27所示的情況:
最下面一層的基礎設施快骗、基礎業(yè)務服務娜庇,支撐著公司各個事業(yè)群的業(yè)務;
倒數(shù)第二層的平臺層方篮,提供酒旅場景下的平臺業(yè)務服務名秀,支撐著酒店、門票藕溅、交通等業(yè)務形態(tài)匕得;
中間的產品、交易層面巾表,作為業(yè)務的服務層汁掠,保持基本穩(wěn)定;
第二層的搜索集币、交易等作為應用層考阱,更貼近業(yè)務,更輕量的發(fā)生變化鞠苟,保持靈活性乞榨。
圖27 優(yōu)化后的系統(tǒng)架構
而在這個階段中秽之,我們系統(tǒng)跑的越來越順暢,優(yōu)化效果如圖28所示姜凄。
圖28 優(yōu)化效果
●2.4 優(yōu)化階段:技術優(yōu)化政溃,推動業(yè)務進一步發(fā)展
隨著業(yè)務、系統(tǒng)的進一步發(fā)展态秧,系統(tǒng)進入優(yōu)化階段(圖29)董虱,在這個階段提出了另一個話題:如何通過技術優(yōu)化進一步推動業(yè)務發(fā)展。
圖29 優(yōu)化階段
核心原則兩個:
抓住痛點:保持思考申鱼,搞清楚想要的到底是什么愤诱;
數(shù)據(jù)說話:和性能部分一樣,沒有數(shù)據(jù)就是瞎搞捐友。
抓住痛點
如圖30淫半,原有的營銷流程是:運營同學人工收集N方的數(shù)據(jù),然后根據(jù)自己的經驗設定營銷策略匣砖,投放科吭,然后再去收集數(shù)據(jù)驗證結果。
圖30 原有營銷流程
這個時候我們可能會聽到運營同學反饋:“唉猴鲫,每天太累了对人,想休兩天假,還沒人能替我”拂共。
從正常需求路線來看牺弄,我們需要優(yōu)化給運營同學獲取數(shù)據(jù)的工具,優(yōu)化運營同學設定策略的系統(tǒng)的用戶體驗宜狐。
但我們還應該往深層次想:
為什么很累:在整個環(huán)節(jié)中势告,運營是核心環(huán)節(jié),需要從多方獲取信息抚恒、整合咱台、制定決策、投放俭驮,角色較重吵护。
為什么沒人能替:在策略設定的過程中,過于依賴運營的能力表鳍,經驗對結果產生巨大的影響馅而,而且同時經驗是不易傳授、不易積累的譬圣。
針對這個情況瓮恭,我們對于營銷系統(tǒng)進行了進一步的優(yōu)化(圖31):
經驗積累:將運營的規(guī)則設定作為經驗輸入到分析引擎,做到有積累厘熟。
角色輕化:數(shù)據(jù)整合屯蹦、分析的主要工作由機器替代维哈,運營更多起到審核、觀察的角色登澜。
圖31 優(yōu)化營銷系統(tǒng)
數(shù)據(jù)說話
如圖32所示阔挠,直連的一個典型場景是:從酒店集團或第三方獲取庫存、價格信息脑蠕,然后通過MT售賣购撼。而在這個過程中,數(shù)據(jù)的實時性對于業(yè)務的影響非常大谴仙。
圖32 直連的典型場景
需要考慮的內容包括:
問題觸發(fā)點:支付轉化率較低
縮小范圍:分析各個環(huán)節(jié)數(shù)據(jù)迂求,確認房態(tài)部分影響
明確指標:房態(tài)準確率
具體步驟(如圖33):
第一:分析用戶的訂單預訂時間,確認未來N天數(shù)據(jù)的覆蓋度晃跺,針對距離當前時間的天數(shù)設定不同的同步策略揩局,準確率上升10%;
第二:分析實際數(shù)據(jù)不實時引起問題的情況掀虎,確定通過發(fā)生驗證凌盯、交易等觸發(fā),進行數(shù)據(jù)的同步處理烹玉,準確率上升5%驰怎;
第三:分析用戶的行為數(shù)據(jù),預測出熱點數(shù)據(jù)春霍,提高同步頻率,準確率上升8%叶眉。
圖33 步驟
小結(圖34)
圖34 演進進程
三址儒、案例啟示
決策階段:一切沒有足夠信息的決定都叫“拍腦袋”;
落地階段:策略與場景衅疙、階段密切相關莲趣;不要指望一口吃成胖子;
優(yōu)化階段:優(yōu)先級很重要饱溢;全鏈路思考喧伞,短板一定會漏水;
支撐階段:保持思考绩郎;一起沒有數(shù)據(jù)支撐的優(yōu)化都是“瞎搞”潘鲫。
11月9-12日,北京國家會議中心肋杖,第六屆TOP100全球軟件案例研究峰會溉仑,美團外賣算法架構師郝井華將分享《美團配送智能調度系統(tǒng)演進》;美團點評酒旅質量團隊工具鏈負責人王鵬將分享《微服務架構下的自動化測試和持續(xù)集成工具鏈實踐》状植。
TOP100全球軟件案例研究峰會已舉辦六屆浊竟,甄選全球軟件研發(fā)優(yōu)秀案例怨喘,每年參會者達2000人次。包含產品振定、團隊必怜、架構、運維后频、大數(shù)據(jù)梳庆、人工智能等多個技術專場,現(xiàn)場學習谷歌徘郭、微軟靠益、騰訊、阿里残揉、百度等一線互聯(lián)網企業(yè)的最新研發(fā)實踐胧后。