天天看點

許式偉:這 4 點對架構能力起決定性作用|極客時間

你好,我是許式偉。

今天想和大家聊聊架構,以及架構之外的那點事。

在過去的工作經曆裡,我看到不少架構師都傾向于把架構看作一項純技術性的行為。他們的工作流程是這樣的:産品經理根據使用者需求做出産品設計,架構師再依據産品設計給出實作,也就是軟體的架構設計方案。

在我看來,這恐怕是個誤解。我們做架構,空有一身技術是遠遠不夠的,知識的深度和廣度,往往會對架構能力起着決定性的作用。而這些知識,從你踏入 IT 行業那一刻起,甚至更早就應該開始儲備了。

關于如何學技術,怎樣儲備知識,我想跟大家聊聊我的個人經曆,希望給你一些别樣的啟發。

1

學技術不能過于專精,需要橫向了解,向廣度挖掘。

大學時,我接觸到《理論實體》這門課,發現拉普拉斯方程式可以解高中的所有實體問題,《現代數學》中的分形幾何也讓我頗為着迷,不僅将圖書館裡所有關于分形和混沌的書都看了個遍,還專門寫了個程式,将接觸過的分形模型都用計算機模拟了一遍。

這兩門課讓我看到了許多事物之間的内在聯系,并開始思考和探究背後的原因。

這種思維方式對我後來的工作有很大影響,舉個例子,很多人認為,存儲不就是把東西存到磁盤裡嗎,跟數學有什麼關系呢?

但我發現往高深去做,存儲系統和數學有非常緊密的關聯,通常的存儲服務要保證資料不丢,必須存多份,這樣會增加存儲成本,想用更低的成本存儲,就要用到域代數。

利用域代數降低成本,是存儲領域發展的必然方向,七牛的 [存儲 2.0] 就已經采用了這種方式。是以,任何一個方向的技術要做到頂峰,都必須橫向地去了解,因為世界上一切事情都彼此關聯。

學技術是不能過于專精的,在專精的過程中遇到瓶頸,就要往廣度方向去挖掘。

這兒提一下,2022 年來了,我的專欄《許式偉的架構課》 ,訂閱量也突破了 31,000+,跟極客時間申請到了一波新年福利,直降 90 塊。這個專欄更多的是分享我對架構的感悟,也算是我 20 年工作經驗沉澱了,推薦感興趣的朋友去看看。

頁面領取禮券,到手 119

加入超級會員,免費學

2

任何一件事情,想做到極緻,就要當成學科去研究。

2000 年我加入金山,當時配置設定給我的任務是軟體的讀盤和存盤子產品。這個子產品當時的重要性并不高,看着也比較簡單,但我試圖去了解軟體的所有功能和其對應資料表達式,并無意中觸及到了軟體系統最核心的東西——資料。

我研究了微軟 Office 各個功能子產品的資料存儲方式,并據此修改了原有軟體的設計。一年後金山開始研發 WPS 2002,新版本被稱作“格式相容之戰”,為了實作對微軟 Office 檔案格式的相容,I/O 成了戰略層面的技術,存盤功能從邊緣子產品一下變成了整個 WPS 研發的核心子產品。

于是,在 2002 年底,我作為首席架構師,開始上司 WPS 的整體架構設計,用了 3 年的時間做出了 WPS Office 2005,完全重新架構開發,做三大相容:檔案格式相容、二次開發接口相容、使用者操作習慣相容,産品定位:先立後破,做 Office 的替代品。

我們在軟體架構層面做出創新,引入一個資料層,抽象出所有資料的存儲過程,改變了此前隻能通過對指令的反操作來實作的傳統“撤銷 / 重做”功能,讓所有的資料可天然復原,輕松支援多版本存盤、Undo/Redo(撤銷 / 重做),以及各種異步操作。

這個創新并不是對微軟的簡單模仿,其靈感來源于對增量存盤的思考。Office 有個“快速存盤”概念,使用者正在編輯的内容,如果已經存過了一次盤,修改過後再次存盤,隻需在原基礎上補加資料。相當于對同一個檔案,存了兩個版本的資料。

于是我想,既然可以做快速存盤,就不必關心使用者到底做了幾個操作,要實作撤銷和重做功能,隻需要基于資料狀态做前進和回退即可。

資料層的架構大大降低了研發的複雜度,在當時的金山起到了非常重要的作用。乍看上去,我像是運氣很好,做的東西從邊緣子產品變成了核心子產品。但我相信之前很多人都接觸過存盤,但有多少人深入思考過其中的原理呢?

我始終認為,任何一件事情,想要做到極緻,就必須把它當成一個學科來研究,把它琢磨透。假設這個東西很好玩,你要去思考,如果把它做到極緻,最終應該是什麼樣子。如果僅僅當成一個簡單的任務完成,能取得的成果會很有限。

3

光有技術遠遠不夠,必須了解業務及其運作方式,思考産品和商業的關系。

2006 年是我職業發展的分界點,WPS 雖然累計了不少使用者,但并沒有取得商業上的成功。如果産品無法讓使用者買單,從某種意義上說,你的價值并沒有被認證。于是我意識到,光有技術遠遠不夠,必須了解業務及其運作方式,思考産品和商業的關系。

這一年,金山開始探索辦公軟體的網際網路化,我一邊思索辦公軟體的發展方向,一邊橫向接觸其它領域。在研究搜尋引擎時,我發現分布式存儲的技術門檻相對較高,并且可以發展出獨立的商業模式。

