「我們認為 Apache Beam 的執行器不可知性提供了彈性,並在新的執行期開發出來時,為我們的串流處理平台提供了未來保障。Apache Beam 讓 Intuit 的串流處理普及化,並將許多批次工作遷移到串流應用程式。」

Nick Hwang
Intuit 串流處理平台工程經理

在 Intuit 驅動串流和即時機器學習

背景

Intuit® 是一個全球技術平台,提供一系列金融和行銷自動化解決方案,包括 TurboTaxQuickBooksMintCredit KarmaMailchimp,其使命是推動全球繁榮。超過 1 億人信任 Intuit 產品來處理其稅務準備、小型企業會計和個人財務管理。

Intuit 開發了一個內部自助式串流處理平台,利用 Apache Beam 加速即時應用程式的上市時間。

Intuit 資料基礎架構團隊的工程經理 Nick Hwang 分享了如何使用 Apache Beam 建構 Intuit 的自助式串流處理平台的故事,並為開發人員提供了一種簡單直觀的方法來撰寫、部署和管理串流管線。

自助式串流處理

在尋找 AI 和資料驅動的解決方案以增強其金融管理產品組合時,Intuit 資料基礎架構和產品團隊看到了對自助式資料處理平台的巨大需求。他們的資料工程師和開發人員需要一條「鋪好的道路」來開發即時應用程式,同時抽象化底層的營運和基礎架構管理細節。

2019 年,Intuit 的資料基礎架構團隊開始設計其串流處理平台,其使命是讓開發人員專注於業務邏輯,而平台則代表他們處理所有營運和基礎架構管理細節。

我們平台的承諾是您一開始不必擔心部署。您只需更新您的程式碼成品、新增您想要的轉換、將管線指向您的來源和接收器,我們會處理剩下的事情。您按一下按鈕,平台就會為您部署您的作業。

Nick Hwang
Intuit 串流處理平台工程經理

由於 Apache Beam 可以靈活地從各種程式設計語言執行引擎中選擇,因此被選為 Intuit 串流處理平台的核心資料處理技術。Apache Beam 的可移植性和易於採用為初始平台版本的啟動提供了必要的「加速」,該版本使用 Apache Samza 作為執行引擎,並使用 Apache Beam 串流管線從 Kafka 讀取和寫入。

我們選擇 Apache Beam 的主要原因是執行器不可知性。我們的平台是一項長期投資,我們希望為未來可能發生的任何事情做好準備。

Nick Hwang
Intuit 串流處理平台工程經理

2020 年 1 月,Intuit 的串流處理平台的第一個版本發布。很快地,執行引擎的 Apache Beam 抽象證明了它的優勢,讓 Intuit 可以無縫地將其資料處理基礎架構從 Apache Samza 切換到 Apache Flink,而不會造成任何使用者痛點或生產停機。

當我們決定從 Apache Samza 轉向 Apache Flink 時,我們有幾十個使用案例和管線在生產中執行,但沒有任何使用者需要變更他們的程式碼。Apache Beam 的優勢在這種情況下真正展現出來。

Nick Hwang
Intuit 串流處理平台工程經理

Intuit 串流處理平台團隊受益於 Apache Beam 的可擴展性,這讓他們可以輕鬆地使用自訂 SDK 層包裝 Apache Beam,以更好地與其特定的 Kafka 安裝互通。他們將 SDK 與圖形使用者介面配對,以提供一種視覺化方式來設計、管理、部署、監控和偵錯資料處理管線,以及 Argo Workflows 以促進在 Kubernetes 上的部署。Intuit 串流處理平台團隊還開發了一項內部服務,以協助在將指標路由到 Wavefront 時按類別篩選和管理指標,以改善管線健全狀況的可觀察性和監控。Apache Beam 內建 I/O 連接器協助為各種接收器和來源提供原生支援。

串流處理平台為開發人員提供完整的堆疊環境,以視覺化方式設計串流管線;測試、配置並將其提升到生產環境;以及監控生產中的管線。開發人員在串流處理平台的應用程式層(請參閱以下層)使用 Beam Java SDK 建立 Apache Beam 管線。Intuit 的圖形使用者介面(UX 層)可視覺化配置接收器和來源、計算資源擴展、管線生命週期管理、監控和指標。在控制層,基於 Spring 的後端維護平台上所有執行管線的中繼資料,並與 Intuit 生態系統互動以進行資料治理、資產管理和資料血統。UX 層與控制層通訊,控制層會叫用 Argo Workflows 以在 Kubernetes 上託管的 Apache Flink 執行期層上部署 Apache Beam 管線。

Intuit 的串流處理平台承諾提供開箱即用的解決方案,旨在允許重複使用範本化的實作,以加速常見使用案例的開發,同時仍為獨立應用程式提供自訂功能。例如,Intuit 建立了自己的 DSL 介面,為點擊串流主題的簡單轉換提供自訂配置。

Intuit 串流處理平台的技術堆疊 Intuit 串流處理平台的技術堆疊

該平台讓串流處理更容易採用,為 Intuit 的資料工程師和開發人員提供自助服務功能。

我們整個平台的想法是盡量減少啟動並執行即時應用程式的進入門檻。例如,「我只想在 Kafka 主題上執行這個 SQL 查詢並將其寫入某些接收器,請告訴我如何在一天內而不是兩個月內完成。」

Nick Hwang
Intuit 串流處理平台工程經理

驅動即時資料

以 Apache Beam 驅動的統一點擊串流處理是 Intuit 最具影響力的使用案例。Apache Beam 串流管線會從 Kafka 跨 Intuit 的大型產品組合使用、匯總和處理原始點擊串流事件,例如網站瀏覽次數。點擊串流管線會使用地理位置以及其他新功能來豐富資料、會話化並將其標準化以寫入 Kafka 並供下游應用程式使用,每秒處理超過 60,000 個交易。Intuit 資料基礎架構團隊意識到 Apache Beam 複合轉換的價值,例如視窗化計時器狀態處理,以便精細控制資料新鮮度。Apache Beam 串流處理讓 Intuit 可以每 1 分鐘而不是每 4 小時使用新功能豐富點擊串流資料,將即時資料的可用性提高 240 倍,並將與記憶體和運算資源相關的成本降低 5 倍。

Intuit 串流處理平台的管線拓撲 Intuit 串流處理平台的管線拓撲

從 Intuit 的業務角度來看,另一個最前線的 Apache Beam 使用案例是功能儲存擷取平台,該平台可實現新的 AI 和 ML 驅動的客戶體驗。多個 Apache Beam 管線會從 Kafka 擷取平台上其他 Apache Beam 管線產生的即時功能,並將其寫入 Intuit 功能儲存以進行 ML 模型訓練和推論。產生即時功能的管線也可以使用平台提供的功能來「回填」功能,當需要重新功能化歷史資料時,即使功能是有狀態的。相同的串流處理程式碼會先從資料湖讀取 Intuit 的歷史資料、重新處理資料以引導管線的狀態,然後切換到使用引導狀態的串流內容。所有這些都以一種方式完成,即抽象化機器學習工程師或資料科學家擁有管線的背景填入流程的複雜性。

結果

自 Intuit 串流處理平台推出以來,以 Apache Beam 驅動的串流管線數量每年成長 2 倍,截至 22 年 7 月,已達到超過 160 個在 6 個不同 Kubernetes 叢集中的 710 個節點上執行的作用中生產管線。Apache Beam 管線處理約 173 億個事件和 82 TB 的資料,在旺季每秒處理 800,000 個交易。

Apache Beam 及其執行引擎的抽象讓 Intuit 可以無縫地切換其主要執行器,而無需將程式碼重寫為新的執行環境執行器。它也透過為 Intuit 串流處理平台提供彈性,隨著新的執行期不斷發展而提供未來保障,進而提供信心。Apache Beam 協助降低進入門檻、使 Intuit 開發團隊的串流處理普及化,並確保沒有 Apache Flink 或其他串流資料處理工具經驗的工程師可以快速入門。Apache Beam 促進了從批次作業到串流應用程式的遷移,為 Intuit 客戶啟用了新的即時和 ML 驅動體驗。

透過 Apache Beam,Intuit 加速了生產級串流數據管道的開發和發布速度,從 3 個月縮短到僅 1 個月,提升了 3 倍。預生產管道的設計時間縮短至僅 10 天。從批次作業遷移到 Apache Beam 串流管道,實現了 5 倍的記憶體和運算成本優化。Intuit 繼續為新的使用案例開發 Apache Beam 串流管道,目前有 150 多個管道處於預生產階段,並即將投入生產。

了解更多



這項資訊對您有幫助嗎?