關於架構師:角色、能力和挑戰

来源:https://www.cnblogs.com/88223100/archive/2022/10/09/About-architects_Roles-capabilities-and-challenges.html
-Advertisement-
Play Games

導讀:成為一名架構師可能是很多開發者的技術追求之一。那麼如何理解架構?架構師是一個什麼樣的角色,需要具備什麼樣的能力?在架構師的道路上,會面臨哪些挑戰?本文作者道延分享他對架構以及架構師的思考和相關實踐,希望對同學們有所啟發。 ...


 

 導讀:成為一名架構師可能是很多開發者的技術追求之一。那麼如何理解架構?架構師是一個什麼樣的角色,需要具備什麼樣的能力?在架構師的道路上,會面臨哪些挑戰?本文作者道延分享他對架構以及架構師的思考和相關實踐,希望對同學們有所啟發。

 

我叫道延, 2014 年加入阿裡,在阿裡通信工作了近兩年。2016 年年底加入業務平臺團隊,當時 Leader 找我的第一件事就是要解決大促的問題,第二件事就是解決安全生產的問題。

 

我帶著這個命題進入業務平臺,開始了後面的故事。本文和大家分享一下關於這件事和這件事背後的一些想法,以及我對架構師的一些思考。

一  我對技術架構的理解

 

頂層設計
國家每 5 年有五年計劃,這其實就是在國家整個層面的一個非常清晰的頂層架構設計,這裡面對國民經濟重大建設項目和生產力進行巨集觀的架構設計,本質上也是一種架構設計。在這裡面,要做什麼事要定義的非常清楚,要達到什麼樣的結果也要定義的非常清楚。
雙 11 的保障也是需要設計的。雙 11 本身是一個業務的活動事件,因為規模比較大,所以需要很多的技術來支撐這個東西。技術裡面我們可能要考慮低成本、高效率、高穩定,並且還要引入一些更多的新技術來支撐,也要把這些東西整合好,架構設計好,讓架構可以流暢地支撐業務。


物理架構
我們有單元化架構,當然很多公司也有類似的架構。但是阿裡的單元化架構與其他架構相比有一些本質的區別。
阿裡目前單元化架構達到一個什麼目標呢?通過部署異地單元將生產流量完整運行在千里之外的獨立機房,從而連續性的運行業務。這幾句話裡面包含了非常多的關鍵點,一個是異地,第二個是千里之外,第三個是獨立,第四個是連續性。
單元化架構的總設計師是畢玄,因為我們這塊業務跟單元化的架構非常相關,所以要對它完全掌握和吃透才能往下走。


應用架構
目前中台裡面做的比較多的叫星環,星環想達到架構的本質目的是將單純的代碼共建模式,抽象成橫向和縱向的業務包模式,做到業務與業務隔離,業務與平臺隔離。
這背後帶來的問題是什麼?我們原來產生用共建的方式支撐了 50 多個 BU 的會員、商品、交易、營銷、資金、支付、庫存逆向等業務,其實每個裡面都是遍地開花的 if  else,這就導致代碼的合併也難,開發也難,測試也難,上線也難,整個過程都很痛苦。所以在 2015 年做星環的架構時,就是讓這些東西不那麼痛苦,慢慢地解決這些問題。 

二  架構師是一個什麼樣的角色

 

關於架構師的角色,我來說說自己的想法。

形散而神不散
架構其實是每個業務線都有,有些技術同學本身也是架構師的角色。阿裡很早以前是專門有架構師崗位,專門的去做架構,但是做著做著架構師就做沒了。因為很不接地氣,它沒有解決具體、真實、實際的問題。但現在,阿裡的架構師崗位逐漸增加了,他們的價值在於抽象這些技術問題,解決這些問題。所以第一點是形散神不散。優秀的技術同學一直在用架構的意識,解決實際的技術和業務問題,這就跟普通的技術同學有本質的區別。他不光是解決這一個問題,他可能解決這一類問題,用架構的思想去解決問題。


