Airbnb的架構演進
摘要如下:
自公司成立以來,Airbnb 的架構經歷了三個主要階段。
Airbnb 最初是一個 Ruby on Rails 單體,然後過渡到微服務架構,現在已經遷移到微服務和宏服務的混合體(一個宏服務聚合多個微服務)。
單體(2008 - 2017)
Airbnb 開始使用 Ruby on Rails 單體,它對公司非常有效。
大多數工程師都是全棧工程師,可以處理程式碼庫的每個部分,自己執行端到端的功能。功能可以在一個團隊內完成,這有助於公司非常快速地構建新產品。
然而,隨著 Airbnb 進入高速增長期,工程師、團隊和程式碼行的數量迅速增加。
單個工程師/團隊不可能理解並共享整個程式碼庫的上下文,因此需要所有權和團隊邊界。
由於單體應用非常緊密耦合,Airbnb 一直在努力劃定這些團隊邊界。
一個團隊中的程式碼更改對另一個團隊產生了意想不到的後果,並且誰擁有對程式碼庫不同部分造成混淆的東西。
還有其他擴充套件痛點,例如極其緩慢的部署,有時需要一天多的時間才能完成一次部署。
這些問題導致開發人員速度變慢,Airbnb 決定轉向面向微服務的方法來減少這些痛點。
微服務(2017 - 2020)
在從單體應用的經驗中學習之後,Airbnb 的工程師們希望在他們的微服務方法上更加自律。
他們決定有 4 種不同的服務型別
- 讀取和寫入資料的資料獲取服務
- 能夠應用功能並將不同的資料組合在一起的業務邏輯服務
- 用於編寫編排的工作流服務。這處理涉及跨多個服務接觸資料的操作。
- 一個 UI 聚合服務,將所有這些放在一起為 UI
為了避免單體應用出現所有權問題,每個微服務只有一個擁有它的團隊(每個團隊可以擁有多個服務)。
透過這些變化,Airbnb 也改變了工程團隊的結構方式。
以前,工程團隊是全棧的,能夠處理任何事情。但是現在,有了微服務,Airbnb 轉向了只專注於堆疊的某些部分的團隊。一些專注於某些資料服務,而另一些則專注於特定的業務邏輯。
Airbnb 也有一個專門的團隊負責將單體應用遷移到微服務。該團隊負責構建工具以幫助遷移,並向 Airbnb 工程師傳授微服務構建和運營的最佳實踐。
經過幾年的微服務遷移,新的挑戰開始出現。
管理所有這些服務及其依賴項非常困難。團隊需要更加了解服務生態系統,以瞭解任何依賴關係可能存在的位置。
構建端到端功能意味著在整個堆疊中使用各種服務,因此不同的工程團隊都需要參與其中:所有這些團隊都需要圍繞該功能有類似的優先順序,這很難管理,因為每個團隊都擁有多個服務。
微 + 宏服務 (2020 - )
為了應對這些協作挑戰,Airbnb 現在正在採用微服務和宏觀服務之間的混合方法。該模型側重於 API 的統一和整合,以便為某些資料或功能提供明確的位置。
他們正在建立一個系統,他們的內部後端服務從資料聚合服務中獲取資料。
然後,資料聚合器與各種服務塊進行通訊,其中每個服務塊都封裝了一組微服務。
Airbnb 工程師預見到這種方法的一個挑戰是資料聚合器可以成為一個新的單體。
為避免這種情況,他們對哪些資料/服務屬於哪裡的邊界非常自律。
對於服務塊層,工程師需要確保他們以乾淨的方式定義模式邊界。
有許多資料/邏輯可以跨越多個實體,因此需要明確定義。
欲瞭解更多詳情,您可以在此處觀看 Jessica 的完整演講。
相關文章
- Serverless 架構的演進Server架構
- 今日頭條架構演進之路——高壓下的架構演進專題架構
- 架構演進之「微服務架構」架構微服務
- 聊聊演進式架構架構
- 技術架構演進的思考架構
- Serverless 架構模式及演進Server架構模式
- Python後端架構演進Python後端架構
- 從MVC到DDD的架構演進MVC架構
- 統一接入層架構的演進架構
- 圖解分散式架構的演進圖解分散式架構
- Serverless 架構演進與實踐Server架構
- Flutter Fish Redux架構演進2.0FlutterRedux架構
- vivo推送平臺架構演進架構
- 萬表商城Android架構演進Android架構
- DBT、Airflow 和 Kubernetes的架構演進 - yanAI架構
- 從零入門 Serverless | 架構的演進Server架構
- Java分散式架構的演進過程Java分散式架構
- Apache Druid 在 Shopee 的雲原生架構演進ApacheUI架構
- 淘寶10年的架構演進過程架構
- 資料治理:資料整合架構的演進架構
- LBS定位系統架構是如何演進的架構
- 有贊搜尋系統的架構演進架構
- 圖解分散式架構的演進過程!圖解分散式架構
- hadoop 原始碼分析HDFS架構演進Hadoop原始碼架構
- 微服務事件驅動架構演進微服務事件架構
- 馬蜂窩支付中心架構演進架構
- 架構的演進, 阿里資深Java工程師表述架構的腐化之謎架構阿里Java工程師
- 架構的演進,阿里資深Java工程師表述架構的腐化之謎架構阿里Java工程師
- 架構設計之架構的演變架構
- 外賣客戶端容器化架構的演進客戶端架構
- 圖解分散式架構的發展和演進圖解分散式架構
- 億級流量系統架構演進之路架構
- 研發協同平臺架構演進架構
- MySQL資料庫架構——高可用演進MySql資料庫架構
- 荔枝架構實踐與演進歷程架構
- 技術架構分享:美團配送系統架構演進實踐架構
- 雲原生架構下的微服務選型和演進架構微服務
- 淺談大型分散式Web系統的架構演進分散式Web架構