【資料工程】關於 Airbyte 的介紹、優缺點以及個人使用心得

  1. 什麼是 Airbyte?
  2. 為什麼要選擇 Airbyte?
  3. 關於 Airbyte 的優點
    1. 介面友善
    2. No-Code & 可重複使用的 connectors
    3. 內建 Connector 一鍵更新版本的功能
    4. 不讓 Schema Change 搞壞 Pipeline
  4. Airbyte 目前還是有些小缺點
    1. 無法管理 Secrets 和版本
    2. 開源版的 Airbyte 免費,但需要自架伺服器成本
    3. Metadata 增加儲存成本
    4. Connections 介面資訊不足
    5. 中文欄位名不支援
  5. 總結

什麼是 Airbyte?

在資料工程領域,最常見的工作內容就是處理 ETL/ELT Pipeline(Extract, Load & Transform),現在 ELT 架構比 ETL 更加普及,因為 ETL 會先將資料進行處理後才儲存,就犧牲了資料的彈性(如果後續想要的資料長不一樣會很麻煩),ELT 則是從資料來源先儲存 Raw data,之後有需要做任何處理和變更都會更方便。

Airbyte 是一個開源的資料整合工具,主要是用來建立 ELT Pipeline 中的 EL,也就是把數據從一個來源同步到另一個目的地做儲存,Airbyte 提供很多預先定義好的 Connectors,使用者只要輸入一些資訊就可以建立好一條完整的 EL Pipeline,近期我也花了不少時間研究並嘗試使用 Airbyte,這篇文章就記錄一些心得感想。

為什麼要選擇 Airbyte?

做 EL 的工具很多,就我所知市面上比較熱門的應該是 Fivetran,但 Fivetran 算是需要付費的工具,而且並沒有做開源,因此我覺得 Airbyte 在開源+免費的這部分很有優勢,截至撰文的此時(2024 年 6 月)GitHub 星數已經穩定上升到快 15K。

另外從 Google Trends 這幾年的數據可以看到,Airbyte 在近期的熱度已經有超越 Fivetran 的趨勢。

全世界大約有 521 間公司採用,在台灣也已經有公司開始採用 Airbyte 作為實際 Production 情境使用。

關於 Airbyte 的優點

以下列出我個人覺得 Airbyte 好用的點

介面友善

  • 有簡潔易懂的 UI 方便管理所有資料串接(Connections)
  • 也可以在介面上設定 API 作為 Custom Data Sources
  • 官方有提供 Demo App 可以快速參觀一下 Airbyte UI

No-Code & 可重複使用的 connectors

如果需要多串接一個資料來源或資料庫,Data Engineer 就要寫一個新的程式碼,例如原本資料都是存在 BigQuery,今天想要改成存在 Snowflake,那就要去花很多時間研究他的文件、測試,直到最後成功上線可能都要花一兩個月的時間,但如果是使用 Airbyte 就可以大幅節省重複撰寫程式碼的時間,切換資料庫可能只需要一兩天就能搞定。

內建 Connector 一鍵更新版本的功能

這個可以解決 Data Engineer 的痛點是:當 Python 套件版本需要更新時,有可能就要重構程式碼,除了擔心 Bug 之外,還要擔心版本相容性 / 相依性的問題和風險,但 Airbyte 可以在設定裡面一鍵更新套件,大幅降低人為造成的風險。

不讓 Schema Change 搞壞 Pipeline

相信很多 Data Engineer 都有遇過一個情況:

上游的資料來源突然變更,導致 Pipeline 壞掉,下游流程全部停掉
隔天整個 Data Team 一起加班補資料」…

在 Airbyte 的設定中,可以讓 schema 變更是需要手動承認,在沒有按下承認之前,資料架構不會有變化,所以 Pipeline 就不會受 schema change 影響,依然按照原本的欄位去跑,可以減少資料工程師加班的機率。

而且還可以設定偵測到 Schema 變更時傳送通知訊息,讓團隊都能即時發現狀況。


Airbyte 目前還是有些小缺點

我在使用過程中也有發現一些目前 Airbyte 的缺點

無法管理 Secrets 和版本

因為是直接 No-code UI 上操作,所以像是 client id, key 這種 secret 就沒辦法做管理,還有設定的歷史紀錄、更改紀錄也都不會儲存下來。

雖然可能可以透過 IaC (Infrastructure as Code) 工具像是 Terraform 來實現(如下圖),但團隊如果原本沒有使用 Terraform 的話就會多增加一個學習成本。

開源版的 Airbyte 免費,但需要自架伺服器成本

這也是典型的「開源=免費」的一個迷思,只要是需要自架伺服器的,都會需要額外的機器成本以及後續維護成本,並不是完全免費。

Metadata 增加儲存成本

Airbyte 傳送的資料會包含 Metadata 欄位,像是

  • _airbyte_raw_id
  • _airbyte_extracted_at
  • _airbyte_meta

如下圖就是我把 Google Sheet 資料透過 Airbyte 儲存到 BigQuery 後的 Table,前面三個 Metadata 欄位的資料就會增加儲存的成本,當資料量大的時候多出這三個欄位可能會增加不少費用。

Connections 介面資訊不足

目前看起來無法在 Connections 一覽表直接看到 Schema 有變更的 pipeline,或是實際 Cron Job 執行時間(如下圖,Frequency 只會顯示 Cron 四個英文字),這些詳細資訊都需要點進去才能看到,稍微有點麻煩。

中文欄位名不支援

如果資料來源的欄位名稱是中文的話,進到 Destination 後欄位名稱會變奇怪的英文和底線,例如我 Google 試算表的資料欄位是「寶可夢名稱」,進到 BigQuery 之後變成類似 ___f0_ 這樣的欄位名,所以目前還是要讓欄位名維持英文會比較穩定。


總結

最近我已經在一兩個 Side Projects 中試著採用 Airbyte 來作為我 ELT Pipeline 的主力工具,目前都還是覺得很方便實用。

總結來說我覺得 Airbyte 有以下幾個原因讓我會想要繼續使用下去:

  1. 能確實解決很多資料工程的痛點
  2. 不需程式基礎,任何人都能使用並快速上手
  3. Pipeline 迭代可以更快速,讓我們更能因應現在這個 AI 與科技應用變化速度極快的時代
  4. 節省維護 Data Pipeline 的成本,讓 Data Engineer 能協助更多策略面的任務

發表留言