前瞻性
為什麼你能解決這個問題,並且能解決這一類問題?一定是需要你看的多,想的多,這背後是大量的實踐和知識的積累,並且是站在過去的肩膀上。
阿裡電商系統很早就建立了,我們這一代一代人在裡面去做架構,都是站在前一代人的肩膀上。要去看前一代人為什麼要這麼設計,去想或跟他去聊,吸取他好的地方。現在可能遇到新的問題,通過其他的方法來解決一些新的問題,需要有實踐和知識的積累。
接觸更多的人和事,用新方法解決新問題,這個很關鍵。不能只看代碼看一個月,要找真實的業務方,你的上游、下游、合作伙伴。比如說做雙 11,我是 2016年12月到業務平臺,我花了整整三個月,跟每年雙 11 的大隊長、重要人去聊雙 11。他們是怎麼理解,怎麼來思考的,他們認為什麼地方有問題。我再找他們要一些建議:我應該怎麼去做。跟他們聊的過程中才知道我們需要做什麼樣的大促,要把握什麼是關鍵點,這都是一些寶貴的財富。


解決複雜問題
好的架構師都在解決複雜的問題。只有複雜的問題,它才需要更多不一樣的技術或更新的技術來徹底解決。高併發高可用是阿裡電商面臨的基本問題,但是架構師要有不一樣的高併發和高穩定性的解決思路。
當前最緊急的問題,比如說用戶體驗、提升效率、低成本等,這些問題其實是非常複雜的。很多同學都想解決這個問題,很多種方法都在解決,但是整體來說效果不是特別明顯。因為它鏈路太長了,鏈路長代表影響的業務和影響的人更多,你必須得換一種新的思路來考慮這個問題。同時用戶分層,內部的技術人員增多,這就倒逼我們去把複雜的問題簡化,所以我會把解決複雜問題定義為架構師的一個典型角色。

三  架構師需要什麼樣的能力


架構師需要什麼樣的能力?我參考了外面一些同學的分享,總結出來其實就是發現問題、分析定義問題、解決問題。

 

 

發現問題
對局部和全局的問題需要有發現的眼光,更應該有發現未發生問題的能力,哪些需要治標,哪些需要治本,這是發現問題的基本判斷力。現在系統可能沒什麼大問題,但你要有發現的眼光,這些問題如果不解決,未來業務可能遇到更嚴重的問題。架構師看問題的眼光和別人不一樣,不要只看見眼前這一個問題,還要看見這個問題背後是什麼,這一類問題背後是什麼,我怎麼能用抽象的方法解決一類問題。想好了以後,我就把當前的這個問題先解決掉,其他的問題用抽象的方式去解決它。


定義和分析問題
阿裡不缺解決問題的同學,但是缺定義問題的同學。你怎麼知道這是個問題,並且把這個問題定義清楚。需要將發現的問題進行抽象和歸納,定義出問題的基本要素,同時定義出問題的短期和長期方案,推進技術整體的進步。
定義問題這個要求非常高。大家平時在解決業務技術問題的時候,也需要具備分析和定義問題的能力,把一個問題定義清楚了,可以真正推動業務往前進。


解決問題
解決問題需要實施路徑和解決方案,協同團隊和上下游,推進問題的解決。架構要解決的問題一定不是一個局部問題,一定是一個全局問題。架構師一定會碰到各種各樣的角色和鏈路,他要有這個能力去定義問題的解決方案和實施路徑,同時要協同團隊。他不能悶頭做事,真的要抬頭,並且要有良好的溝通能力,跟所有的同學達成共識才能往前進。
第一點就是溝通能力非常關鍵。你怎麼把這個問題說清楚,切中問題的點,同時也能幫助上下游帶來實際的效果。第二點是架構師需要能救火,但不僅僅是救眼前的火,應該救未來的火,架構師救火能力要很強。
我來阿裡之前在做一個 CRM 系統。後來我要解決很多業務的問題,要把它抽象出來,去做業務問題下麵的基礎平臺。再後來發現基礎平臺的問題如果要解決得更徹底,還要做下麵的中間件,這樣層層深入就會把整個鏈路打通看懂。
從 2017 年到業務平臺以後,我學到了很多,包括它的系統鏈路是什麼樣的,數據鏈路是怎麼樣的,整個調用鏈路是怎麼樣的,它和底層的關係是什麼樣的,可能遇到什麼樣的問題?現在可能出現這個問題,再往後運行是不是會出現其他的問題。通過救火的過程,一次次積累對系統的瞭解。所以,每一次過去的積累對於解決現在的問題還都有很大的幫助,每一次問題的解決又能讓自己對全局有更深的理解。 

四  架構師的挑戰

 

 

 

