架構師之路一-架構師入門指引



點擊箭頭處前端

「JAVA日知錄」java

,關注並星標喲!!程序員



導讀:本系列文章教你怎麼樣成爲一名架構師,而本篇文章則帶你先認識一下什麼是架構師,架構師的工做是什麼?web

爲何須要架構師

爲何須要架構師或者說架構師能解決什麼樣的問題,咱們不妨先從兩個不一樣的視角來看一下。數據庫

技術高手的視角

小張做爲一名擁有3-5年開發經驗的技術高手,他常常會思考如下幾個問題:
• 我已經工做好幾年了,未來如何發展?是要一直寫代碼嗎?
• 是否是要往上走就得作管理?
• 在中國35歲以後不能再作技術了嗎?
• 繼續作技術是否是待趕上不如作管理?
• 若是繼續作技術我還要學習什麼?
• 若是改作管理我應該如何轉型?
• 我適合作技術仍是作管理,仍是別的什麼?編程

軟件企業的視角

軟件企業在的產品開發過程當中也常常會思考如下幾個問題:
• 爲何咱們的產品交付週期爲何須要那麼長時間?競爭對手可能只要半年,爲何咱們須要1年?
• 爲何咱們的產品總有這樣那樣的質量問題?程序員在開發的時候爲何很差好把控質量,上完線出這樣那樣的問題?
• 爲何當初這個產品會選擇這樣的技術路線,技術選型的時候爲何不慎重?致使如今要用另外一種技術推翻重作,帶來巨大的人力成本?
• 網站的用戶愈來愈多,性能很是吃緊,想擴展卻很難?
• 爲何這個產品的代碼這麼難維護,找誰改都說不敢動?
• 究竟誰能在技術上保證咱們的產品或項目取得成功?後端

從不一樣的角度出發會引起出一連串的疑惑,那麼能解決以上疑惑的角色就是系統架構師,也能夠說咱們須要系統架構師來解決這些問題。緩存

架構、架構設計與架構師的相關概念

架構

架構,又名軟件架構,也稱爲軟件體系結構。軟件架構就是一個系統的藍圖,是一種設計方案,將客戶的不一樣需求抽象成爲抽象組件,而且可以描述這些抽象組件之間的通訊和調用,及包括一些內部的關鍵機制。它有下面三個關鍵概念:安全

  • 組件 一般是指開發或部署的一個單元,根據考查對象的大小,組件的粒度也有所區別。在作架構的時候咱們須要把握好這個力度,不能陷入代碼細節,若是過分的關注代碼層面的力度,那對系統的總體把握可能會出問題。
  • 組件與組件之間的關係 是架構要考慮的重要因素,來自系統外部的請求一般是由多個組件協做完成的,系統內部結構是否良好,很大程度上取決於組件之間的關係。
  • 關鍵機制 是指影響到系統可用性、安全性、性能等重要非功能特性的一些技術方案,好比技術選型、關鍵設計、處理流程等等。

系統架構 vs 架構設計

系統架構 是指系統在運行期的實際內部結構,架構設計是對這種內部結構的書面描述。微信

架構設計 是以需求分析爲輸入,經過架構師的分析,產出架構設計資料,用於指導後續概要設計、詳細設計、開發、測試、部署、上線運行。因此說若是架構設計作的很差或者沒作架構設計,那麼後面環節的開發測試部署可能會出各類各樣的問題。

架構設計 vs 概要設計

架構設計是以組件的視角來思考系統如何分解,並定義分解出來的組件之間的關係。概要設計是從功能模塊的視角來對系統進行分解,並定義這些功能模塊之間的關係。如今提的比較少,通常作完架構設計直接作詳細設計便可!

以用戶登陸爲例,從架構設計的角度可能就只是一個用戶服務組件,而從概要設計的角度可能就是前端頁面、用戶接口、數據庫等一系列功能的設計。

架構師

