「Apache Beamのランナー非依存性は、柔軟性を提供し、新しいランタイムが開発されるにつれて、当社のストリーム処理プラットフォームの将来性を保証します。Apache Beamは、Intuitにおけるストリーム処理の民主化と、多くのバッチジョブのストリーミングアプリケーションへの移行を可能にしました。」

ニック・ファン
Intuit ストリーム処理プラットフォーム エンジニアリングマネージャー

IntuitにおけるストリーミングとリアルタイムMLの強化

背景

Intuit® は、世界中の繁栄を促進するという使命のもと、TurboTaxQuickBooksMintCredit KarmaMailchimp など、さまざまな財務およびマーケティング自動化ソリューションを提供するグローバルテクノロジープラットフォームです。1億人以上の人々が、税務申告、中小企業会計、個人財務管理をIntuit製品に委託しています。

Intuitは、リアルタイムアプリケーションの市場投入までの時間を短縮するために、Apache Beamを活用した社内セルフサービスストリーム処理プラットフォームを開発しました。

Intuitデータインフラストラクチャチームのエンジニアリングマネージャーであるニック・ファンは、Intuitのセルフサービスストリーム処理プラットフォームの構築にApache Beamがどのように使用されたか、そして開発者がストリーミングパイプラインを作成、デプロイ、管理するためのシンプルで直感的な方法を提供したかについて、そのストーリーを共有しました。

セルフサービスストリーム処理

Intuitデータインフラストラクチャチームと製品チームは、財務管理製品ポートフォリオを強化するためのAIとデータ駆動型ソリューションを探している際に、セルフサービスデータ処理プラットフォームの ogromne potrzeby に気づきました。データエンジニアと開発者には、低レベルの運用とインフラストラクチャ管理の詳細を抽象化しながら、リアルタイムアプリケーションを開発するための「舗装された道」が必要でした。

2019年、Intuitのデータインフラストラクチャチームは、開発者がビジネスロジックに集中できるように、プラットフォームが代わりにすべての運用とインフラストラクチャ管理の詳細を処理するという使命を持って、ストリーム処理プラットフォームの設計を開始しました。

当社のプラットフォームの約束は、最初はデプロイメントについて心配する必要がないということです。コードアーティファクトを更新し、必要な変換を追加し、パイプラインをソースとシンクにポイントするだけで、残りは当社が処理します。ボタンをクリックすると、プラットフォームがジョブをデプロイします。

ニック・ファン
Intuit ストリーム処理プラットフォーム エンジニアリングマネージャー

Apache Beamは、さまざまなプログラミング言語実行エンジンから選択できる柔軟性があるため、Intuitのストリーム処理プラットフォームのコアデータ処理テクノロジーとして選択されました。Apache Beamの移植性と導入の容易さは、初期プラットフォームバージョンの立ち上げに必要な「ジャンプスタート」を提供しました。このバージョンでは、実行エンジンとしてApache Samzaを使用し、Apache Beamストリーミングパイプラインを使用してKafkaとの間で読み書きを行いました。

Apache Beamを選択した主な理由は、ランナー非依存性でした。私たちのプラットフォームは長期的な投資であり、将来何が起きても準備しておきたかったのです。

ニック・ファン
Intuit ストリーム処理プラットフォーム エンジニアリングマネージャー

2020年1月、Intuitのストリーム処理プラットフォームの最初のバージョンがリリースされました。すぐに、Apache Beamの実行エンジンの抽象化はその利点を証明し、Intuitはユーザーのペインポイントや本番ダウンタイムを引き起こすことなく、データ処理インフラストラクチャをApache SamzaからApache Flinkにシームレスに切り替えることができました。

Apache SamzaからApache Flinkに移行することを決定したとき、本番環境で実行されている数十のユースケースとパイプラインがありましたが、ユーザーはコードを変更する必要はありませんでした。そのケースでは、Apache Beamの利点が本当に発揮されました。

ニック・ファン
Intuit ストリーム処理プラットフォーム エンジニアリングマネージャー

Intuitストリーム処理プラットフォームチームは、Apache Beamの拡張性から恩恵を受けました。これにより、特定のKafkaインストールとの相互運用性を向上させるために、Apache BeamをカスタムSDKレイヤーで簡単にラップすることができました。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クエリを実行して、いくつかのシンクに書き込みたいのですが、2か月ではなく1日でそれを行う方法を教えてください。」