全局式視角
比如看到“會員”這個業務功能,你不能僅僅看到這個功能本身,你要看到會員上面的業務是什麼,誰在用會員,這叫全局。同時,會員用得最多的是導購和交易,登錄僅僅是會員本身一個很小的業務功能而已。基於會員,我們有導購、有交易,把這些東西要串起來看明白,就能完整的認識到會員到底提供了什麼,一定要有一個全局視角。


技術廣度
阿裡的技術特別複雜,能入職到阿裡來,把阿裡的整個技術棧完整摸一遍的同學真的是很了不起。以單元化架構為例,我們可能需要瞭解端,有 iOS、安卓、PC,還要瞭解 CDN、網路、接入層、服務發現、服務路由、HSF 等。資料庫包括儲存同步、多點寫,還有消息中間件等。這些技術和產品其實平時同學們都在用,但架構師不僅在用,架構師真的是要去把玩,徹底瞭解透徹這些東西,這是關鍵點。
給大家舉個例子,像資料庫組成的強同步,對我們後續技術架構演進和業務的改進都有極大的影響,這個時候大家要對資料庫有一個全局的認識。
2009 年 Oracle 資料庫用得非常多。我當時不是做資料庫相關的,但是為了把 Oracle 資料庫研究透,去學了非常多 Oracle 資料庫相關的內容。瞭解裡面的邏輯,知道它的開發態、運行態、管理態等。知識都是有延續的,後來到了阿裡,可能花很短的幾個小時就能把現在阿裡的資料庫吃透。
技術的廣度非常依賴於積累。你一定要帶著問題去想,這個時候你才有記憶力,有了積累,慢慢的你技術的廣度就會越來越深。你要瞭解資料庫,你必須對下層的網路瞭解,所以我們要對網路、CDN 有更進一步的認識。
2009 年,我大概花了兩年的時間學習網路,對交換機、路由器、骨幹網、城域網,運營商怎麼建網,自建的 IDC 怎麼建網有了比較全面的瞭解,包括每天跟網路怎麼交互,為什麼重傳高?為什麼延時高,TCP/IP 第 4 層的下麵 IP 第 3 層是怎麼操作的,IP 下麵的 MAC 層是怎麼操作的,大家都要深入瞭解一下。
這些積累最能體現出價值的就是在救火的時候。我去救火時根本不會用現在那些平臺化的工具,直接上手用 TCP 代碼抓原始發文,馬上能分析出很多問題。這就是平時的積累,慢慢的你就會對全局有認知。
2019 年整個核心系統上雲的時候,同樣跟技術的廣度有關係,我們上雲發生了什麼變化?整個底座到雲上去了,計算、存儲、網路全到雲上去了,那要瞭解雲啊。在2018 年的時候,我基本把阿裡雲的雲產品都瞭解了一遍,這時就會對阿裡雲的網路、技術有本質的瞭解。
架構師一定要有技術的廣度。大家一定要學會積累,積累到一定程度以後,你會做到無師自通。比如你瞭解網路、資料庫,然後你又瞭解了磁碟30%,當這些知識逐漸成體系了,你是有能力去消化和打通不同技術點背後的相關性,對於你的個人能力的提升和認知層面的提升有巨大的幫助。


持續學習
每時每刻都在發生技術的升級和變革,只有持續不斷的學習,才能對老的架構有新的認識,對於老的問題產生新的解法。要瞭解業界最近在發生什麼變化,這個領域最關鍵的項目和人在做什麼,學習他們的技術,學習他們的論文。我以前每天大概 2 到 3 個小時是用來學習,這幾個小時的學習時間是我最放鬆的時間,不用去想太多事。
學習也不是說去瞎學,一定要有體系化的。首先跟你工作相關的,要體系化的去學習,從最下到最上體系化去學習,學習完了以後你會有新的不一樣的認識。把你的想法可以向你的團隊說出來,向你的主管說出來。
還有就是要去看論文。跟數據相關的,OLTP 和 OLAP 都有非常好的論文。看了論文以後再看其他人對論文的理解。一定要去看一些比較好的東西,跟工作相關的都可以去看,每天去學習。每天花 2 到 3 個小時去學習,三年以後你就知道自己跟別人完全不一樣。有人說過:在一個行業你能付出 1 萬個小時,你會跟別人形成本質的區別。但是在我們這個領域,1000 個小時就形成差別。


業務理解
這個一定要到實踐中去,不是業務離不開架構,而是架構離不開業務,業務、架構、技術要三位一體才能達到最佳的效果。我們平時學習、實踐的過程就在磨刀,但你不能說你天天在磨刀,總得要用這個刀。這就是跟業務結合起來,用不一樣的思路解決實際的業務問題,會帶來更低的成本、更高的效率。


