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