ニック・ファン
Intuit ストリーム処理プラットフォーム エンジニアリングマネージャー

リアルタイムデータの活用

Apache Beamを搭載した統合クリックストリーム処理は、Intuitのユースケースの中で最も影響力のあるものです。Apache Beamストリーミングパイプラインは、Intuitの製品の大規模なポートフォリオ全体で、KafkaからのWebサイト訪問などの生のクリックストリームイベントを消費、集約、処理します。クリックストリームパイプラインは、地理位置情報やその他の新しい機能でデータを強化し、セッション化と標準化を行ってKafkaに書き込み、ダウンストリームアプリケーションで使用できるようにし、1秒あたり60,000件以上のトランザクションを処理します。Intuitデータインフラストラクチャチームは、ウィンドウイングタイマーステートフル処理などのApache Beam複合変換の価値を理解しており、データの鮮度をきめ細かく制御できます。Apache Beamストリーム処理により、Intuitは4時間ごとではなく1分ごとにクリックストリームデータを新しい機能で強化し、リアルタイムデータの可用性を240倍向上させ、メモリとコンピューティングリソースに関連するコストを5倍削減できます。

Intuitストリーム処理プラットフォームのパイプライントポロジ Intuitストリーム処理プラットフォームのパイプライントポロジ

Intuitのビジネスの観点から見たもう1つの最前線のApache Beamユースケースは、新しいAIとMLを搭載したカスタマーエクスペリエンスを可能にする機能ストア取り込みプラットフォームです。複数のApache Beamパイプラインは、プラットフォーム上の他のApache BeamパイプラインによってKafkaから生成されたリアルタイム機能を取り込み、MLモデルのトレーニングと推論のためにIntuit機能ストアに書き込みます。リアルタイム機能を生成するパイプラインは、機能がステートフルであっても、履歴データを再フィーチャライゼーションする必要がある場合に機能を「バックフィル」するプラットフォームが提供する機能を使用することもできます。同じストリーム処理コードは、最初にデータレイクからIntuitの履歴データを読み取り、データを再処理してパイプラインの状態をブートストラップし、次にブートストラップされた状態を使用するストリーミングコンテキストに切り替えます。これはすべて、バックフィルプロセスの複雑さを、パイプラインを所有する機械学習エンジニアまたはデータサイエンティストから抽象化する方法で行われます。

結果

Intuitストリーム処理プラットフォームの立ち上げ以来、Apache Beamを搭載したストリーミングパイプラインの数は年間2倍に増加しており、2022年7月現在、6つの異なるKubernetesクラスターにまたがる710ノードで実行されている160を超えるアクティブな本番パイプラインに達しています。Apache Beamパイプラインは、ピーク時に約173億件のイベントと82 TBのデータを処理し、1秒間に800,000件のトランザクションを処理します。

Apache Beamとその実行エンジンの抽象化により、Intuitはコードを新しい実行環境ランナーに書き直すことなく、プライマリランナーをシームレスに切り替えることができました。また、新しい実行ランタイムが進化し続けるにつれて、Intuitストリーム処理プラットフォームの将来性を保証することで、自信を提供しました。Apache Beamは、参入障壁を低くし、Intuitの開発チーム全体でストリーム処理を民主化し、Apache Flinkまたは他のストリーミングデータ処理ツールの経験がないエンジニアの迅速なオンボーディングを保証するのに役立ちました。Apache Beamは、バッチジョブからストリーミングアプリケーションへの移行を促進し、Intuitのお客様に新しいリアルタイムおよびMLを搭載したエクスペリエンスを実現しました。

Intuitは、Apache Beamを使用して、本番グレードのストリーミングデータパイプラインの開発と立ち上げを3か月からわずか1か月に3倍加速しました。プレプロダクション用のパイプラインを設計する時間はわずか10日に短縮されました。バッチジョブからApache Beamストリーミングパイプラインへの移行により、メモリとコンピューティングコストが5倍最適化されました。Intuitは、新しいユースケース向けにApache Beamストリーミングパイプラインの開発を続けており、さらに150のパイプラインがプレプロダクション中で、まもなく本番環境に移行します。

詳細はこちら



この情報は役に立ちましたか?