架構師是負責系統架構的人、團隊或組織,架構師是團隊技術領導,從技術角度,承擔項目技術的成功或失敗的責任。在其領域內可以全局把握的人,可以給出其負責範圍內的整體設計,並能解決關鍵問題、指導其餘人員落實設計。

每每後端開發出生的架構師對後臺開發這一塊有很豐富的相關經驗,可是還須要對前端,APP端、測試、部署等領域也須要了解掌握,須要能作到掌控全局,這也是成爲架構師須要去修煉的地方。

註解:架構師在一個團隊中的權利很大,在技術上你們都要聽你的,可是同時你也要承擔相應的義務,一旦項目因爲技術緣由失敗,那你就是第一責任人

架構師的價值

李智慧老師在《大型網站技術架構 核心原理與案例分析》說過軟件架構師的最大價值不在於掌握多少先進的技術,而在於具備將一個大系統切分紅N個低耦合的子模塊的能力,這些子模塊包含橫向的業務模塊,也包含縱向的基礎技術模塊。這種能力一部分源自專業的技術和經驗,還有一部分源自於架構師對業務場景的理解、對人性的把握、甚至對世界的認知。」

上面這張圖表示未通過架構設計的系統,你們想怎麼建就怎麼建,用過幾年後系統之間的關係沒人能理清楚,天然天然程序員不敢隨便改其中的代碼。

而通過良好的架構設計後系統之間邏輯清晰,能夠很容易進行擴展。

架構、架構師、架構設計之間的關係

下面一張圖很容易看出架構、架構師以及架構設計之間的關係

架構師能力模型

做爲架構師須要擁有如下12個能力模型:

  • 溝通協做:
    架構師須要常常跟產品經理、項目經理甚至客戶打交道,因此溝通能力對架構師來講很是重要,能力總結以下
    ① 具有優秀的口頭、書面及表達技巧
    ② 優先的聆聽者和觀察者
    ③ 傳達和激發團隊,共享架構,確保達成一致
    ④ 我的品牌,值得信任
    ⑤ 推進良好的團隊協做,合做雙贏

  • 自我驅動:
    架構師爲何可以成爲架構師?由於他們都會有強大的自我驅動力,總結以下
    ① 積極主動,承擔職責之外的事情
    ② 鍥而不捨,長期保持
    ③ 嚴格要求本身,不知足現狀

  • 高效學習:
    這個能力全部作開發的都須要具有
    ① 發現自身知識結構的優劣
    ② 造成本身的學習模式
    ③ 目標導向,學習目標要明確
    ④ 學習須要反覆強化,不斷實踐運用

  • 良好心態:
    ① 開放心態,可以取長補短,要多與分歧者溝通
    ② 責任心,勇於決策,爲決策結果負責
    ③ 嚴於利己,寬以待人,積極向上

  • 識別問題:
    公司花錢聘請你來的目的是讓你來解決問題,而解決問題的前提是先識別問題,而架構師須要快速準確的識別問題,主要分爲如下幾個方面
    ① 識別問題以及問題的主體,把問題自己先搞清楚
    ② 發現問題永遠比解決問題更加劇要
    ③ 能夠經過利益者全面溝通、競爭對手分析等手段來識別問題
    ④ 問題的優先級,能夠用錢或者對業務的影響面來衡量

  • 抽象思惟:
    做爲架構師這個能力尤爲重要
    ① 可以分解出共性和個性,提煉出共性
    ② 需求概念化(由實到虛總結昇華)並歸類(核心/非核心等),而後分而治之
    ③ 抽象的前提是對個性的深刻理解

  • 認識深度
    ① 深層次挖掘(由虛到實)問題的本質
    ② 技術的本質
    ③ 業務的本質
    ④ 利益相關者的本質

  • 平衡取捨
    這個能力也很是重要,畢竟公司給你資源是有限的。若是給你無限的資源,那就不須要作架構了,架構師就是須要在有限的資源中最大化經濟效益。每每作架構設計就是一個取捨的過程。
    ① 利益者之間利益程度的的平衡取捨
    ② 確保架構在現有有限資源約束下最合理,最大化經濟效益

  • 業務能力
    不瞭解業務確定作不出良好的架構設計的,須要瞭解業務的現狀以及將來的發展趨勢。
    ① 對於所在業務和領域要有較深的理解
    ② 可以對業務需求進行分解和將來判斷
    ③ 好的架構師也是好的產品經理

  • 技術能力
    這是做爲架構師最基本的能力
    ① 具有編碼/設計/攻關等能力,豐富項目經驗
    ② 技術深度,某一個領域的技術專家
    ③ 技術廣度,技術知識面比較廣
    ④ 技術高度,技術前瞻和判斷力,技術支撐和引導業務

  • 想象力
    ① 技術創新,以業務爲中心的方式識別、評估和注入顛覆性新技術的能力
    ② 戰略性規劃,可以爲實現潛在目標設計戰略路線圖並推進落地
    ③ 企業執行,企業精神、承擔逾期風險、交付成果

  • 架構方法論
    ① 多學習掌握業內/公司成熟的方法論,而且實踐體會
    ② 本身結合項目循環總結,造成自身的架構方法論體系

