什么是架構師?架構師應該具備什么樣的能力?


前段時間網上最流行的三個問題:" 我是誰?"、" 我從哪里來?"、" 要到哪里去?”。這三個問題不只是網上流行的問題也是哲學家們最常思考的問題,但不只是哲學家,我們每個人都有自己對這三個問題的認知。那么如果想要成為架構師,我們也需要面臨了解什么是架構師?架構師應該具備什么樣的能力?

同樣的三個問題:

首先是找准自己定位:我是誰?在哪里?

其次是怎樣做好架構師:我要做什么?

最后如何搭建架構師知識體系:我該怎么做?

以上三個問題可以總結為:目標(我要做什么),方法(計划), 執行/行動(我該怎么做)

架構師的成長之路:

一.什么是架構師?

什么是架構師,這是一個架構話題里永恆的問題。因為每個公司所處的階段不同,公司對架構師的定位也有所不同,業務模式、應用場景也都不一樣。所以對架構的要求也不一樣。

在公司初創階段:

業務場景和需求的邊界很難把握,有時候根本不需要架構師,產品需要快速的更新迭代和變現,需求頻繁更新,這個時候需要的就是如何快速實現。當然如果公司成長以后,這個階段就是欠下的技術債,埋下的坑,如果人員流動很頻繁,后期系統維護成本是非常巨大的。

在公司穩定成長階段:

業務模式和應用場景邊界都已經比較清晰,這個時候最需要架構師能對線上業務進行模塊划分,系統拆分重構,並做好相關高可用的措施,以保證系統的穩定、安全、高效地運行。

不同的行業,對架構師的要求也不同,比如電商業務和AI領域,從架構到業務場景,完全是兩個物種。

在百度百科里面這樣定義:系統架構師是一個既需要掌控整體又需要洞悉局部瓶頸並依據具體的業務場景給出解決方案的團隊領導型人物。一個架構師得需要足夠的想像力,能把各種目標需求進行不同維度的擴展,為目標客戶提供更為全面的需求清單。

具體來說是一個確認和評估系統需求,給出開發規范,搭建系統實現的核心構架,並澄清技術細節、掃清主要難點的技術人員。主要着眼於系統的“技術實現”。因此架構師應該是特定的開發平台、語言、工具的大師,對常見應用場景能馬上給出最恰當的解決方案,同時要對所屬的開發團隊有足夠的了解,能夠評估自己的團隊實現特定的功能需求需要的代價。系統架構師負責設計系統整體架構,從需求到設計的每個細節都要考慮到,把握整個項目,使設計的項目盡量效率高,開發容易,維護方便,升級簡單等。

架構師實際上就是軟件的總體設計師。打個通俗的比方比如某個工程總設計師,類似三峽工程的總設計師。

架構師的形成一定是在實踐中積累起來的,而並非上了幾次培訓班,讀了幾本書就可以成功的,架構師是在工程實踐中培養出來的!

二.架構師的作用是什么?

架構師在整個軟件系統開發過程中都起着重要的作用,並隨着開發進程的推進而其職責或關注點不斷地變化。

1.按軟件開發過程維度來說:

需求階段:軟件架構師主要負責理解和管理非功能性系統需求,比如軟件的可維護性、性能、復用性、可靠性、有效性和可測試性等等。此外,架構師還要經常審查和客戶及市場人員所提出的需求,確認開發團隊所提出的設計;

架構設計階段:架構師負責對整個系統架構設計,制定開發規范、開發計划,指導整個開發團隊完成這個計划。

開發階段:架構師則成為詳細設計者和代碼編寫者的顧問,並且經常性地要舉行一些技術研討會、技術培訓班等;

測試和交付階段:協調做好相關測試和部署。

維護階段:軟件架構師就開始為下一版本的產品是否應該增加新的功能模塊進行決策。

2.按職能維度:

1 確認需求

架構師要懂得用戶需求,理解用戶真正想要什么,這使得架構師必須要和分析人員不斷溝通,反復確認需求規格說明書,以此來保證他精准清楚用戶需求。

項目經理劉先生在受訪時說:「架構師會與很多人溝通,例如開發人員,例如我們項目經理,有時甚至是用戶本身。架構設計的目的很明確,目的是什么呢?挖掘用戶需求。」

2 系統分解

在架構師認可需求規格說明書后,架構師已明確用戶需求是什么,這時候就要看架構師的分解能力了。

系統分解包括縱向分解和橫向分解:

