阿里技術(shù)專(zhuān)家:如何成為頂尖架構(gòu)師?
我叫道延, 2014 年加入阿里,在阿里通信工作了近兩年。2016 年年底加入業(yè)務(wù)平臺(tái)團(tuán)隊(duì),當(dāng)時(shí) Leader 找我的第一件事就是要解決大促的問(wèn)題,第二件事就是解決安全生產(chǎn)的問(wèn)題。
圖片來(lái)自 Pexels
我?guī)е@個(gè)命題進(jìn)入業(yè)務(wù)平臺(tái),開(kāi)始了后面的故事。今天趁這個(gè)機(jī)會(huì),和大家分享一下關(guān)于這件事和這件事背后的一些想法,以及我對(duì)架構(gòu)師的一些思考。
01我對(duì)技術(shù)架構(gòu)的理解
頂層設(shè)計(jì)
國(guó)家每 5 年有五年計(jì)劃,這其實(shí)就是在國(guó)家整個(gè)層面的一個(gè)非常清晰的頂層架構(gòu)設(shè)計(jì),這里面對(duì)國(guó)民經(jīng)濟(jì)重大建設(shè)項(xiàng)目和生產(chǎn)力進(jìn)行宏觀的架構(gòu)設(shè)計(jì),本質(zhì)上也是一種架構(gòu)設(shè)計(jì)。
在這里面,要做什么事要定義的非常清楚,要達(dá)到什么樣的結(jié)果也要定義的非常清楚。
雙 11 的保障也是需要設(shè)計(jì)的。雙 11 本身是一個(gè)業(yè)務(wù)的活動(dòng)事件,因?yàn)橐?guī)模比較大,所以需要很多的技術(shù)來(lái)支撐這個(gè)東西。
技術(shù)里面我們可能要考慮低成本、高效率、高穩(wěn)定,并且還要引入一些更多的新技術(shù)來(lái)支撐,也要把這些東西整合好,架構(gòu)設(shè)計(jì)好,讓架構(gòu)可以流暢地支撐業(yè)務(wù)。
物理架構(gòu)
我們有單元化架構(gòu),當(dāng)然很多公司也有類(lèi)似的架構(gòu)。但是阿里的單元化架構(gòu)與其他架構(gòu)相比有一些本質(zhì)的區(qū)別。
阿里目前單元化架構(gòu)達(dá)到一個(gè)什么目標(biāo)呢?通過(guò)部署異地單元將生產(chǎn)流量完整運(yùn)行在千里之外的獨(dú)立機(jī)房,從而連續(xù)性的運(yùn)行業(yè)務(wù)。
這幾句話里面包含了非常多的關(guān)鍵點(diǎn):
- 一個(gè)是異地
- 第二個(gè)是千里之外
- 第三個(gè)是獨(dú)立
- 第四個(gè)是連續(xù)性
單元化架構(gòu)的總設(shè)計(jì)師是畢玄,因?yàn)槲覀冞@塊業(yè)務(wù)跟單元化的架構(gòu)非常相關(guān),所以要對(duì)它完全掌握和吃透才能往下走。
應(yīng)用架構(gòu)
目前中臺(tái)里面做的比較多的叫星環(huán),星環(huán)想達(dá)到架構(gòu)的本質(zhì)目的是將單純的代碼共建模式,抽象成橫向和縱向的業(yè)務(wù)包模式,做到業(yè)務(wù)與業(yè)務(wù)隔離,業(yè)務(wù)與平臺(tái)隔離。
這背后帶來(lái)的問(wèn)題是什么?我們?cè)瓉?lái)產(chǎn)生用共建的方式支撐了 50 多個(gè) BU 的會(huì)員、商品、交易、營(yíng)銷(xiāo)、資金、支付、庫(kù)存逆向等業(yè)務(wù)。
其實(shí)每個(gè)里面都是遍地開(kāi)花的 if else,這就導(dǎo)致代碼的合并也難,開(kāi)發(fā)也難,測(cè)試也難,上線也難,整個(gè)過(guò)程都很痛苦。
所以在 2015 年做星環(huán)的架構(gòu)時(shí),就是讓這些東西不那么痛苦,慢慢的解決這些問(wèn)題。
02架構(gòu)師角色
關(guān)于架構(gòu)師的角色,我來(lái)說(shuō)說(shuō)自己的想法,如下圖:
型散而神不散
架構(gòu)其實(shí)是每個(gè)業(yè)務(wù)線都有,有些技術(shù)同學(xué)本身也是架構(gòu)師的角色。
阿里很早以前是專(zhuān)門(mén)有架構(gòu)師崗位,專(zhuān)門(mén)的去做架構(gòu),但是做著做著架構(gòu)師就做沒(méi)了。
因?yàn)楹懿唤拥貧猓鼪](méi)有解決具體、真實(shí)、實(shí)際的問(wèn)題。但現(xiàn)在,阿里的架構(gòu)師崗位逐漸增加了,他們的價(jià)值在于抽象這些技術(shù)問(wèn)題,解決這些問(wèn)題。所以第一點(diǎn)是形散神不散。
優(yōu)秀的技術(shù)同學(xué)一直在用架構(gòu)的意識(shí),解決實(shí)際的技術(shù)和業(yè)務(wù)問(wèn)題,這就跟普通的技術(shù)同學(xué)有本質(zhì)的區(qū)別。
他不光是解決這一個(gè)問(wèn)題,他可能解決這一類(lèi)問(wèn)題,用架構(gòu)的思想去解決問(wèn)題。
前瞻性
為什么你能解決這個(gè)問(wèn)題,并且能解決這一類(lèi)問(wèn)題?一定是需要你看的多,想的多,這背后是大量的實(shí)踐和知識(shí)的積累,并且是站在過(guò)去的肩膀上。
阿里電商系統(tǒng)很早就建立了,我們這一代一代人在里面去做架構(gòu),都是站在前一代人的肩膀上。
要去看前一代人為什么要這么設(shè)計(jì),去想或跟他去聊,吸取他好的地方?,F(xiàn)在可能遇到新的問(wèn)題,通過(guò)其他的方法來(lái)解決一些新的問(wèn)題,需要有實(shí)踐和知識(shí)的積累。
接觸更多的人和事,用新方法解決新問(wèn)題,這個(gè)很關(guān)鍵。不能只看代碼看一個(gè)月,要找真實(shí)的業(yè)務(wù)方,你的上游、下游、合作伙伴。
比如說(shuō)做雙 11,我是 2016 年 12 月到業(yè)務(wù)平臺(tái),我花了整整三個(gè)月,跟每年雙 11 的大隊(duì)長(zhǎng)、重要人去聊雙 11。
他們是怎么理解,怎么來(lái)思考的,他們認(rèn)為什么地方有問(wèn)題。我再找他們要一些建議:我應(yīng)該怎么去做。
跟他們聊的過(guò)程中才知道我們需要做什么樣的大促,要把握什么是關(guān)鍵點(diǎn),這都是一些寶貴的財(cái)富。
解決復(fù)雜問(wèn)題
好的架構(gòu)師都在解決復(fù)雜的問(wèn)題。只有復(fù)雜的問(wèn)題,它才需要更多不一樣的技術(shù)或更新的技術(shù)來(lái)徹底解決。
高并發(fā)高可用是阿里電商面臨的基本問(wèn)題,但是架構(gòu)師要有不一樣的高并發(fā)和高穩(wěn)定性的解決思路。
當(dāng)前最緊急的問(wèn)題,比如說(shuō)用戶體驗(yàn)、提升效率、低成本等,這些問(wèn)題其實(shí)是非常復(fù)雜的。
很多同學(xué)都想解決這個(gè)問(wèn)題,很多種方法都在解決,但是整體來(lái)說(shuō)效果不是特別明顯。
因?yàn)樗溌诽L(zhǎng)了,鏈路長(zhǎng)代表影響的業(yè)務(wù)和影響的人更多,你必須得換一種新的思路來(lái)考慮這個(gè)問(wèn)題。
同時(shí)用戶分層,內(nèi)部的技術(shù)人員增多,這就倒逼我們?nèi)グ褟?fù)雜的問(wèn)題簡(jiǎn)化,所以我會(huì)把解決復(fù)雜問(wèn)題定義為架構(gòu)師的一個(gè)典型角色。
03架構(gòu)師需要什么樣的能力
架構(gòu)師需要什么樣的能力?我參考了外面一些同學(xué)的分享,總結(jié)出來(lái)其實(shí)就是:發(fā)現(xiàn)問(wèn)題,分析定義問(wèn)題,解決問(wèn)題。
發(fā)現(xiàn)問(wèn)題
對(duì)局部和全局的問(wèn)題需要有發(fā)現(xiàn)的眼光,更應(yīng)該有發(fā)現(xiàn)未發(fā)生問(wèn)題的能力,哪些需要治標(biāo),哪些需要治本,這是發(fā)現(xiàn)問(wèn)題的基本判斷力。
現(xiàn)在系統(tǒng)可能沒(méi)什么大問(wèn)題,但你要有發(fā)現(xiàn)的眼光,這些問(wèn)題如果不解決,未來(lái)業(yè)務(wù)可能遇到更嚴(yán)重的問(wèn)題。
架構(gòu)師看問(wèn)題的眼光和別人不一樣,不要只看見(jiàn)眼前這一個(gè)問(wèn)題,還要看見(jiàn)這個(gè)問(wèn)題背后是什么,這一類(lèi)問(wèn)題背后是什么,我怎么能用抽象的方法解決一類(lèi)問(wèn)題。
想好了以后,我就把當(dāng)前的這個(gè)問(wèn)題先解決掉,其他的問(wèn)題用抽象的方式去解決它。
定義和分析問(wèn)題
阿里不缺解決問(wèn)題的同學(xué),但是缺定義問(wèn)題的同學(xué)。你怎么知道這是個(gè)問(wèn)題,并且把這個(gè)問(wèn)題定義清楚。
需要將發(fā)現(xiàn)的問(wèn)題進(jìn)行抽象和歸納,定義出問(wèn)題的基本要素,同時(shí)定義出問(wèn)題的短期和長(zhǎng)期方案,推進(jìn)技術(shù)整體的進(jìn)步。
定義問(wèn)題這個(gè)要求非常高。大家平時(shí)在解決業(yè)務(wù)技術(shù)問(wèn)題的時(shí)候,也需要具備分析和定義問(wèn)題的能力,把一個(gè)問(wèn)題定義清楚了,可以真正推動(dòng)業(yè)務(wù)往前進(jìn)。
解決問(wèn)題需要實(shí)施路徑和解決方案,協(xié)同團(tuán)隊(duì)和上下游,推進(jìn)問(wèn)題的解決。架構(gòu)要解決的問(wèn)題一定不是一個(gè)局部問(wèn)題,一定是一個(gè)全局問(wèn)題。
架構(gòu)師一定會(huì)碰到各種各樣的角色和鏈路,他要有這個(gè)能力去定義問(wèn)題的解決方案和實(shí)施路徑,同時(shí)要協(xié)同團(tuán)隊(duì)。
他不能悶頭做事,真的要抬頭,并且要有良好的溝通能力,跟所有的同學(xué)達(dá)成共識(shí)才能往前進(jìn)。
第一點(diǎn)就是溝通能力非常關(guān)鍵。你怎么把這個(gè)問(wèn)題說(shuō)清楚,切中問(wèn)題的點(diǎn),同時(shí)也能幫助上下游帶來(lái)實(shí)際的效果。
第二點(diǎn)是架構(gòu)師需要能救火,但不僅僅是救眼前的火,應(yīng)該救未來(lái)的火,架構(gòu)師救火能力要很強(qiáng)。
我來(lái)阿里之前在做一個(gè) CRM 系統(tǒng)。后來(lái)我要解決很多業(yè)務(wù)的問(wèn)題,要把它抽象出來(lái),去做業(yè)務(wù)問(wèn)題下面的基礎(chǔ)平臺(tái)。
再后來(lái)發(fā)現(xiàn)基礎(chǔ)平臺(tái)的問(wèn)題如果要解決得更徹底,還要做下面的中間件,這樣層層深入就會(huì)把整個(gè)鏈路打通看懂。
從 2017 年到業(yè)務(wù)平臺(tái)以后,我學(xué)到了很多,包括它的系統(tǒng)鏈路是什么樣的,數(shù)據(jù)鏈路是怎么樣的,整個(gè)調(diào)用鏈路是怎么樣的,它和底層的關(guān)系是什么樣的,可能遇到什么樣的問(wèn)題?
現(xiàn)在可能出現(xiàn)這個(gè)問(wèn)題,再往后運(yùn)行是不是會(huì)出現(xiàn)其他的問(wèn)題。通過(guò)救火的過(guò)程,一次次積累對(duì)系統(tǒng)的了解。
所以,每一次過(guò)去的積累對(duì)于解決現(xiàn)在的問(wèn)題還都有很大的幫助,每一次問(wèn)題的解決又能讓自己對(duì)全局有更深的理解。
04架構(gòu)師的挑戰(zhàn)
全局式視角
比如看到“會(huì)員”這個(gè)業(yè)務(wù)功能,你不能僅僅看到這個(gè)功能本身,你要看到會(huì)員上面的業(yè)務(wù)是什么,誰(shuí)在用會(huì)員,這叫全局。
同時(shí),會(huì)員用得最多的是導(dǎo)購(gòu)和交易,登錄僅僅是會(huì)員本身一個(gè)很小的業(yè)務(wù)功能而已。
基于會(huì)員,我們有導(dǎo)購(gòu)、有交易,把這些東西要串起來(lái)看明白,就能完整的認(rèn)識(shí)到會(huì)員到底提供了什么,一定要有一個(gè)全局視角。
技術(shù)廣度
阿里的技術(shù)特別復(fù)雜,能入職到阿里來(lái),把阿里的整個(gè)技術(shù)棧完整摸一遍的同學(xué)真的是很了不起。
以單元化架構(gòu)為例,我們可能需要了解端,有 iOS、安卓、PC,還要了解 CDN、網(wǎng)絡(luò)、接入層、服務(wù)發(fā)現(xiàn)、服務(wù)路由、HSF 等。數(shù)據(jù)庫(kù)包括儲(chǔ)存同步、多點(diǎn)寫(xiě),還有消息中間件等。
這些技術(shù)和產(chǎn)品其實(shí)平時(shí)同學(xué)們都在用,但架構(gòu)師不僅在用,架構(gòu)師真的是要去把玩,徹底了解透徹這些東西,這是關(guān)鍵點(diǎn)。
給大家舉個(gè)例子,像數(shù)據(jù)庫(kù)組成的強(qiáng)同步,對(duì)我們后續(xù)技術(shù)架構(gòu)演進(jìn)和業(yè)務(wù)的改進(jìn)都有極大的影響,這個(gè)時(shí)候大家要對(duì)數(shù)據(jù)庫(kù)有一個(gè)全局的認(rèn)識(shí)。
2009 年 Oracle 數(shù)據(jù)庫(kù)用得非常多。我當(dāng)時(shí)不是做數(shù)據(jù)庫(kù)相關(guān)的,但是為了把 Oracle 數(shù)據(jù)庫(kù)研究透,去學(xué)了非常多 Oracle 數(shù)據(jù)庫(kù)相關(guān)的內(nèi)容。
了解里面的邏輯,知道它的開(kāi)發(fā)態(tài)、運(yùn)行態(tài)、管理態(tài)等。知識(shí)都是有延續(xù)的,后來(lái)到了阿里,可能花很短的幾個(gè)小時(shí)就能把現(xiàn)在阿里的數(shù)據(jù)庫(kù)吃透。
技術(shù)的廣度非常依賴于積累。你一定要帶著問(wèn)題去想,這個(gè)時(shí)候你才有記憶力,有了積累,慢慢的你技術(shù)的廣度就會(huì)越來(lái)越深。
你要了解數(shù)據(jù)庫(kù),你必須對(duì)下層的網(wǎng)絡(luò)了解,所以我們要對(duì)網(wǎng)絡(luò)、CDN 有更進(jìn)一步的認(rèn)識(shí)。
2009 年,我大概花了兩年的時(shí)間學(xué)習(xí)網(wǎng)絡(luò),對(duì)交換機(jī)、路由器、骨干網(wǎng)、城域網(wǎng),運(yùn)營(yíng)商怎么建網(wǎng),自建的 IDC 怎么建網(wǎng)有了比較全面的了解,包括每天跟網(wǎng)絡(luò)怎么交互,為什么重傳高?
為什么延時(shí)高,TCP/IP 第 4 層的下面 IP 第 3 層是怎么操作的,IP 下面的 MAC 層是怎么操作的,大家都要深入了解一下。
這些積累最能體現(xiàn)出價(jià)值的就是在救火的時(shí)候。我去救火時(shí)根本不會(huì)用現(xiàn)在那些平臺(tái)化的工具,直接上手用 TCP 代碼抓原始發(fā)文,馬上能分析出很多問(wèn)題。這就是平時(shí)的積累,慢慢的你就會(huì)對(duì)全局有認(rèn)知。
2019 年整個(gè)核心系統(tǒng)上云的時(shí)候,同樣跟技術(shù)的廣度有關(guān)系,我們上云發(fā)生了什么變化?
整個(gè)底座到云上去了,計(jì)算、存儲(chǔ)、網(wǎng)絡(luò)全到云上去了,那要了解云啊。
在2018 年的時(shí)候,我基本把阿里云的云產(chǎn)品都了解了一遍,這時(shí)就會(huì)對(duì)阿里云的網(wǎng)絡(luò)、技術(shù)有本質(zhì)的了解。
架構(gòu)師一定要有技術(shù)的廣度。大家一定要學(xué)會(huì)積累,積累到一定程度以后,你會(huì)做到無(wú)師自通。
比如你了解網(wǎng)絡(luò)、數(shù)據(jù)庫(kù),然后你又了解了磁盤(pán) 30%,當(dāng)這些知識(shí)逐漸成體系了,你是有能力去消化和打通不同技術(shù)點(diǎn)背后的相關(guān)性,對(duì)于你的個(gè)人能力的提升和認(rèn)知層面的提升有巨大的幫助。
持續(xù)學(xué)習(xí)
每時(shí)每刻都在發(fā)生技術(shù)的升級(jí)和變革,只有持續(xù)不斷的學(xué)習(xí),才能對(duì)老的架構(gòu)有新的認(rèn)識(shí),對(duì)于老的問(wèn)題產(chǎn)生新的解法。
要了解業(yè)界最近在發(fā)生什么變化,這個(gè)領(lǐng)域最關(guān)鍵的項(xiàng)目和人在做什么,學(xué)習(xí)他們的技術(shù),學(xué)習(xí)他們的論文。
我以前每天大概 2 到 3 個(gè)小時(shí)是用來(lái)學(xué)習(xí),這幾個(gè)小時(shí)的學(xué)習(xí)時(shí)間是我最放松的時(shí)間,不用去想太多事。
學(xué)習(xí)也不是說(shuō)去瞎學(xué),一定要有體系化的。首先跟你工作相關(guān)的,要體系化的去學(xué)習(xí),從最下到最上體系化去學(xué)習(xí),學(xué)習(xí)完了以后你會(huì)有新的不一樣的認(rèn)識(shí)。把你的想法可以向你的團(tuán)隊(duì)說(shuō)出來(lái),向你的主管說(shuō)出來(lái)。
還有就是要去看論文。跟數(shù)據(jù)相關(guān)的,OLTP 和 OLAP 都有非常好的論文。看了論文以后再看其他人對(duì)論文的理解。
一定要去看一些比較好的東西,跟工作相關(guān)的都可以去看,每天去學(xué)習(xí)。每天花 2 到 3 個(gè)小時(shí)去學(xué)習(xí),三年以后你就知道自己跟別人完全不一樣。
有人說(shuō)過(guò):在一個(gè)行業(yè)你能付出 1 萬(wàn)個(gè)小時(shí),你會(huì)跟別人形成本質(zhì)的區(qū)別。但是在我們這個(gè)領(lǐng)域,1000 個(gè)小時(shí)就形成差別。
業(yè)務(wù)理解
這個(gè)一定要到實(shí)踐中去,不是業(yè)務(wù)離不開(kāi)架構(gòu),而是架構(gòu)離不開(kāi)業(yè)務(wù),業(yè)務(wù)、架構(gòu)、技術(shù)要三位一體才能達(dá)到最佳的效果。
我們平時(shí)學(xué)習(xí)、實(shí)踐的過(guò)程就在磨刀,但你不能說(shuō)你天天在磨刀,總得要用這個(gè)刀。
這就是跟業(yè)務(wù)結(jié)合起來(lái),用不一樣的思路解決實(shí)際的業(yè)務(wù)問(wèn)題,會(huì)帶來(lái)更低的成本、更高的效率。
結(jié)果
要將技術(shù)的先進(jìn)性轉(zhuǎn)化為業(yè)務(wù)的先進(jìn)性,忘掉屁股。這個(gè)“忘掉屁股”就是你做很多事情不是你一個(gè)人能搞定的,復(fù)雜、越大的事情是要協(xié)同更多的人。
如果你就是為了你自己,比如說(shuō) KPI 去做事,我告訴你,這個(gè)事情做一次兩次可以,但后面就沒(méi)人跟你配合。你一定要忘掉屁股,才能慢慢的把這個(gè)事情做成,真正做到你想要的結(jié)果。
遇山開(kāi)道、遇水架橋,這講的是決心。很多時(shí)候問(wèn)題確實(shí)很難解決,也需要協(xié)調(diào)更多的人。很多人可能會(huì)放棄。
我們最近在做架構(gòu)的升級(jí),用國(guó)產(chǎn)化芯片,從底到上全鏈路的。如果有一方配合不到位,這事情就很難推進(jìn)了。
從 4 月份一直到 7 月底被阻礙了兩次,第三次如果再?zèng)]辦法開(kāi)展下去,這個(gè)事情就徹底的結(jié)束了。
我們當(dāng)時(shí)把整個(gè)團(tuán)隊(duì)召集到一起,互相打氣:一定要干成。遇山開(kāi)道、遇水架橋,有什么問(wèn)題拋出來(lái),大家一起來(lái)解決,要有決心,更要果斷。
作者:道延
編輯:陶家龍
出處:轉(zhuǎn)載自公眾號(hào)阿里巴巴中間件(ID:Aliware_2018)