架構師修煉方法

架構師能夠從如下幾個角度進行自我修煉

  • 豐富實戰
    一、先在一個產品/項目作的比較深刻,而後考慮多產品/項目的實踐;
    二、積極主動進行可複用模塊提煉以及思路和手段的改進,減小無效重複實踐
    三、在完成本職工做的前提下,增長影響力在更大範圍實踐

  • 深度思考
    一、六步思考:肯定與定義問題、分析問題、尋找解決問題的方法、作出決定、採起行動、評估結果與控制
    二、總結思考,造成本身的知識經驗財富

  • 融入圈子
    一、融入到部門/公司架構師的圈子,尤爲是要找到本身心中的導師;
    二、融入行業相同的技術圈子,互相學習交流
    三、常常寫博客、參與開源社區、演講以及培訓等手段

  • 不斷學習
    一、系統化知識體系的學習,權威書籍/網站/微信公衆號等
    二、新技術的感知、運用、分析以及場景運用
    三、參加各類培訓、分享以及交流等,與專家講師碰撞學習

架構師成長路徑

架構師的前身是一名中高級開發人員,他們一般會具有如下幾個特徵:

  • 工做三五年,精通一兩種編程語言;
  • 精通幾個框架,如SSH;
  • 可以搭建項目的代碼框架,開發核心模塊,組織共通類庫,編寫示例程序;
  • 可以解決一些開發過程當中的難題;
  • 可以對下級程序員進行指導;
  • 可以負責一些中小模塊的設計;
  • 知識和能力體系與其承擔什麼項目有很大相關性;

在職業發展中他們有如下幾條路徑可走

走管理路線能夠成長爲項目經理、部門經理 走技術路線能夠成爲某方面的技術專家、架構師、CTO

成爲架構師 意味着須要具有更高的能力,並承擔更大的責任。

架構師工做指南

工做職責

在標準軟件研發流程體系中,軟件研發分爲構思階段、設計階段、開發測試階段,運維階段。而架構師須要參與整個開發流程的生命週期。