橫向分解是對系統分解成不同的邏輯層,確定層與層之間的關系。是指基於技術架構層次進行的人員角色分工和任務分解。常見的分層:

應用層:主要負責具體的業務邏輯處理

服務層:提供可復用的服務

數據層:負責數據的存儲和訪問

分層注意事項:①必須合理規划層次邊界和接口;②禁止跨層次的調用及逆向調用。

縱向分解是將不同的功能和服務分割開來,包裝成高內聚低耦合的模塊單元,有助於軟件開發和維護,還便於不同模塊的分布式部署,提高網站的並發處理能力和功能擴展能力。

3 技術選型

在系統分解后,架構師會最終形成軟件整體架構。接下來,架構師的職責是技術選型。

前端到底用瘦客戶端還是富客戶端呢?數據庫是用MySQL還是MSSQL又或是Oracle呢?在了解用戶需求后,分解完系統后,技術選型是非常重要的環節,提出各個方向,再進行評估。不過,很多人都以為架構師是有決定權的,其實不是,架構師沒有拍板的權力,最終由項目經理來決定。

架構師在技術選型階段會提供參考信息給項目經理,項目經理再從預算、進度、人力、資源等各方面情況來權衡,最終確認。

4 制定技術規格說明

架構師在項目開發過程中是「靈魂人物」,並且要具備協調組織能力和懂得人員分工。

在制定技術規格說明階段,架構師要協調起所有的開發人員,架構師通常會用技術規格說明書與開發人員保持溝通,讓開發人員能從各個視角去觀測、理解他們負責的模塊或者子系統,確保開發人員能夠按照架構意圖實現各項功能。

三.架構師分類

其實架構師就是個title,每個公司稱呼都可能不一樣,和架構概念一樣。

軟件架構師:

軟件架構師是軟件行業中的一種新興職業,工作職責是在一個軟件項目開發過程中,將客戶的需求轉換為規范的開發計划及文本,並制定這個項目的總體架構,指導整個開發團隊完成這個計划。主導系統全局分析設計和實施、負責軟件構架和關鍵技術決策的人員,比如這些架構師的title可能是JAVA架構師、Python架構師、LAPM架構師等等。

web架構師:

web架構師是網站系統、功能、模塊、流程的設計師,架構師,好比是高樓大廈的設計人員,通常一座大廈在建之前,都先由設計師將藍圖描繪出來,包括其形狀、結構、尺寸、材料等等,然后建築工程師帶領工人們按照藍圖將大廈一層一層地建起來。

架構師也要看在什么樣的公司,中小公司很多架構師都是全能的。通常公司規模和體系越大,分工會越細。大體可以這么分類:

解決方案架構師、系統架構師、平台架構師、業務架構師、網絡架構師、移動架構師、前端架構師、大數據架構師等等。

什么是架構師?架構師應該具備什么樣的能力?

四.架構師具備素質能力

• 精通某項技術,能夠從本質上類比,觸類旁通其他技術

• 對等所有技術,只有合適和不合適,沒有喜歡和不喜歡。

• 視野開闊,了解不同技術的優缺點。知道使用某項開源技術實現某項業務需求,能夠辨別重復造輪子。

• 精通設計模式,但又不泛用。

• 把系統拆分成多個子系統或模塊。模塊之間盡量松耦合,使得原先串行的開發任務變得可以並行發展。

• 能清楚系統的瓶頸在什么地方, 不斷定位技術難度,開發進度,性能,內存等個方面的瓶頸。不斷調整骨干力量解決瓶頸,在風險爆發之前消除隱患。

• 能做好前瞻性設計,預判到需求可能產生的變化。

架構師團隊內做的事情

•溝通能力:各個方面都要了解,人人想法及規划都要知道,了解產品思想,用了什么方法實現的

•組織能力:組織推動各種技術的改進及功能的完善

•談判代表:左右兩難的時候的調解人

•設計模塊及業務:通過圖形化設計發現開發后才會發現的業務問題

•成本規划:通過過往經驗評估成本及步伐

•願望收集:不斷收集建議及願望,一步步實現

•傳播布道:不斷參與行業交流,提高理論及技術知識科普分享團隊

總結

以上就是架構應該具備的能力以及什么是架構師。架構師的形成並不是看幾本書,或是看幾節視頻就可以的。這需要在工作中積累大量的工作經驗,以及不斷的學習,才可以的。所以想成為架構師的小伙伴們,努力加油吧。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM