eBay透過事件溯源實現持續交付
eBay的持續交付團隊透過使用以事件為中心的方法構建了一個可以持續交付的編配器,具備故障彈性和伸縮性,以便處理eBay構建管道中不斷增加的負載。John Long和Nataraj Sundar在兩篇博文中描述了事件溯源的好處以及在實際應用程式開發當中所具備的優勢。
Long和Sundar都是eBay的員工,他們指出,事件溯源背後的想法在很多領域已經存在了很長一段時間。例如,在金融會計中,每個條目都以不可變的方式記錄下來,並且透過相加所有相關條目來計算當前餘額。當發生錯誤時,追加新的補償條目,而不是擦除錯誤的條目。他們認為,事件溯源與開發管道中的程式碼進度有著天然的相識點。
企業持續交付(ECD)實現了事件溯源。這是一個編配器,用於協調、定義和觀察部署管道,並被用在許多內部系統中。部署管道透過拉取請求、構建、測試和部署的方式來移動程式碼。管道執行服務(PES)是ECD的一個元件,一種執行和跟蹤管道的服務,它負責將狀態報告給GitHub。這個元件使用Scala開發,並使用了actor模型框架Akka。
除了事件溯源的一般性好處之外,Long和Sundar還指出了他們在PES中使用事件溯源的三個主要原因:
•併發。在過去,同時從管道的不同部分收到的事件之間具有竟態條件,而以序列的方式處理每個事件可以更輕鬆地解決併發問題。
•除錯和可追溯性。由於他們是個小團隊,同時要支援許多管道,因此能夠快速找到故障原因並修復它們對他們來說至關重要。
•清晰度和正確性。編配對於公司來說至關重要,並且可能會變得非常複雜,因此他們需要高質量和簡單且易於理解的程式碼庫。將程式碼拆分成幾個部分,記錄傳入的資訊,計算最終模型並對模型變化做出反應,這種方式可以幫助他們實現上述的目的。
選擇事件溯源最大的原因是最後一點——清晰度和正確性。Long和Sundar認為,對於涉及時間和狀態的複雜系統,事件溯源是可行的解決方案。透過精心設計的模型,可以分別處理流程中的不同部分,從而使流程更易於理解。他們介紹了事件溯源的四個元件,每個元件都很容易理解,也很容易進行修改和測試。
•驗證傳入事件,根據需要建立和儲存相關內部事件。
•按事件插入的順序處理事件,並進行適當的檢視模型更新。
•在處理完事件之後持久化檢視,這樣在進行查詢時就不需要載入和重放所有事件。
•根據狀態變更做出響應,並在讀取模型發生更新時決定該做些什麼,然後啟動新actor來執行操作。
到目前為止,他們的系統已經處理了超過220萬個事件,生成了大約200,000個執行檢視。Long和Sundar表示,事件溯源架構對於實現相容和直觀的解決方案來說至關重要。
英文原文:Continuous Delivery Implemented with Event Sourcing at eBay
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31547898/viewspace-2200049/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 快速指南:在DevOps中實現持續交付dev
- 持續整合、持續交付與持續部署
- 持續整合、持續部署、持續交付、持續釋出
- 你真的懂持續整合、持續交付、持續部署嗎?!
- 使用Kafka實現事件溯源Kafka事件
- 基於Jenkins + Argo 實現多叢集的持續交付JenkinsGo
- 淺談持續整合(CI)、持續交付(CD)、持續部署(CD)
- 雲效DevOps實踐-8分鐘如何快速實現持續交付dev
- 對持續整合、 持續交付、持續部署和持續釋出的介紹
- 3分鐘瞭解清楚持續整合、持續交付、持續部署
- [譯] 不使用 fastlane 實現持續交付的 5 種選項AST
- 持續整合持續部署持續交付_持續整合與持續部署之間的真正區別
- 持續交付探索與實踐(一):交付流水線的設計
- SAP開源的持續整合-持續交付的解決方案
- 使用ArgoCD和Liquibase在有資料庫的Kubernetes中實現持續交付 - PiotrGoUI資料庫
- 持續交付體系在高德的實踐歷程
- 數字化浪潮來臨,如何實現業務敏捷交付和科技持續治理?敏捷
- 持續交付會如何影響測試
- 雲原生下的DevOps與持續交付dev
- 聊聊持續交付與軟體架構架構
- 使用流水線外掛實現持續整合、持續部署
- 持續整合、持續交付和持續部署有什麼區別?0基礎學習linux技能Linux
- 持續交付探索與實踐(三):指標度量體系搭建指標
- 容器映象服務聯手 IDE 外掛,實現一鍵部署、持續整合與交付IDE
- 使用Datomic實現沒有麻煩的事件溯源事件
- GitOps | 一種雲原生的持續交付模型Git模型
- 持續交付中的分支管理與版本控制
- 太多指令碼將會毀掉持續交付指令碼
- 廢銅鋁加工行業透過物聯網技術實現高質量可持續發展行業
- 函式計算持續交付入門:雲效+FC實現 簡單IP查詢工具函式
- 持續交付探索與實踐(二):自動化工具鏈建設
- iOS使用fastlane實現持續整合iOSAST
- 使用EventStoreDB實現事件溯源的Python開源專案事件Python
- 使用EventStoreDB實現事件溯源的Java開源專案事件Java
- 使用AsyncAPI規範簡潔實現CQRS事件溯源案例API事件
- Chronicle事件溯源的最佳實踐事件
- 喬樑專訪——讓持續交付變為可能
- 事件流與事件溯源事件