IBM架構師分享:極簡主義軟體架構 - Neal Hu
從構建大規模多區域分散式系統中汲取的經驗教訓!
在設計系統時,軟體架構師通常需要選擇各種依賴關係 - 基礎架構,身份驗證,儲存,當我第一次開始在IBM擔任軟體架構職責時,我傾向於選擇完成工作的依賴項,但很快我就學會了這一課:做一個極簡主義者。只有在絕對需要時才引入新的依賴關係。
什麼是依賴?
答案似乎很簡單。如果你的系統依賴某些東西來執行,那就是一個依賴。然而,這只是冰山一角。依賴需要:
- 存在:無論你的系統走到哪裡,它都會發生。
- 合規性:它符合您的系統要求的相同要求。
- “UX”:它讓您的使用者滿意。
- 維護:您需要花費額外的資源來維護它。
故事
在IBM Watson,與許多其他全球業務一樣,我們的系統部署在世界各地。在設計內部SaaS時,我們的團隊希望使用由另一個IBM團隊託管的資料庫即服務。我們在開發環境中使用它做了一個原型,甚至在我們的美國生產中進行了alpha擴充套件。一切看起來都很棒。
然而,當我們被要求在截止日期前將我們的系統部署到歐洲和澳大利亞等非美國地區時,我們意識到資料庫團隊有自己的全球推廣計劃。我們可以等待它們或在我們的程式碼中建立一個標誌,以根據資料庫的存在禁用某些功能。
我們最終選擇了後者。但它為我們的部署引入了碎片,這導致我們的CI / CD管道出現更多問題。它還在我們的程式碼庫中造成了不必要的複雜性。當我們新增新功能時,我們需要考慮兩種情況(使用該資料庫或不使用它)。如果您有N個依賴項,則可能最終得到2 ^ N個依賴項存在情況的組合。不用說,這將是一場噩夢。
合規性
今天,計算系統的規則和合規性比以往任何時候都多。如果您的公司為歐盟公民服務,您可以受GDPR的約束。如果您希望在美國為醫療保健業務提供服務,您必須與HIPAA會面。所有這些法規都對您的系統和依賴關係提出了要求。就像您需要確儲存在一樣,您需要保證您的依賴關係符合相同的要求。否則,在他們違反合規性的那一刻,你的系統也是如此。
“UX”:Kafka Streams vs Flink
當您設計框架並向其他人提供使用程式碼而不是託管SaaS時,使用者體驗更為重要。請記住,當使用者邀請您的框架進入他們的房子時,他們也必須歡迎這些依賴項。
以Kafka Streams和Apache Flink為例。在構建基於Kafka的流處理管道時,我研究了它們。這裡是一些快速上下文背景介紹:Kafka是一個開源的分散式佇列系統,Kafka Streams是一個基於Kafka的框架,可以幫助處理Kafka中的資料。Flink可以完成類似的任務。
Kafka Streams和Flink有很多優點和缺點,但對我來說,中間代理是他們的依賴。Kafka Streams只需要依賴Kafka。另一方面,Flink需要依賴Zookeeper叢集來實現HA(高可用性)。我們沒有足夠的資源來自己託管這樣一個叢集; 因此,我們選擇了在Faf上Kafka Streams。
維護
新增新依賴項還會隱藏維護成本,例如其他度量標準,監視和警報,故障方案和自動化。依賴關係可能變慢或者只是失敗,您的系統需要具有檢測和處理它們的邏輯。部署系統時,持續交付系統應設定所有內容,包括依賴項,因此新的依賴關係通常意味著自動化中的新邏輯。為額外的工作做好準備!
相關文章
- 軟體架構簡介架構
- 看阿里P9架構師如何向你定義架構及架構師阿里架構
- 架構之:軟體架構漫談架構
- 極簡架構模式-組合實體模式架構模式
- 極簡架構模式-MVC模式架構模式MVC
- 軟體架構發展歷程分享架構
- 趣頭條 架構部 急招 中介軟體研發工程師/架構師架構工程師
- 軟體架構模式之微服務架構架構模式微服務
- 軟體架構風格——規則架構架構
- 趣頭條 中介軟體架構師架構
- 軟體架構師或解決方案架構師必讀的五本書 - javarevisited架構Java
- 架構師修煉之道(二)——架構?設計?架構師?架構
- 極簡架構模式-控制反轉架構模式
- 架構學習筆記系列四——架構師軟文架構筆記
- 十幾位資深架構師,整理了最新架構師學習體系,分享給大家!架構
- 軟體架構師主要工作 - Twitter Moses Macero)架構Mac
- 架構師的定義是什麼?架構師需要具備哪些能力?架構
- 『網際網路架構』軟體架構-mybatis體系結構(14)架構MyBatis
- 最佳軟體架構書籍終極清單 (2024)架構
- 架構:軟體成本估算架構
- 軟體架構指南 - martinfowler架構
- 極簡架構模式-依賴注入模式架構模式依賴注入
- 極簡架構模式-業務代表模式架構模式
- 極簡架構模式-傳輸物件模式架構模式物件
- 移動端架構師_Android架構師成長體系課程架構Android
- 阿里架構師,講述基於微服務的軟體架構模式(附資料)阿里架構微服務模式
- 關於軟體架構和業務架構的思考架構
- 10年資深架構師分享 | 普通程式設計師向架構師進階之路架構程式設計師
- Java軟體架構師-25個關注點Java架構
- 軟體測試架構師修煉之道 (一)架構
- 軟體測試架構師修煉之道 (二)架構
- 軟體測試架構師受歡迎嗎?架構
- 軟體架構師需要具備的技能 - Abeysinghe架構
- 十大常用軟體架構模式簡介架構模式
- 人類簡史、軟體架構和中臺架構
- 單體架構到垂直架構架構
- TOGAF企業架構與軟體架構的對應圖架構
- 架構師眼中的高併發架構架構