圖片
技術(shù)治理結(jié)果的好壞往往體現(xiàn)在系統(tǒng)穩(wěn)定性、研發(fā)效率、IT成本這三個(gè)方面,過(guò)去3年時(shí)間里,我和我的團(tuán)隊(duì)一直在做這三方面的事情,從現(xiàn)在的結(jié)果看:
接下來(lái)我會(huì)介紹我們的實(shí)踐路徑,以及遇到的關(guān)鍵挑戰(zhàn)和應(yīng)對(duì)措施,希望本次分享可以給正在從事這項(xiàng)領(lǐng)域事情的朋友帶來(lái)一些參考價(jià)值。
圖片
從20年開始到現(xiàn)在,我們的業(yè)務(wù)訂單規(guī)模從大約50w/天發(fā)展到現(xiàn)在遠(yuǎn)遠(yuǎn)超過(guò)100w/天,技術(shù)團(tuán)隊(duì)規(guī)模也從300+人增長(zhǎng)到現(xiàn)如今的1000+人,在這3~4年時(shí)間里,技術(shù)治理在不同時(shí)間階段也采取了不同的處理方式:
接下來(lái),我會(huì)從基礎(chǔ)架構(gòu)演進(jìn)、穩(wěn)定性保障和IT成本治理這三個(gè)方面分享下團(tuán)隊(duì)過(guò)去幾年里的實(shí)踐總結(jié),尤其是關(guān)鍵技術(shù)方案選型、取舍的背后思考邏輯,和一些建議。
圖片
基礎(chǔ)架構(gòu)的演進(jìn)需要遵循最優(yōu)滿足業(yè)務(wù)核心訴求原則,隨著互聯(lián)網(wǎng)行業(yè)技術(shù)的發(fā)展沉淀,現(xiàn)在技術(shù)架構(gòu)的實(shí)現(xiàn)與落地的門檻越來(lái)越低,架構(gòu)師比較容易設(shè)計(jì)和交付出先進(jìn)的技術(shù)架構(gòu)方案和方案落地規(guī)劃,但先進(jìn)的技術(shù)架構(gòu)不一定是業(yè)務(wù)核心訴求的最優(yōu)解。我們演進(jìn)基礎(chǔ)架構(gòu)主要遵循兩個(gè)思考點(diǎn),作為背后的驅(qū)動(dòng)力:
「領(lǐng)先業(yè)務(wù)“半步”,不過(guò)度演進(jìn)」是我們對(duì)演進(jìn)節(jié)奏的把控,從2019年以“多個(gè)大單體服務(wù)架構(gòu)”演進(jìn)到2023年的“多泳道架構(gòu)”,每一次的架構(gòu)升級(jí)都是做增量設(shè)計(jì),對(duì)現(xiàn)有運(yùn)行時(shí)環(huán)境、中間件進(jìn)行改造,幾乎不會(huì)對(duì)業(yè)務(wù)研發(fā)產(chǎn)生影響,也不需要業(yè)務(wù)研發(fā)投入大量時(shí)間配合改造。同時(shí),每一次架構(gòu)升級(jí)都很好的解決了當(dāng)期的核心痛點(diǎn):
圖片
依據(jù)實(shí)踐經(jīng)歷,有三個(gè)方面是我們格外注意的:
因?yàn)榛A(chǔ)技術(shù)架構(gòu)本質(zhì)是由一組技術(shù)規(guī)則構(gòu)成,規(guī)則從流量調(diào)度、請(qǐng)求路由、服務(wù)調(diào)用、數(shù)據(jù)讀寫等多方面進(jìn)行了約束,且不能被打破,它天生就造成對(duì)業(yè)務(wù)技術(shù)架構(gòu)的侵入,影響了靈活性,所以好的基礎(chǔ)架構(gòu)盡可能減少對(duì)上層應(yīng)用的侵入是非常重要的;此外,選擇團(tuán)隊(duì)和業(yè)務(wù)研發(fā)同學(xué)他們最熟悉的技術(shù)通常是最優(yōu)的選擇,不要過(guò)于追求先進(jìn)技術(shù)。
我們?cè)缙诘南到y(tǒng)是由多個(gè)內(nèi)部PHP服務(wù)(服務(wù)臃腫,單個(gè)core服務(wù)包含幾百個(gè)接口很常見)組成,內(nèi)部服務(wù)之間主要通過(guò)域名+HTTP方式相互通訊,服務(wù)間通訊沒有標(biāo)準(zhǔn)的數(shù)據(jù)協(xié)議規(guī)范、缺乏基本的服務(wù)治理能力。隨著業(yè)務(wù)規(guī)模增長(zhǎng)和系統(tǒng)整體復(fù)雜度上升,我們決定向微服務(wù)架構(gòu)演進(jìn),就遇到了要么一刀切大規(guī)模改造、要么緩慢治理的選擇問題:
最終,我們選擇了semi-SOA的方案(一種類似于半服務(wù)化思路、內(nèi)部我們稱呼為泛服務(wù)調(diào)用),通過(guò)semi-SOA讓新老PHP服務(wù)、以及新老Java服務(wù)之間可以方面的互通互聯(lián),同時(shí)整體系統(tǒng)又具備服務(wù)化治理能力,最重要的是所有業(yè)務(wù)研發(fā)團(tuán)隊(duì)不需要立即參入大規(guī)模改造,這種“過(guò)渡型技術(shù)方案”給研發(fā)團(tuán)隊(duì)預(yù)留了充足的按需改造時(shí)間,有條件的業(yè)務(wù)研發(fā)團(tuán)隊(duì)可以先行改造,去PHP化,新的Java服務(wù)與現(xiàn)存PHP服務(wù)之間又可以很好的兼容。
圖片
我們大約每間隔1年時(shí)間都會(huì)進(jìn)行一輪基礎(chǔ)架構(gòu)的演進(jìn)迭代,一方面是為長(zhǎng)期大方向做一些儲(chǔ)備,另一方面是僅解決短期即將遇見的需求問題,2023年進(jìn)入多泳道架構(gòu)(一種跨AZ的高可用架構(gòu)),驅(qū)動(dòng)我們做這件事情主要有兩個(gè)方面:
并未將基礎(chǔ)架構(gòu)直接演進(jìn)到同城雙活,主要是考慮成本,一方面IT資源成本,另一方面是研發(fā)改造成本;另外就是單AZ機(jī)房環(huán)境下系統(tǒng)穩(wěn)定性還有很多提升的空間,我們認(rèn)為這樣的“保險(xiǎn)”程度目前是最合宜的。
圖片
做好技術(shù)保障,防范系統(tǒng)穩(wěn)定性風(fēng)險(xiǎn)的發(fā)生是技術(shù)治理過(guò)程中一個(gè)重要目標(biāo),過(guò)去4年時(shí)間里,我們的穩(wěn)定性保障經(jīng)歷了三個(gè)階段,每個(gè)階段都制定了差異化的核心建設(shè),通過(guò)階段性的迭代達(dá)到目前的體系化,系統(tǒng)故障數(shù)量從階段一時(shí)期的不理想狀態(tài)慢慢穩(wěn)定下來(lái),到目前達(dá)到了健康狀態(tài)。
早期階段,我們更重視基本能力的建設(shè),也就是守住關(guān)鍵戰(zhàn)場(chǎng)的基本盤能穩(wěn)定性下來(lái),早期的監(jiān)控告警平臺(tái)、限流降級(jí)工具、生產(chǎn)環(huán)境變更規(guī)范都是需要重視的戰(zhàn)場(chǎng)。
當(dāng)整體穩(wěn)定下來(lái)后,所有工程師在日常系統(tǒng)變更、服務(wù)上線都有了穩(wěn)定性意識(shí),大家都在按照統(tǒng)一的規(guī)范進(jìn)行操作,遇到問題都會(huì)按照規(guī)范進(jìn)行應(yīng)急處理了。接下來(lái)階段二我們會(huì)更關(guān)注效率和精細(xì)化的提升,我們成立了全職NOC團(tuán)隊(duì)專門對(duì)系統(tǒng)進(jìn)行盯盤和檢測(cè)、第一時(shí)間啟動(dòng)應(yīng)急,也補(bǔ)齊了像容量壓測(cè)等工具平臺(tái)的建設(shè),進(jìn)行深度的業(yè)務(wù)服務(wù)鏈路風(fēng)險(xiǎn)的治理。這個(gè)階段,應(yīng)急處理效率、故障止損時(shí)效都有了具體的提升。
最終,我們的焦點(diǎn)是如何保障長(zhǎng)期不出故障,盡可能防范黑天鵝和灰犀牛事件的發(fā)生。這個(gè)時(shí)期,除了工具能力、規(guī)范體系的不斷完善外,會(huì)更加重視穩(wěn)定性保障項(xiàng)目的日常運(yùn)營(yíng),一些簡(jiǎn)單的事情會(huì)重復(fù)反復(fù)的去做,堅(jiān)持高質(zhì)量的去做(譬如:每天都會(huì)對(duì)當(dāng)日發(fā)生的隱患事件進(jìn)行復(fù)盤,渴望發(fā)生共性問題,從而反哺回進(jìn)一步優(yōu)化工具和體系)
圖片
回顧我們整個(gè)穩(wěn)定性保障的經(jīng)歷,無(wú)論是早期的搭建工具能力、完善規(guī)范,還是中后期建制度和保障體系,都不是一帆風(fēng)順,也經(jīng)常遇到因服務(wù)雪崩導(dǎo)致故障止血不及時(shí)、忘記設(shè)置告警導(dǎo)致不能早起發(fā)現(xiàn)問題、共性的隱患在服務(wù)鏈路上未治理徹底或重新滋生導(dǎo)致故障等等,我們總結(jié)有三個(gè)關(guān)鍵地方需要格外做好:
1)保持極大的耐心,持續(xù)的高質(zhì)量做好日常“重復(fù)性”的事情,譬如鏈路服務(wù)的梳理和治理我們會(huì)間隔半年時(shí)間就會(huì)重復(fù)做一次,除了維護(hù)業(yè)務(wù)鏈路架構(gòu)和理性外,也解決過(guò)去半年新引入的問題;在日常發(fā)生的穩(wěn)定性隱患事件(非故障或冒煙)后,也會(huì)在當(dāng)日就閉環(huán)復(fù)盤,找出隱患發(fā)生的根因,舉一反三;
2)穩(wěn)定性保障最大的挑戰(zhàn)之一就是效率,長(zhǎng)期始終如一的投入很多研發(fā)時(shí)間到穩(wěn)定性上是很難的,所以凡事能提升研發(fā)在穩(wěn)定性保障上的效率非常重要。模板告警是我們過(guò)去設(shè)計(jì)的一種智能告警的工具功能,它非常有用,我們將服務(wù)運(yùn)行時(shí)狀態(tài)中通用的地方(譬如:服務(wù)某種類型的異常數(shù)量同環(huán)比波動(dòng)超過(guò)30%)都支持了模板告警,無(wú)需研發(fā)主動(dòng)配置告警,即節(jié)省了研發(fā)大量時(shí)間,也避免了研發(fā)漏配或錯(cuò)配;
3)如何長(zhǎng)期獲得一個(gè)好結(jié)果(不發(fā)生故障)是我們追求的終極目標(biāo),除了在技術(shù)上、人員素質(zhì)上要持續(xù)提升外,我們認(rèn)為有2個(gè)理念非常重要:
穩(wěn)定性日常運(yùn)營(yíng)
圖片
最后想和大家聊一下「穩(wěn)定性日常運(yùn)營(yíng)」在我們的實(shí)踐中起到的巨大作用。
穩(wěn)定性規(guī)范和應(yīng)急能力隨著規(guī)模增長(zhǎng)、系統(tǒng)復(fù)雜度上升后是需要重新迭代的,迭代的方向和內(nèi)容是依靠日常運(yùn)營(yíng)中不斷的收集和統(tǒng)計(jì),譬如NOC團(tuán)隊(duì)會(huì)收集每一天發(fā)生的所有隱患事件并給事件打上各種標(biāo)簽,每個(gè)月都會(huì)分析它們,會(huì)嘗試發(fā)現(xiàn)是否有異常的標(biāo)簽類型,并反饋給工具團(tuán)隊(duì)或者SOP規(guī)范定義團(tuán)隊(duì)進(jìn)行優(yōu)化。
日常運(yùn)營(yíng)也有多種運(yùn)營(yíng)級(jí)別,當(dāng)系統(tǒng)、團(tuán)隊(duì)、日常趨勢(shì)狀態(tài)都比較平穩(wěn)的時(shí)候,運(yùn)營(yíng)級(jí)別是最低檔的,最低檔運(yùn)營(yíng)級(jí)別對(duì)投入的要求最小,當(dāng)趨勢(shì)狀態(tài)糟糕時(shí)會(huì)調(diào)升運(yùn)營(yíng)級(jí)別,這是一種靈活的方式來(lái)平衡穩(wěn)定性保障與研發(fā)投入的做法,當(dāng)然日常運(yùn)營(yíng)的方式方法非常多,這里不做詳細(xì)展開了。
總結(jié)下,日常運(yùn)營(yíng)可以幫助我們持續(xù)發(fā)現(xiàn)更多的瑕疵和漏洞,并反哺回規(guī)范機(jī)制與工具能力,運(yùn)營(yíng)內(nèi)容涉及到規(guī)范、演練、技術(shù)治理、文化考試等多方面,它有效的防范了大家長(zhǎng)期做一件事情的過(guò)程中容易導(dǎo)致的疏忽、犯錯(cuò)風(fēng)險(xiǎn)。
圖片
最近幾年,大家都在做降本增效,IT資源成本是大頭。我們過(guò)去2年把IT單均數(shù)值優(yōu)化下降了50%以上,主要有兩個(gè)原因:首先最重要是早期業(yè)務(wù)快速發(fā)展時(shí)期,我們對(duì)IT資源使用效率關(guān)注是不夠的,所以在調(diào)整使用方式、做一些基本的技術(shù)優(yōu)化后就有了明顯的提升;另外就是建立起資源使用規(guī)范(包括不限于:資源分?jǐn)偂㈩A(yù)算管理、成本可視化、成本異常檢測(cè)等等),杜絕不合理資源使用的產(chǎn)生。
其實(shí),IT成本治理的關(guān)鍵點(diǎn)是IT資源是否做到了很高程度的科學(xué)使用,資源效率是不是達(dá)到了健康水平,唯省錢目的是不對(duì)的,這可能會(huì)對(duì)業(yè)務(wù)發(fā)展帶來(lái)?yè)p害,如果取得了IT成本治理結(jié)果而導(dǎo)致穩(wěn)定性風(fēng)險(xiǎn)或者研發(fā)效率大大降低,那這樣是不劃算的,大家根據(jù)自己公司業(yè)務(wù)發(fā)展情況平衡看待吧。
圖片
我們?cè)贗T成本治理過(guò)程中,也發(fā)現(xiàn)了很多有意思的地方經(jīng)驗(yàn)技巧,比方說(shuō)你可以聯(lián)合公司采購(gòu)團(tuán)隊(duì)去和供應(yīng)商重新談判,嘗試爭(zhēng)取更優(yōu)惠的商務(wù)折扣,往往會(huì)立竿見影。
上圖,是我們進(jìn)行IT成本治理優(yōu)化的方法矩陣,矩陣中的“降低價(jià)格/價(jià)”就非常管用,我們對(duì)不同業(yè)務(wù)模塊的資源采取合理的RI(1/3年)、Savingplan、Spot/Ondemand等購(gòu)買方式可以極大降低資源購(gòu)買成本;其余優(yōu)化方法措施不進(jìn)行詳細(xì)介紹了,大家可以自行查閱。
陳永庭,貨拉拉 技術(shù)總監(jiān)。貨拉拉技術(shù)中心核心基礎(chǔ)設(shè)施部(CI)負(fù)責(zé)人,帶領(lǐng)CI團(tuán)隊(duì)負(fù)責(zé)公司整體基礎(chǔ)架構(gòu)的演進(jìn),填補(bǔ)、維護(hù)基礎(chǔ)技術(shù)能力(中間件、框架、工具)保障技術(shù)團(tuán)隊(duì)的研發(fā)效率,負(fù)責(zé)全局穩(wěn)定性和技術(shù)保障、資源交付和IT成本治理優(yōu)化等主要工作。曾就職餓了么、騰訊、WebEx/Cisco,主要專注于中間件和基礎(chǔ)服務(wù)的研發(fā)、異地多活架構(gòu)的設(shè)計(jì)與實(shí)施落地。(聯(lián)系郵箱:sam1.chen@huolala.cn)
本文鏈接:http://www.tebozhan.com/showinfo-26-62361-0.htmlIT降本50%還賊穩(wěn)!百萬(wàn)訂單規(guī)模系統(tǒng)的技術(shù)治理實(shí)踐
聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com
上一篇: 快速在你的Vue/React應(yīng)用中實(shí)現(xiàn)SSR(服務(wù)端渲染)
下一篇: 三分鐘帶你搞懂 Future 玩法