當時移動網際網路正處于萌芽期,雷軍已經開始投資這個領域的初創公司。是以,我預想一旦手機開始流行,鍵盤就不會再是人與人互動的主要形式,圖檔、語音、視訊等富媒體會成為潮流,這将導緻未來存儲的需求出現爆發式增長。

雖然确定了新的方向,但如果想以此創業,我感覺自己還是太技術化了一點,欠缺的東西很多,于是我從零開始組建團隊,建立了金山實驗室,自由探索新産品,重點放在分布式存儲研發,并承接了金山一些内部項目,好讓自己的存儲産品落地。

4

選擇和資訊的對稱程度有關,當你對某個領域了解足夠透徹,決策過程會非常自然。

在我剛剛成立七牛時,最初的産品方向是網盤,9 月中旬産品釋出,10 月我就決定轉向底層存儲,期間隻花了一個月時間思考。這個決定做得很艱難,但從公司的核心競争力考慮,必須做調整。

原因有二點:其一是當時國内雲計算環境還不夠好,七牛如果做網盤,很難找到一個第三方存儲供應商,同時做底層存儲和網盤應用,精力上會比較分散;其二,團隊的基因偏極客,對終端使用者了解不夠深入,而程式員是我們最熟悉的群體,是以,權衡之下,我選擇了雲存儲這條路。

同時,七牛也是國内第一家選擇 Go 語言做服務端主體語言的公司,盡管當時 Go 的文法特性還未完全穩定,這個決定看上去有點激進和冒險,但實際上是經過我嚴格論證的,并非随意為之。

我一直認為:選擇和資訊的對稱程度有關。你越不了解一個東西,越會趨向選擇保守性的方案,而當你對某個領域了解得足夠透徹,你的決策過程會非常自然。

在做決策時,我的方法論是:

先試圖了解整個背景,看别人一般會怎麼做,

有哪些新興的 idea,這些 idea 是否靠譜,

如果我來做,會傾向于往哪個方向走。

當你深入研究了新技術的思考方式,以及它要解決的問題,就會知道它和自己要解決的問題有多大的相關性。這要求你具備嚴謹的思維方式,或許在很多人眼裡,嚴謹是古闆的,會扼殺創新。

但在我看來,嚴謹不是創新的對立面,而是創新的基礎。奇思妙想再好,如果不經過嚴謹的推理過程,就無法變成行動力。用這樣的方式去分析,可能會出現一些比較大膽的選擇,但并不是随意為之。

做架構也是一樣,需要做嚴謹的設計推演。這就要求我們建立完整的架構知識體系,看書學習當然是一個非常好的方式。

但我發現,當我想推薦一本經典的架構書時,并不能快速想到推薦哪本。細數我接觸過的那些與架構相關的圖書,大概有以下幾類:

架構思維類。通常從一些著名的架構理論講起,比如開閉原則、單一職責原則等等。其弊端在于過度理論化,而計算機科學歸根到底屬于工程技術類,應該實踐第一。

設計模式類。這類一般上來就進入架構的局部細節,每個模式的來龍去脈并不容易了解。就算了解了某個具體的模式,也很難真正做到活學活用。分布式系統架構設計類。通常從服務端的通用問題如一緻性、高可用、高并發挑戰等話題講起,闡述大型業務系統面臨的挑戰。這些知識雖然非常有價值,但無法延伸至通用業務架構,對大部分企業的架構實踐不具備真正的指導意義。

重構類。主要講如何如何改進代碼,其實是最實用的一類。但在我看來,一個子產品最初的地基是最重要的,基本決定了這座大廈能夠撐多久,而重構更多側重于大廈建成之後,在服務于人的前提下怎麼去修修補補,延長生命。

這些架構類的圖書并沒有達到我個人的期望,在我看來,它們都沒有揭開架構設計的全貌。是以一直以來,我就心存這樣一個念頭:“寫一本不一樣的架構書”。這個念想,正是今天這個專欄的由來,它和你現在能看得到的大部分架構書都不太一樣。

在專欄中,我會通過了解軟體架構的宏觀視角,從零開始建構出整個資訊世界,在這個過程中,講解常見業務場景的架構範式,以及這些範式在日常工程實踐中應用。

在内容設計上,我希望這是一個門檻最低的架構設計專欄,不僅幫助到想成為架構師的初學者,還可以讓已經成為架構師的技術人規避一些錯誤的經驗。

在行文上,我會盡量避免深奧的術語,以通俗易懂的文字描述資訊世界建構者們的所思所想,讓你看得懂學得會。

給粉絲的專屬開年福利:

5

關于「我」

我是許式偉,七牛雲 CEO,ECUG 社群發起人,一個開源愛好者。曾就職于金山、盛大,在搜尋和分布式存儲相關技術領域有十幾年的研發經驗。

在金山,以首席架構師的身份主導了 WPS Office 2005 的架構設計和開發。在創立金山實驗室後,以技術總監的身份主導分布式存儲開發。後加入盛大創新院,推出了“盛大網盤”和“盛大雲”。2011 年,我成為一名創業者,建立了七牛,專注企業級存儲服務。

在我目前的職業生涯中,前後大概做過十幾次的架構類的演講,但這些零星的演講,對于傳遞架構設計思維來說,遠遠不夠。

這個專欄,是我第一次完整系統地分享自己的架構經驗和與之相關的思考,我會将近 20 年的經驗毫無保留的分享給你,相信你一定能夠學有所得。

特别說一下,時間要比金錢更寶貴,找對方法跟對人,才能事半功倍,推薦你入手極客時間今年剛推出的「超級會員」,可以免費學習全站近 200 門體系課,我的專欄也在其中,特别值!

許式偉:這 4 點對架構能力起決定性作用|極客時間

繼續閱讀