結果
要將技術的先進性轉化為業務的先進性,忘掉屁股。這個“忘掉屁股”就是你做很多事情不是你一個人能搞定的,複雜、越大的事情是要協同更多的人。如果你就是為了你自己,比如說 KPI 去做事,我告訴你,這個事情做一次兩次可以,但後面就沒人跟你配合。你一定要忘掉屁股,才能慢慢的把這個事情做成,真正做到你想要的結果。
遇山開道、遇水架橋,這講的是決心。很多時候問題確實很難解決,也需要協調更多的人。很多人可能會放棄。我們最近在做架構的升級,用國產化晶元,從底到上全鏈路的。如果有一方配合不到位,這事情就很難推進了。從 4 月份一直到 7 月底被阻礙了兩次,第三次如果再沒辦法開展下去,這個事情就徹底的結束了。我們當時把整個團隊召集到一起,互相打氣:一定要乾成。遇山開道、遇水架橋,有什麼問題拋出來,大家一起來解決,要有決心,更要果斷。

 

作者丨道延

本文來自博客園,作者:古道輕風,轉載請註明原文鏈接:https://www.cnblogs.com/88223100/p/About-architects_Roles-capabilities-and-challenges.html


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 存儲引擎 1.基本介紹 基本介紹 MySQL的表類型由存儲引擎(Storage Engines)決定,主要包括MyISAM、innoDB、Memory等 MySQL數據表主要支持六種類型,分別是:CSV,Memory,ARCHIVE,MRG_MYISAM,MYISAM,InnoBDB。 這六種又分為 ...
  • 本期我們帶大家回顧一下無倦同學的直播分享《ChunJun類載入器隔離》,ChunJun類載入器隔離的方案是我們近期探索的一個新方案,這個方案目前還不是非常成熟,希望能藉由此次分享與大家一起探討下這方案,如果大家有一些新的想法歡迎大家在github上給我提issue或者pr。 一、Java 類載入器解 ...
  • 摘要:GaussDB(for Redis)推出了雙活解決方案,基於GaussDB NoSQL統一架構,通過兩個資料庫實例之間的數據同步,達成數據的一致性。 本文分享自華為雲社區《【雲圖說】一張圖瞭解GaussDB(for Redis)雙活解決方案》,作者: 高斯Redis官方博客。 網路異常、電力故 ...
  • 摘要:本文從零開始引導與大家一起學習圖知識。希望大家可以通過本教程學習如何使用圖資料庫與圖計算引擎。本篇將以華為雲圖引擎服務來輔助大家學習如何使用圖資料庫與圖計算引擎。 本文分享自華為雲社區《從零開始學Graph Database(1)》,作者:弓乙 。 基礎概念 什麼是圖? 首先,我們需要明確圖 ...
  • 這裡會介紹ClickHouse幾種資料庫引擎,已經對應的特點和應用的場景。資料庫引擎允許您處理數據表。預設情況下,ClickHouse使用Atomic資料庫引擎。它提供了可配置的table engines和SQL dialect。 目前的資料庫引擎: MySQL MaterializeMySQL L ...
  • 我們平時會寫各種各樣或簡單或複雜的sql語句,提交後就會得到我們想要的結果集。比如sql語句,”select * from t_user where user_id > 10;”,意在從表t_user中篩選出user_id大於10的所有記錄。你有沒有想過從一條sql到一個結果集,這中間經歷了多少坎坷... ...
  • 如何使用KrpanoToolJS在瀏覽器切圖 框架DEMO 框架源碼地址 【獨闢蹊徑】逆推Krpano切圖演算法,實現在瀏覽器切多層級瓦片圖 一、功能介紹 在瀏覽器中將全景圖轉為立方體圖、多層級瓦片圖 備註: 切圖的邏輯、縮略圖、預覽圖均以krpano為標準,如果是使用krpano來開發全景的,可以直 ...
  • 摘要:要想減少迴流和重繪的次數,首先要瞭解迴流和重繪是如何觸發的。 本文分享自華為雲社區《前端頁面之“迴流重繪”》,作者:CoderBin。 “迴流重繪”是什麼? 在HTML中,每個元素都可以理解成一個盒子,在瀏覽器解析過程中,會涉及到迴流與重繪: 迴流:佈局引擎會根據各種樣式計算每個盒子在頁面上的 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...