年前我們一起聊了 程式員為什麼要懂架構、架構是什麼 和 架構都有哪些類型 這三個話題,今天我們來看看架構師是怎樣開展工作的,他/她需要對接上下游哪些角色,以什麼作為工作輸入,最終要對外輸出什麼產物。這些內容既有助於我們跟架構崗同事更好的協作,也可以作為是否往架構轉型的參考,接下來我們一起揭開架構師的... ...
小伙伴們,新年好!
感謝大家對「IT老兵哥」原創文章的支持頂贊,❤️❤️❤️!把有價值的知識或經驗分享給更多人,在分享中提升個人價值,這是我寫作、分享的初衷和動力,在新的一年裡我會更加努力,也希望能夠繼續獲得各位小伙伴的支持!堅持原創不易,如果文章有價值,千萬要記得在手動點個「推薦」哦,^_^
祝大家新年在家庭、事業和生活上都有新的進步,我們一起加油乾!⛽️⛽️⛽️
年前我們一起聊了 程式員為什麼要懂架構、架構是什麼 和 架構都有哪些類型 這三個話題,今天我們來看看架構師是怎樣開展工作的,他/她需要對接上下游哪些角色,以什麼作為工作輸入,最終要對外輸出什麼產物。這些內容既有助於我們跟架構崗同事更好的協作,也可以作為是否往架構轉型的參考,接下來我們一起揭開架構師的神秘面紗吧!
1. 架構設計的輸入是什麼?
軟體系統最終要構建成什麼樣,這是由項目干係人的各種要求決定的。通常,我們將這些要求歸集在產品需求文檔之中,這份產品需求就是架構設計的輸入。我們可以將這些需求劃分為:
- 功能需求:完成某項業務需要的功能操作,例如:共用單車客戶端軟體需要支持單車定位、掃碼解鎖等。
- 質量需求:每項功能操作要達到什麼樣的質量要求,例如:易用性、可靠性、安全性、性能等等。
- 商業需求:軟體系統需要以什麼樣的成本、迭代速度推向市場,如何提升產品的市場競爭力等等。
2. 架構師要對接哪些角色?
這些需求源自項目干係人、商業管理、商業競爭、法律法規、技術環境、政治約束和生命周期等不同維度的訴求,架構設計就是要區分這些需求的優先順序權重,然後找出相對最優的方案來平衡滿足各個方面的訴求,最終基於這個架構設計方案研發出相應的軟體系統推向市場,並收集市場反饋輸入到下一次迭代演化當中。
因此,架構在開展工作的過程中需要對接老闆、產品、項目、開發、測試、安全和運營等各種崗位角色,他們都是架構需要關註和服務的內部客戶,他們的痛點就是架構工作的驅動因素。
3. 架構設計的輸出
- 關鍵場景(Key Scenarios):分析產品需求並從中提煉出關鍵的業務場景,架構設計必須要通過這些關鍵業務場景的驗證,例如:共用單車的關鍵業務場景包括:用戶註冊登錄、支付賬號綁定、單車租借歸還等。
- 邏輯視圖(Logical View):為了實現關鍵業務場景,整個軟體系統從邏輯上需要劃分成多少個子系統。如果關鍵業務場景比作一幕話劇,那麼邏輯視圖就是出演話劇的主要角色,它是面向最終用戶,對功能需求負責。
- 過程視圖(Process View):過程視圖是以邏輯視圖為基礎的,邏輯視圖是系統的靜態結構,過程視圖是系統的動態流程。如果把關鍵場景比作故事劇本,邏輯視圖就是角色人物,過程視圖就是讓這些角色人物把故事劇本演練一遍,在該視圖中每個角色人物的分工定位和交互關係都會被明確下來,集成人員可以根據它來驗證系統。
- 開發視圖(Development View):通過邏輯視圖、過程視圖確定了子系統的劃分和職責定位,開發視圖就是明確每個子系統採用什麼樣的技術棧來實現,包括編程語言、開發框架、分層結構、項目工程等。開發視圖主要是輸出給編程人員,編程人員基於此就可以開始編碼實現相關的工作了,所以說架構設計就是橋接需求和實現的。
- 物理視圖(Physical View):待構成整個系統的子系統都開發完成之後,我們需要將這些子系統部署到真實的物理環境當中,物理視圖就是明確每個子系統需要什麼規格的軟硬體環境,分別部署到哪個網路區域,不同網路區域是否要開通防火牆,以及每個子系統需要部署多少個實例才能滿足業務需求等,它主要是面向系統工程師。
4. 架構設計的工作流程
- 第一步,分析產品需求梳理出關鍵業務場景;
- 第二步,基於關鍵場景劃分子系統,輸出邏輯視圖;
- 第三步,基於關鍵場景、邏輯視圖確定業務交互流程,輸出過程視圖;
- 第四步,基於邏輯視圖、過程視圖確定子系統技術棧,輸出開發視圖;
- 第五步,基於邏輯視圖、過程視圖和開發視圖確定部署方案,輸出物理視圖。
今天暫時先分享到這裡,接下來我們還要繼續聊架構,敬請關註哦。堅持原創不易,如果你覺得有價值,麻煩動動手指點下文 「 推薦 」按鈕,讓更多小伙伴可以看到,老兵哥會更有動力堅持分享的。另外,我後續還會分享職業規劃、應聘面試、技能提升、影響力打造等經驗,歡迎 關註 本專欄或歪信公主號 「 IT老兵哥 」!
關註「 IT老兵哥 」,賦能程式人生!
- 軟技能-熱門文章:(首發公眾號)
- 2020 來了,你的 2019 曬好封存了嗎?
- “花式”裁員套路深,你知道嗎?
- 遭遇裁員,如何渡過心理危機?
- 如何在寒冬中找到好工作?
- 2C 還是 2B,跟找工作有什麼關係?
- 大公司 vs 小公司,你會選哪個?
- 記住這一點,不怕找不到好工作!
- 跳槽,跳還是不跳,該怎麼跳?
- 程式員“求包養”攻略揭秘
- 很努力了,為什麼我還在原地踏步?
- 硬技能-熱門文章:
- 程式員必須懂的架構入門課 1 2 3
- 架構到底是什麼?來聽程式老兵怎麼說!
- 架構竟然有這麼多種,那我該怎麼選呢?
- 如何設計出優美的Web API?
- 程式員必須掌握的性能調優 X Y Z
- 如何把單體式應用拆解成微服務?【上】
- 如何把單體式應用拆解成微服務?【下】
- 圖解 Spring:HTTP 請求的處理流程與機制【1】
- 圖解 Spring:HTTP 請求的處理流程與機制【2】
- 圖解 Spring:HTTP 請求的處理流程與機制【3】