加枝添葉我欲乘風微不足道信誓旦旦
唯我,NoBug1024
PS:現在的努力是為了成就更好的自己,不再仰望大神的后背!
不加密, 10米
1、架構師定義
什么是架構師,這個聊架構話題時永恆的問題。每個公司對架構師的定位也有所不同,因為不同公司所處的階段,業務模式,應用場景也都不一樣。對架構的要求也不一樣。
在初創公司的野蠻生長階段:業務場景和需求邊界很難把握,有時候根本不需要架構師,產品需要快速迭代和變現,需求頻繁更新,這個時候需要的是快速實現。當然如果公司成長以后,這個階段就是欠下很多技術債,埋下很多坑,如果人員流動很頻繁,后期系統維護成本是非常巨大的。
在公司成長穩定階段:業務模式和應用場景邊界都已經比較清晰,這個時候最需要架構師需要架構師能對線上業務進行模塊划分,系統拆分重構,並做好相關高可用的措施,以保證系統的穩定,安全、高效地運行。
不同的行業,對架構師的要求也不同,比如電商業務和AI領域,從架構到業務場景,完全是兩個物種。
2、架構師作用/職責
架構師在整個軟件系統開發過程中都起着重要的作用,並隨着開發進程的推進而其職責或關注點不斷地變化。
1)、按軟件開發過程維度來說:
需求階段:軟件架構師主要負責理解和管理非功能性系統需求,比如軟件的可維護性、性能、復用性、可靠性、有效性和 可測試性等等,此外,架構師還要經常審查和客戶及市場人員所提出的需求,確認開發 團隊所提出的設計;
架構設計階段:架構師負責對整個系統架構設計,制定開發規范、開發計划,指導整個開發團隊完成這個計划。
開發階段:架構師則成為詳細設計者和代碼編寫者的顧問,並且經常性地要舉行一些技術研討會、技術培訓班等;
測試和交付階段:協調做好相關測試和部署。
維護階段:軟件架構師就開始為下一版本的產品是否應該增加新的功能模塊進行決策。

1 確認需求
架構師要懂得用戶需求,理解用戶真正想要什么,這使得架構師必須要和分析人員不斷溝通,反復確認需求規格說明書,以此來保證他精准清楚用戶需求。
項目經理劉先生在受訪時說:「架構師會與很多人溝通,例如開發人員,例如我們項目經理,有時甚至是用戶本身。架構設計的目的很明確,目的是什么呢?挖掘用戶需求。」
2 系統分解
在架構師認可需求規格說明書后,架構師已明確用戶需求是是什么,這時候便看架構師的分解能力了。
系統分解包括縱向分解和橫向分解:
橫向分解是對系統分解成不同的邏輯層,確定層與層之間的關系。是指基於技術架構層次進行的人員角色分工和任務分解。常見的分層:
應用層:主要負責具體的業務邏輯處理
服務層:提供可復用的服務
數據層:負責數據的存儲和訪問
分層注意事項:①必須合理規划層次邊界和接口;②禁止跨層次的調用及逆向調用。
縱向分解是將不同的功能和服務分割開來,包裝成高內聚低耦合的模塊單元,有助於軟件開發和維護,還便於不同模塊的分布式部署,提高網站的並發處理能力和功能擴展能力。
3 技術選型
在系統分解后,架構師會最終形成軟件整體架構,接下來,架構師的職責是技術選型。
前端到底用瘦客戶端還是富客戶端呢?數據庫是用MySQL還是MSSQL又或是Oracle呢?架構師張先生在接受采訪時說,在了解用戶需求后,分解完系統后,技術選型是非常重要的環節,提出各個方向,我再進行評估。不過,很多人都以為架構師是有決定權的,其實不是,架構師沒有拍版的權力,決定由項目經理來做。
架構師在技術選型階段會提供參考信息給項目經理,項目經理再從預算、進度、人力、資源等各方面情況來權衡,最終確認。
4 制定技術規格說明
如前文調查顯示,架構師在項目開發過程中是「靈魂人物」,並且要具備協調組織能力和懂得人員分工。
在制定技術規格說明階段,架構師要協調起所有的開發人員,架構師通常會用技術規格說明書與開發人員保持溝通,讓開發人員能從各個視角去觀測、理解他們負責的模塊或者子系統,確保開發人員能夠按照架構意圖實現各項功能。