Debezium — 它抓得住資料的改變
現代很多應用(application)都很複雜,通常是資料庫裡的資料有變動,就需要觸發一連串的相依動作,光舉一個登入為例,就可能需要 1 更新資料庫, 2 寫日誌(log), 3 送 tracking events, 4 送數據到 data dashboard 等等,越龐大的系統就越多事情要做。
通常規模小的系統不外乎是通通寫在 API 裡,全部做完也不會花太多時間,但缺點就是程式碼全部擠在一起,複雜性上升,易維護性下降。
要解決這個問題,可以把每個功能都切開,變成多個 workers, 持續偵測資料庫裡的資料是否有變化,偵測到變化之後就執行自己應該執行的工作,如此一來 API 就可以專注在維護資料的更新邏輯,剩下的部分就交給 workers 各自處理,也不怕影響 API 穩定性。
p.s. 也有人用它來造 data pipeline, 每個 worker 負責各自的數據處理
持續偵測資料庫裡的資料變化這件事,現在也不需要自己造輪子了,可以交給 Debezium 。
Debezium 支援 MySQL, PostgreSQL, MongoDB, DB2, SQL Server 等資料庫,而它其實就是架構在 Apache Kafka 之上的應用,基本上不用太擔心效能與穩定性問題,開發者可以更專注在業務邏輯的開發上。
目前 Reddit, Shopify, Tokopedia, Ubisoft, Vimeo 等公司都有用到 Debezium, 如果有興趣的話可以玩看看, Debezium 有將 tutorial 包裝成 Docker, 可以輕鬆架好環境進行學習。