<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          架構(gòu)師之路一-架構(gòu)師入門指引

          共 5312字,需瀏覽 11分鐘

           ·

          2021-05-15 20:17



          點擊箭頭處

          “JAVA日知錄”

          ,關(guān)注并星標(biāo)喲!!



          導(dǎo)讀:本系列文章教你怎么樣成為一名架構(gòu)師,而本篇文章則帶你先認識一下什么是架構(gòu)師,架構(gòu)師的工作是什么?

          為什么需要架構(gòu)師

          為什么需要架構(gòu)師或者說架構(gòu)師能解決什么樣的問題,我們不妨先從兩個不同的視角來看一下。

          技術(shù)高手的視角

          小張作為一名擁有3-5年開發(fā)經(jīng)驗的技術(shù)高手,他經(jīng)常會思考以下幾個問題:
          ? 我已經(jīng)工作好幾年了,將來如何發(fā)展?是要一直寫代碼嗎?
          ? 是不是要往上走就得做管理?
          ? 在中國35歲之后不能再做技術(shù)了嗎?
          ? 繼續(xù)做技術(shù)是不是待遇上不如做管理?
          ? 如果繼續(xù)做技術(shù)我還要學(xué)習(xí)什么?
          ? 如果改做管理我應(yīng)該如何轉(zhuǎn)型?
          ? 我適合做技術(shù)還是做管理,還是別的什么?

          軟件企業(yè)的視角

          軟件企業(yè)在的產(chǎn)品開發(fā)過程中也經(jīng)常會思考以下幾個問題:
          ? 為什么我們的產(chǎn)品交付周期為什么需要那么長時間?競爭對手可能只要半年,為什么我們需要1年?
          ? 為什么我們的產(chǎn)品總有這樣那樣的質(zhì)量問題?程序員在開發(fā)的時候為什么不好好把控質(zhì)量,上完線出這樣那樣的問題?
          ? 為什么當(dāng)初這個產(chǎn)品會選擇這樣的技術(shù)路線,技術(shù)選型的時候為什么不慎重?導(dǎo)致現(xiàn)在要用另一種技術(shù)推翻重做,帶來巨大的人力成本?
          ? 網(wǎng)站的用戶越來越多,性能非常吃緊,想擴展卻很難?
          ? 為什么這個產(chǎn)品的代碼這么難維護,找誰改都說不敢動?
          ? 究竟誰能在技術(shù)上保證我們的產(chǎn)品或項目取得成功?

          從不同的角度出發(fā)會引發(fā)出一連串的疑惑,那么能解決以上疑惑的角色就是系統(tǒng)架構(gòu)師,也可以說我們需要系統(tǒng)架構(gòu)師來解決這些問題。

          架構(gòu)、架構(gòu)設(shè)計與架構(gòu)師的相關(guān)概念

          架構(gòu)

          架構(gòu),又名軟件架構(gòu),也稱為軟件體系結(jié)構(gòu)。軟件架構(gòu)就是一個系統(tǒng)的藍圖,是一種設(shè)計方案,將客戶的不同需求抽象成為抽象組件,并且能夠描述這些抽象組件之間的通信和調(diào)用,及包括一些內(nèi)部的關(guān)鍵機制。它有下面三個關(guān)鍵概念:

          • 組件 通常是指開發(fā)或部署的一個單元,根據(jù)考查對象的大小,組件的粒度也有所區(qū)別。在做架構(gòu)的時候我們需要把握好這個力度,不能陷入代碼細節(jié),如果過度的關(guān)注代碼層面的力度,那對系統(tǒng)的整體把握可能會出問題。
          • 組件與組件之間的關(guān)系 是架構(gòu)要考慮的重要因素,來自系統(tǒng)外部的請求通常是由多個組件協(xié)作完成的,系統(tǒng)內(nèi)部結(jié)構(gòu)是否良好,很大程度上取決于組件之間的關(guān)系。
          • 關(guān)鍵機制 是指影響到系統(tǒng)可用性、安全性、性能等重要非功能特性的一些技術(shù)方案,比如技術(shù)選型、關(guān)鍵設(shè)計、處理流程等等。

          系統(tǒng)架構(gòu) vs 架構(gòu)設(shè)計

          系統(tǒng)架構(gòu) 是指系統(tǒng)在運行期的實際內(nèi)部結(jié)構(gòu),架構(gòu)設(shè)計是對這種內(nèi)部結(jié)構(gòu)的書面描述。

          架構(gòu)設(shè)計 是以需求分析為輸入,通過架構(gòu)師的分析,產(chǎn)出架構(gòu)設(shè)計資料,用于指導(dǎo)后續(xù)概要設(shè)計、詳細設(shè)計、開發(fā)、測試、部署、上線運行。所以說如果架構(gòu)設(shè)計做的不好或者沒做架構(gòu)設(shè)計,那么后面環(huán)節(jié)的開發(fā)測試部署可能會出各種各樣的問題。

          架構(gòu)設(shè)計 vs 概要設(shè)計

          架構(gòu)設(shè)計是以組件的視角來思考系統(tǒng)如何分解,并定義分解出來的組件之間的關(guān)系。概要設(shè)計是從功能模塊的視角來對系統(tǒng)進行分解,并定義這些功能模塊之間的關(guān)系。現(xiàn)在提的比較少,一般做完架構(gòu)設(shè)計直接做詳細設(shè)計即可!

          以用戶登錄為例,從架構(gòu)設(shè)計的角度可能就只是一個用戶服務(wù)組件,而從概要設(shè)計的角度可能就是前端頁面、用戶接口、數(shù)據(jù)庫等一系列功能的設(shè)計。

          架構(gòu)師

          架構(gòu)師是負責(zé)系統(tǒng)架構(gòu)的人、團隊或組織,架構(gòu)師是團隊技術(shù)領(lǐng)導(dǎo),從技術(shù)角度,承擔(dān)項目技術(shù)的成功或失敗的責(zé)任。在其領(lǐng)域內(nèi)能夠全局把握的人,能夠給出其負責(zé)范圍內(nèi)的總體設(shè)計,并能解決關(guān)鍵問題、指導(dǎo)其他人員落實設(shè)計。

          往往后端開發(fā)出生的架構(gòu)師對后臺開發(fā)這一塊有很豐富的相關(guān)經(jīng)驗,但是還需要對前端,APP端、測試、部署等領(lǐng)域也需要了解掌握,需要能做到掌控全局,這也是成為架構(gòu)師需要去修煉的地方。

          注解:架構(gòu)師在一個團隊中的權(quán)利很大,在技術(shù)上大家都要聽你的,但是同時你也要承擔(dān)相應(yīng)的義務(wù),一旦項目由于技術(shù)原因失敗,那你就是第一責(zé)任人

          架構(gòu)師的價值

          李智慧老師在《大型網(wǎng)站技術(shù)架構(gòu) 核心原理與案例分析》說過軟件架構(gòu)師的最大價值不在于掌握多少先進的技術(shù),而在于具有將一個大系統(tǒng)切分成N個低耦合的子模塊的能力,這些子模塊包含橫向的業(yè)務(wù)模塊,也包含縱向的基礎(chǔ)技術(shù)模塊。這種能力一部分源自專業(yè)的技術(shù)和經(jīng)驗,還有一部分源自于架構(gòu)師對業(yè)務(wù)場景的理解、對人性的把握、甚至對世界的認知。”

          上面這張圖表示未經(jīng)過架構(gòu)設(shè)計的系統(tǒng),大家想怎么建就怎么建,用過幾年后系統(tǒng)之間的關(guān)系沒人能理清楚,自然自然程序員不敢隨便改其中的代碼。

          而經(jīng)過良好的架構(gòu)設(shè)計后系統(tǒng)之間邏輯清晰,可以很容易進行擴展。

          架構(gòu)、架構(gòu)師、架構(gòu)設(shè)計之間的關(guān)系

          下面一張圖很容易看出架構(gòu)、架構(gòu)師以及架構(gòu)設(shè)計之間的關(guān)系

          架構(gòu)師能力模型

          作為架構(gòu)師需要擁有以下12個能力模型:

          • 溝通協(xié)作:
            架構(gòu)師需要經(jīng)常跟產(chǎn)品經(jīng)理、項目經(jīng)理甚至客戶打交道,所以溝通能力對架構(gòu)師來說非常重要,能力總結(jié)如下
            ① 具備優(yōu)秀的口頭、書面及表達技巧
            ② 優(yōu)先的聆聽者和觀察者
            ③ 傳達和激發(fā)團隊,共享架構(gòu),確保達成一致
            ④ 個人品牌,值得信任
            ⑤ 推動良好的團隊協(xié)作,合作共贏

          • 自我驅(qū)動:
            架構(gòu)師為什么能夠成為架構(gòu)師?因為他們都會有強大的自我驅(qū)動力,總結(jié)如下
            ① 積極主動,承擔(dān)職責(zé)以外的事情
            ② 持之以恒,長期保持
            ③ 嚴格要求自己,不滿足現(xiàn)狀

          • 高效學(xué)習(xí):
            這個能力所有做開發(fā)的都需要具備
            ① 發(fā)現(xiàn)自身知識結(jié)構(gòu)的優(yōu)劣
            ② 形成自己的學(xué)習(xí)模式
            ③ 目標(biāo)導(dǎo)向,學(xué)習(xí)目標(biāo)要明確
            ④ 學(xué)習(xí)需要反復(fù)強化,不斷實踐運用

          • 良好心態(tài):
            ① 開放心態(tài),能夠取長補短,要多與分歧者溝通
            ② 責(zé)任心,敢于決策,為決策結(jié)果負責(zé)
            ③ 嚴于利己,寬以待人,積極向上

          • 識別問題:
            公司花錢聘請你來的目的是讓你來解決問題,而解決問題的前提是先識別問題,而架構(gòu)師需要快速準(zhǔn)確的識別問題,主要分為以下幾個方面
            ① 識別問題以及問題的主體,把問題本身先搞清楚
            ② 發(fā)現(xiàn)問題永遠比解決問題更加重要
            ③ 可以通過利益者全面溝通、競爭對手分析等手段來識別問題
            ④ 問題的優(yōu)先級,可以用錢或者對業(yè)務(wù)的影響面來衡量

          • 抽象思維:
            作為架構(gòu)師這個能力尤其重要
            ① 能夠分解出共性和個性,提煉出共性
            ② 需求概念化(由實到虛總結(jié)升華)并歸類(核心/非核心等),然后分而治之
            ③ 抽象的前提是對個性的深入理解

          • 認識深度
            ① 深層次挖掘(由虛到實)問題的本質(zhì)
            ② 技術(shù)的本質(zhì)
            ③ 業(yè)務(wù)的本質(zhì)
            ④ 利益相關(guān)者的本質(zhì)

          • 平衡取舍
            這個能力也非常重要,畢竟公司給你資源是有限的。如果給你無限的資源,那就不需要做架構(gòu)了,架構(gòu)師就是需要在有限的資源中最大化經(jīng)濟效益。往往做架構(gòu)設(shè)計就是一個取舍的過程。
            ① 利益者之間利益程度的的平衡取舍
            ② 確保架構(gòu)在現(xiàn)有有限資源約束下最合理,最大化經(jīng)濟效益

          • 業(yè)務(wù)能力
            不了解業(yè)務(wù)肯定做不出良好的架構(gòu)設(shè)計的,需要了解業(yè)務(wù)的現(xiàn)狀以及未來的發(fā)展趨勢。
            ① 對于所在業(yè)務(wù)和領(lǐng)域要有較深的理解
            ② 能夠?qū)I(yè)務(wù)需求進行分解和未來判斷
            ③ 好的架構(gòu)師也是好的產(chǎn)品經(jīng)理

          • 技術(shù)能力
            這是作為架構(gòu)師最基本的能力
            ① 具備編碼/設(shè)計/攻關(guān)等能力,豐富項目經(jīng)驗
            ② 技術(shù)深度,某一個領(lǐng)域的技術(shù)專家
            ③ 技術(shù)廣度,技術(shù)知識面比較廣
            ④ 技術(shù)高度,技術(shù)前瞻和判斷力,技術(shù)支撐和引導(dǎo)業(yè)務(wù)

          • 想象力
            ① 技術(shù)創(chuàng)新,以業(yè)務(wù)為中心的方式識別、評估和注入顛覆性新技術(shù)的能力
            ② 戰(zhàn)略性規(guī)劃,能夠為實現(xiàn)潛在目標(biāo)設(shè)計戰(zhàn)略路線圖并推動落地
            ③ 企業(yè)執(zhí)行,企業(yè)精神、承擔(dān)逾期風(fēng)險、交付成果

          • 架構(gòu)方法論
            ① 多學(xué)習(xí)掌握業(yè)內(nèi)/公司成熟的方法論,并且實踐體會
            ② 自己結(jié)合項目循環(huán)總結(jié),形成自身的架構(gòu)方法論體系

          架構(gòu)師修煉方法

          架構(gòu)師可以從以下幾個角度進行自我修煉

          • 豐富實戰(zhàn)
            1、先在一個產(chǎn)品/項目做的比較深入,然后考慮多產(chǎn)品/項目的實踐;
            2、積極主動進行可復(fù)用模塊提煉以及思路和手段的改進,減少無效重復(fù)實踐
            3、在完成本職工作的前提下,增加影響力在更大范圍實踐

          • 深度思考
            1、六步思考:確定與定義問題、分析問題、尋找解決問題的方法、做出決定、采取行動、評估結(jié)果與控制
            2、總結(jié)思考,形成自己的知識經(jīng)驗財富

          • 融入圈子
            1、融入到部門/公司架構(gòu)師的圈子,尤其是要找到自己心中的導(dǎo)師;
            2、融入行業(yè)相同的技術(shù)圈子,互相學(xué)習(xí)交流
            3、經(jīng)常寫博客、參與開源社區(qū)、演講以及培訓(xùn)等手段

          • 不斷學(xué)習(xí)
            1、系統(tǒng)化知識體系的學(xué)習(xí),權(quán)威書籍/網(wǎng)站/微信公眾號等
            2、新技術(shù)的感知、運用、分析以及場景運用
            3、參加各種培訓(xùn)、分享以及交流等,與專家講師碰撞學(xué)習(xí)

          架構(gòu)師成長路徑

          架構(gòu)師的前身是一名中高級開發(fā)人員,他們通常會具備以下幾個特征:

          • 工作三五年,精通一兩種編程語言;
          • 精通幾個框架,如SSH;
          • 能夠搭建項目的代碼框架,開發(fā)核心模塊,組織共通類庫,編寫示例程序;
          • 能夠解決一些開發(fā)過程中的難題;
          • 能夠?qū)ο录壋绦騿T進行指導(dǎo);
          • 能夠負責(zé)一些中小模塊的設(shè)計;
          • 知識和能力體系與其承擔(dān)什么項目有很大相關(guān)性;

          在職業(yè)發(fā)展中他們有以下幾條路徑可走

          走管理路線可以成長為項目經(jīng)理、部門經(jīng)理 走技術(shù)路線可以成為某方面的技術(shù)專家、架構(gòu)師、CTO

          成為架構(gòu)師 意味著需要具備更高的能力,并承擔(dān)更大的責(zé)任。

          架構(gòu)師工作指南

          工作職責(zé)

          在標(biāo)準(zhǔn)軟件研發(fā)流程體系中,軟件研發(fā)分為構(gòu)思階段、設(shè)計階段、開發(fā)測試階段,運維階段。而架構(gòu)師需要參與整個開發(fā)流程的生命周期。

          我們接下來看看架構(gòu)師在每個階段需要干什么事。

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

            • 進行總體架構(gòu)設(shè)想
            • 論證技術(shù)可行性
            • 驗證某些關(guān)鍵技術(shù)問題
          • 業(yè)務(wù)分析和需求分析階段的職責(zé) 協(xié)助業(yè)務(wù)分析人員產(chǎn)出業(yè)務(wù)分析成果,包括以下事項:

            協(xié)助需求分析人員完成需求分析,包括以下事項:

            • 對產(chǎn)品團隊進行技術(shù)支撐,解答產(chǎn)品團隊的技術(shù)疑問
            • 把握產(chǎn)品團隊的需求成果,確保形式和內(nèi)容符合架構(gòu)設(shè)計輸入需要,確保功能可實現(xiàn),非功能性需求指標(biāo)合理,成本和工期可接受
            • 完善需求分析
            • 與產(chǎn)品團隊協(xié)作完成業(yè)務(wù)分析文檔
            • 參與系統(tǒng)業(yè)務(wù)價值討論
          • 架構(gòu)設(shè)計階段的職責(zé)(獨立完成架構(gòu)設(shè)計)

            • 邏輯架構(gòu)設(shè)計,將系統(tǒng)分解為非技術(shù)性的邏輯組件,并定義其間的關(guān)系
            • 物理架構(gòu)設(shè)計,將邏輯架構(gòu)中的組件和關(guān)系進行技術(shù)化、具體化
            • 對于沒有經(jīng)驗的技術(shù)點,驗證其可行性
            • 性能驗證
            • 技術(shù)選型時對多種方案對比驗證
            • 架構(gòu)評審,設(shè)計完成時邀請其他成員、組外專家、領(lǐng)導(dǎo)、高階架構(gòu)師對自己的工作成果進行評審
            • 軟硬件采購申請,對設(shè)計、開發(fā)、測試、部署各環(huán)節(jié)需要的硬件及軟件編寫采購清單,提交申請
          • 概要設(shè)計和詳細設(shè)計階段的職責(zé)(與開發(fā)組長一起完成概要設(shè)計)

            與開發(fā)組長一同確定詳細設(shè)計的范圍,指導(dǎo)中級開發(fā)人員完成必要的詳細設(shè)計

            • 初期指導(dǎo),說明架構(gòu)設(shè)計意圖、詳細設(shè)計注意事項
            • 設(shè)計檢查與評審,確保詳細設(shè)計符合架構(gòu)設(shè)計要求
            • 參與數(shù)據(jù)庫設(shè)計,確保數(shù)據(jù)庫設(shè)計符合架構(gòu)設(shè)計要求,主要考慮性能、數(shù)據(jù)量等問題
            • 參加界面設(shè)計評審
            • 功能清單整理,根據(jù)系統(tǒng)用例和架構(gòu)設(shè)計中的組件定義推導(dǎo)出功能清單
            • 接口定義,包括組件間的通信機制定義和功能模塊間的接口定義
          • 開發(fā)階段的職責(zé) 指導(dǎo)開發(fā)人員落實架構(gòu)設(shè)計中要開發(fā)組件的實現(xiàn),包括以下事項:初期指導(dǎo):

            代碼檢查與評審:

            • 檢查工程結(jié)構(gòu)是否合理
            • 檢查組件的版本是否合適
            • 檢查接口是否與架構(gòu)設(shè)計一致
            • 檢查主要處理流程的調(diào)用關(guān)系
            • 檢查關(guān)鍵功能的實現(xiàn)
            • 檢查通信方式
            • 檢查并發(fā)處理方式
            • 檢查連接池、線程池等資源的利用
            • 檢查緩存的實現(xiàn)方式和策略
            • 檢查配置項實現(xiàn)方式
            • 檢查構(gòu)建腳本
            • 向開發(fā)團隊說明開發(fā)相關(guān)的架構(gòu)設(shè)計意圖
            • 配合開發(fā)組長搭建開發(fā)環(huán)境,建立各組件的代碼工程
            • 解答開發(fā)團隊的疑問
          • 測試階段的職責(zé) 指導(dǎo)測試人員檢驗架構(gòu)設(shè)計中非功能特性的實現(xiàn),包括以下事項:

          • 運維階段的職責(zé) 指導(dǎo)運維人員部署系統(tǒng)以及在后續(xù)運維過程中進行指導(dǎo),包括以下事項:

          • 架構(gòu)師在組織中的職責(zé) 架構(gòu)師是高級技術(shù)人員,在項目之外,還需要承擔(dān)一定的組織建設(shè)職責(zé),包括以下事項:

          工作流程

          架構(gòu)師在項目中的活動需要有一定的流程,正常過程如下:

          • 制定項目的架構(gòu)工作計劃
          • 完善需求分析
          • 進行架構(gòu)設(shè)計
          • 指導(dǎo)概要設(shè)計
          • 指導(dǎo)詳細設(shè)計
          • 指導(dǎo)開發(fā)
          • 指導(dǎo)測試
          • 指導(dǎo)上線運維
          • 管理架構(gòu)變更

          周邊協(xié)作

          架構(gòu)師由于需要參與整個項目的生命周期,所以基本需要與所有相關(guān)人員進行協(xié)作,具體可參看下圖:

          資源保障

          架構(gòu)師在工作過程中會有一些資源需求,可通過以下方式進行獲取:

          架構(gòu)師的考核

          可以通過以下維度對架構(gòu)師進行綜合考核:

          • 考核架構(gòu)工作計劃執(zhí)行的完整性
          • 考核架構(gòu)設(shè)計文檔的質(zhì)量
          • 考核指導(dǎo)、檢查和評審的效果
          • 考核項目非功能性需求的滿足情況
          • 考核架構(gòu)師知識經(jīng)驗的分享情況
          • 考核架構(gòu)師對公司產(chǎn)品的改進情況


          好了,各位朋友們,本期的內(nèi)容到此就全部結(jié)束啦,能看到這里的同學(xué)都是優(yōu)秀的同學(xué),下一個升職加薪的就是你了!
          如果覺得這篇文章對你有所幫助的話請掃描下面二維碼加個關(guān)注。"
          轉(zhuǎn)發(fā)" 加 "在看",養(yǎng)成好習(xí)慣!咱們下期再見!
           
          推薦閱讀:

          SpringBoot開發(fā)秘籍 - 集成Graphql Query

          Linux 文件搜索神器 find 實戰(zhàn)詳解,建議收藏!

          貓撲,涼了!

          搞清楚這 10 幾個后端面試問題,工作穩(wěn)了!


          關(guān)互聯(lián)網(wǎng)全棧架構(gòu)


          瀏覽 37
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  影音先锋久久精品视频 | A3级黄色视频 | 亚洲无码69 | 免费黄色1级毛片。 | 亚洲色播中文字幕 |