如何做好一個系統架構師:抓住敏捷架構中幾個關鍵決策點
開發人員在任何軟體專案過程中都會做出數百個微觀和巨集觀決策。有些似乎相對無害,但對下游會有一個很大的影響。幾位Cantina工程師聚在一起,回顧了我們在學習了一些艱苦的經理後需要特別考慮的關鍵點。
1. 利益相關者要求
您作為架構師或系統設計師的首要任務幾乎總是讓所有必要的利益相關者儘快發現需求。
這些需求在專案的初始階段可能是最難獲得的。雖然這種擔憂通常與看似最後一刻的審計和安全要求有關,但請記住上下文規則。
2. 資料讀/寫伸縮平衡
在決定如何構建可伸縮Web應用程式時,關鍵的首要決策是瞭解資料儲存可能需要的讀寫平衡:
- 重型寫:應用程式在擴充套件時會遇到一致性問題,因此應儘早注意模型的寫入完成,資料分發和各種批處理過程。像Twitter和其他人這樣的大量應用程式通常採用流式寫入模式,將訊息傳遞作為支援可伸縮寫入語義的主幹。利用釋出/訂閱(pub / sub)和Google Spanner等併發概念可以提供幫助。(還記得:日誌和資料庫只是彼此的對偶)。
- 繁重讀:此類應用程式可能是隨著它們的增長而最容易擴充套件的。有許多開箱即用的技術可以促進這種模式,包括許多快取機制,高效能鍵值儲存以及MongoDB等流行儲存系統的複製只讀節點。
3.資料一致性
我們中沒有一個人可以逃脫CAP定理!
但只有在出現系統故障,網路故障或其他無法滿足三元組的分割槽(P)元素時才會發揮作用。在這種情況下,應用程式設計人員和架構師必須提出一個棘手而棘手的問題:這個產品可以更好地容忍哪些,一致性失敗或可用性失敗?
- 一致性 - 如果您的應用程式可以同時訪問不同節點的不同狀態,那麼一致性並不是最重要的。當向兩個不同的使用者顯示社交媒體饋送時會出現這種情況,每個使用者的結果略有不同。
- 可用性 -如果追求總是能返回結果,NoSQL運動的資料儲存解決方案或實施BASE語義將是可行的選擇。但是,如果同時為所有同時請求(想想金融交易,銀行,證券交易所)提供正確和相同的答案也很重要,那麼一致性是最重要的,最好不要返回錯誤的結果。這有時會產生昏昏欲睡的結果響應或鎖定狀態,但通常值得花費正確的響應。在這種模式中,具有ACID語義的傳統關聯式資料庫系統通常是應用程式設計的必要初始選擇。
4. 領域/資料模型
在考慮指定系統應該是什麼業務領域時(參見域驅動設計),應該考慮系統的上下文 - 允許通過系統傳遞的非上下文固有的資訊作為文件而不是作為領域模型的一部分。
例如,採用一個系統將天氣資料返回給使用者,但該系統也從另一個第三方服務獲取該資料。
解決方案可能會尋求保持從第三方返回的資料,並將其領域複製為自己的領域。這將迫使架構管理一個更復雜的領域,該領域具有許多可能永遠不會使用的關係,但必須隨著時間的推移而維護。
通過將較小的關聯式資料庫與文件儲存相結合,它還將模糊改善資料訪問效能和簡單性的潛力。
像這樣的問題可以通過埠和介面卡等範例來解決。通過完全理解系統的領域而不包括領域環境不固有的資訊,架構師能夠做出能夠極大地提高設計效能和可維護性的儲存技術決策。
5. 負載的可變性
在災難或公共事件期間接收大量負載峰值的API(例如Facebook)將具有與從空氣質量感測器接收預期的每小時度量標準的要求截然不同的要求。
利用可以有效計量請求的體系結構(佇列,熱表等)可以緩解這些問題中的一些問題。
如果資料一致性不是系統中最重要的問題(如前所述),那麼複製資料系統可以幫助在請求進行負載平衡或智慧路由時保持單一入口點的壓力。
雖然無伺服器計算提供了諸如內建擴充套件等顯著優勢,但它需要更多純函式的無狀態程式碼結構。對於新系統的綠地greenfield實施,這可能沒問題,但遷移遺留系統可能是一個挑戰。
相關文章
- 架構師如何做出架構決策? – IasaGlobal架構
- Java軟體架構師-25個關注點Java架構
- 技術架構師如何制定決策 – Mark Greville架構
- 架構師之路:一個架構師需要掌握的知識技能架構
- ETL架構中的38個子系統架構
- 架構師面試的幾個小技巧 - nickbulljs架構面試JS
- 實時決策系統中 OpenMLDB 的常見架構整合方式架構
- 解決方案架構、系統架構和企業架構區別架構
- 如何成為一個合格的資料架構師?架構
- 如何做一個合格的測試架構師架構
- 如何在敏捷中交付可靠的架構?敏捷架構
- 架構師職業迴歸:分散式系統架構師 - Leon架構分散式
- Redgate是如何做出架構決策的?架構
- 系統架構設計師學習(二)系統架構設計師緒論架構
- [爬蟲架構] 如何設計一個分散式爬蟲架構爬蟲架構分散式
- 硬貨:如何做好一名系統架構設計師以及面試技巧架構面試
- 中國系統架構師大會精彩繼續,“四大關鍵詞”點亮SACC2018架構
- Java網際網路架構,如何快速搭建一個微服務架構?Java架構微服務
- 看阿里P9架構師如何向你定義架構及架構師阿里架構
- 系統架構設計師感想架構
- 我們如何在Adyen做出架構決策 - Adyen架構
- 企業架構師、解決方案架構師和技術架構師的異同 - Briqi架構
- 阿里資深架構師私下峰會:瞭解這幾點,人人皆是優秀架構師阿里架構
- 每一個程式設計師,都希望能成為分散式系統架構師程式設計師分散式架構
- 一個架構師的快取修煉之路架構快取
- 阿里架構師耗時一個月整理的《java架構師學習路線》太全了阿里架構Java
- 架構師修煉之道(二)——架構?設計?架構師?架構
- 現代資料架構的7個關鍵技術架構
- 十幾位資深架構師,整理了最新架構師學習體系,分享給大家!架構
- 架構師日常(一)架構
- 如何設計一個微型分散式架構?分散式架構
- 如何清晰地描述一個專案架構架構
- 如何記錄產品和軟體架構決策?架構
- 阿里十年架構師用一張圖告訴你什麼是系統架構師阿里架構
- 系統架構師綜合知識架構
- 企業資料庫的選擇通常由系統架構師主導決策 - thenewstack資料庫架構
- 系統架構7個非功能性需求架構
- 對話京東安全首席架構師:電商平臺構建安全防護體系關鍵點架構