咱們接下來看看架構師在每一個階段須要幹什麼事。

  • 立項階段的職責(主要是向諮詢或需求分析人員提供技術諮詢)

    • 進行整體架構設想
    • 論證技術可行性
    • 驗證某些關鍵技術問題
  • 業務分析和需求分析階段的職責 協助業務分析人員產出業務分析成果,包括如下事項:

    協助需求分析人員完成需求分析,包括如下事項:

    • 對產品團隊進行技術支撐,解答產品團隊的技術疑問
    • 把握產品團隊的需求成果,確保形式和內容符合架構設計輸入須要,確保功能可實現,非功能性需求指標合理,成本和工期可接受
    • 完善需求分析
    • 與產品團隊協做完成業務分析文檔
    • 參與系統業務價值討論
  • 架構設計階段的職責(獨立完成架構設計)

    • 邏輯架構設計,將系統分解爲非技術性的邏輯組件,並定義其間的關係
    • 物理架構設計,將邏輯架構中的組件和關係進行技術化、具體化
    • 對於沒有經驗的技術點,驗證其可行性
    • 性能驗證
    • 技術選型時對多種方案對比驗證
    • 架構評審,設計完成時邀請其餘成員、組外專家、領導、高階架構師對本身的工做成果進行評審
    • 軟硬件採購申請,對設計、開發、測試、部署各環節須要的硬件及軟件編寫採購清單,提交申請
  • 概要設計和詳細設計階段的職責(與開發組長一塊兒完成概要設計)

    與開發組長一同肯定詳細設計的範圍,指導中級開發人員完成必要的詳細設計

    • 初期指導,說明架構設計意圖、詳細設計注意事項
    • 設計檢查與評審,確保詳細設計符合架構設計要求
    • 參與數據庫設計,確保數據庫設計符合架構設計要求,主要考慮性能、數據量等問題
    • 參加界面設計評審
    • 功能清單整理,根據系統用例和架構設計中的組件定義推導出功能清單
    • 接口定義,包括組件間的通訊機制定義和功能模塊間的接口定義
  • 開發階段的職責 指導開發人員落實架構設計中要開發組件的實現,包括如下事項:初期指導:

    代碼檢查與評審:

    • 檢查工程結構是否合理
    • 檢查組件的版本是否合適
    • 檢查接口是否與架構設計一致
    • 檢查主要處理流程的調用關係
    • 檢查關鍵功能的實現
    • 檢查通訊方式
    • 檢查併發處理方式
    • 檢查鏈接池、線程池等資源的利用
    • 檢查緩存的實現方式和策略
    • 檢查配置項實現方式
    • 檢查構建腳本
    • 向開發團隊說明開發相關的架構設計意圖
    • 配合開發組長搭建開發環境,創建各組件的代碼工程
    • 解答開發團隊的疑問
  • 測試階段的職責 指導測試人員檢驗架構設計中非功能特性的實現,包括如下事項:

  • 運維階段的職責 指導運維人員部署系統以及在後續運維過程當中進行指導,包括如下事項:

  • 架構師在組織中的職責 架構師是高級技術人員,在項目以外,還須要承擔必定的組織建設職責,包括如下事項:

工做流程

架構師在項目中的活動須要有必定的流程,正常過程以下:

  • 制定項目的架構工做計劃
  • 完善需求分析
  • 進行架構設計
  • 指導概要設計
  • 指導詳細設計
  • 指導開發
  • 指導測試
  • 指導上線運維
  • 管理架構變動

周邊協做

架構師因爲須要參與整個項目的生命週期,因此基本須要與全部相關人員進行協做,具體可參看下圖:

資源保障

架構師在工做過程當中會有一些資源需求,可經過如下方式進行獲取:

架構師的考覈

能夠經過如下維度對架構師進行綜合考覈:

  • 考覈架構工做計劃執行的完整性
  • 考覈架構設計文檔的質量
  • 考覈指導、檢查和評審的效果
  • 考覈項目非功能性需求的知足狀況
  • 考覈架構師知識經驗的分享狀況
  • 考覈架構師對公司產品的改進狀況


好了,各位朋友們,本期的內容到此就所有結束啦,能看到這裏的同窗都是優秀的同窗,下一個升職加薪的就是你了!
若是以爲這篇文章對你有所幫助的話請掃描下面二維碼加個關注。"
轉發 " 加 " 在看 ",養成好習慣!我們下期再見!
 

熱文推薦

☞ 數據庫優化之SQL優化
☞ 數據庫優化之實例優化
☞ Docker基礎與實戰,看這一篇就夠了!
☞ Docker-Compose基礎與實戰,看這一篇就夠了!
 OAuth2.0最簡嚮導(多圖預警)
 構建三維一體立體化監控體系



JAVA日知錄

長按左邊二維碼關注咱們,精彩文章第一時間推送


戳我留言


朕已閱 


本文分享自微信公衆號 - JAVA日知錄(javadaily)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索