前言
為什麼寫這本書
每個程式師心中都有一個成為架構師的夢想,夢想是美好的,但道路是曲折的。
我在 2006 年開始參與架構設計,原以為學習架構設計就像學習一門程式設計語言一樣,先學習基本語法,再研究細節和原理,然後實踐一下就能夠快速掌握。但真正實踐後才發現,架構設計的難度和複雜度要高很多。從最早開始接觸架構設計,到自我感覺初步完整掌握架構設計,至少6 年時間。等到自我感覺徹底掌握架構設計的精髓,至少8年時間(當然,這過程中我不是一直在做架構設計)。
我曾經以為是自己天資愚笨才會這樣,後來我帶了團隊,看到幾乎每個程式師在嘗試架構設計的時候,都面臨著我遇到過的各種困惑和瓶頸。特別是我作為職業等級晉升評委的時候,發現很多同學技術能力很強,業務也不錯,但卻卡在了架構設計這 部分。我意識到這應該不是個人天資的問題,而是架構設計本身的一些特性導致的。
我總結了幾個架構設計相關的特性。
1. 架構設計的思維和程式設計的思維差異很大
架構設計的關鍵思維是判斷和取捨,程式設計的關鍵思維是邏輯和實現。很多程 式師在轉變為架構師後,很難一開始就意識到這個差異,還是按照寫代碼的方式去思考架構,這樣會導致很多困惑。
2. 架構設計沒有體系化的培訓和訓練機制
大學的課程幾乎沒有架構設計相關的課程,架構設計的書也只是關注某個架構設計點,沒有體系化的架構設計書籍,導致程式師在學習上沒有明確的指導,只能自己慢慢摸索,效率低,容易踩坑。
3. 程式師對架構設計的理解存在很多誤區
例如,要成為架構師必須要有很強的技術天分;架構師必須有很強的創造力;架構設計必須要高大上才能體現架構師能力;架構一定要具備高可用、高性能⋯⋯這些似是而非的誤區讓很多技術人員望而生畏,還沒嘗試就已經放棄了。
得益於移動互聯網技術的快速發展,我有很多機會直接參與架構設計,這些架構背後的業務形形色色,包括社交、電商、遊戲、中介軟體、內部運營系統;用到的技術棧差異也比較大,包括 PHP、Java、C++ 等。雖然每次架構設計對我來說都是一個新的挑戰,但正好也提供了非常好的機會,讓我親身體驗不同的架構設計。在這個過程中,
我不斷學習、思考、實踐、總結、改進、交流,逐步形成了自己的一套架構設計方法論。
有了這套方法論後,我在做架構設計的時候遊刃有餘,不管什麼樣的業務、技術,按照這套方法論都能夠設計出優秀的架構,在職業等級面評的時候,就算我之前從來沒有接觸過對方的業務,也能快速理解對方描述的架構和發現其中做得好或不好的地方;其次,在指導其他同事的時候思路很清晰,容易理解,效果明顯。原來對架構設計比較迷茫的同學,透過幾次結合案例進行方法論培訓,都能夠很快地掌握這套方法論並在實踐中應用。甚至有很多其他業務線的同學,遇到架構設計的困惑,也來找我交流和指導,按照這套架構設計方法論的指導,能夠較快地理清架構設計的思路。
本書的主要出發點就是將這套架構設計方法論,分享給更多熱愛技術、有架構師夢想的技術人員,降低架構學習的成本,減少架構學習過程中走的彎路,助力大家更快地實現自己的架構師夢想。
本書內容已經在「極客時間」App 上開設「從 0 開始學架構」的專欄,訂閱人數已經超過 25000 人,成為「極客時間」最受歡迎的專欄,能夠得到這麼多技術朋友的信任,相信書中的內容一定會讓你有所收穫。
本書的主要內容
本書涵蓋我整套架構設計方法論和架構實踐,主要包括以下內容。
• 架構基礎:先介紹架構設計的本質、歷史背景和目的,然後從複雜度來源,以 及架構設計的原則和流程來詳細介紹架構基礎。
• 高性能架構模式:從存儲高性能、計算高性能方面介紹幾種設計方案的典型特 徵和應用場景。
• 高可用架構模式:介紹 CAP 原理、FMEA 分析方法,分析常見的高可用存儲架 構和高可用計算架構,並給出一些設計方法和技巧。
• 可擴展架構模式:介紹可擴展模式及其基本思想,分析一些常見架構模式。
• 架構實戰:將理論和案例結合,落地前面提到的架構原則、架構流程和架構模 式。
本書適合的對象
• 有一定的程式設計基礎的軟體發展工程師。
• 對架構設計有興趣的技術人員。例如,測試、運維等崗位的人員。
• 有初步的架構設計經驗,但需要繼續提升的技術人員。
勘誤與支持
因個人水準有限,且架構設計整體涵蓋的技術範圍很廣,技術深度很深,書中難免有不足之處,還望讀者批評指正。如果讀者對本書有所建議或對書中內容有疑惑,可與我聯繫。
Email:
[email protected]
致謝
首先感謝王行雲、胡晏秋、陳俊良、張怡炘等同事對本書的勘誤和審核,讓本書的很多細節和內容更完善。
其次感謝家人的支持,在寫書的過程中父母、妻子承擔了家庭的重任,讓我能夠安心寫作。
特別感謝陳曉猛編輯,本書在他不斷督促下才寫完初稿,後期他耐心地指導、審稿、修改,最終才有本書的誕生。
特別感謝極客時間架構專欄團隊郭蕾、何瀟、周君鳳等人,打造一個非常成功的架構專欄,他們的高要求也讓整體內容更完善、優質。
特別感謝高效運維創始人蕭田國、特贊科技 CTO 黃勇、騰訊雲高級總監熊普江、 貝殼金服 2B2C CTO史海峰、資深技術專家于君澤(右軍)、21CTO社區創始人杜江(洛逸)幾位專家對本書的推薦。