
「クライアントにはよく、Apache Beamはデータ処理の“Docker”だと説明しています。高い移植性があり、どこでもシームレスに実行され、バッチ処理とストリーミング処理を統合し、多くのすぐに使えるテンプレートを提供します。Beamを採用することで、バッチからストリーミングへの移行が加速し、コンテキストを問わずパイプラインを簡単に再利用でき、新しいユースケースを迅速に実現できます。Apache Beamのメリットと優れたパフォーマンスは、多くの企業にとって画期的なものです!」
OCTOテクノロジー顧客向けの高性能かつ効率的なトランザクションデータ処理
背景
OCTOテクノロジーは、アクセンチュアの一部であり、新技術とデジタルトランスフォーメーションを専門とする、テクノロジーコンサルティングとソフトウェアエンジニアリングの最前線に立っています。1998年以来、OCTOはスタートアップから多国籍企業まで、幅広いクライアントのためにビジネス変革を推進するスケーラブルなデジタルソリューションの開発に専念してきました。OCTOは、深い技術専門知識と成功したイノベーションの強い文化を活用して、クライアントが新興技術を探求、テスト、採用したり、大規模に成熟したデジタルソリューションを実装するのを支援しています。
強力なApache Beam統一ポータブルモデルにより、OCTOは著名なフランスの新聞社やフランス最大の食料品小売業者など、複数のクライアントのデータエコシステムを強化、変革、スケールする可能性を解き放ちました。
このスポットライトでは、OCTOのデータアーキテクトであるゴッドフロイ・クレールと、データエンジニアであるフロリアン・バスティンとレオ・バボノードが、主要なフランスの食料品小売業者のデータ処理に対するApache Beamの驚くべき影響について明らかにします。この実装により、バッチからストリーミングへの移行が迅速化され、トランザクションデータ処理が4倍に高速化され、インフラストラクチャのコスト効率が5倍に向上しました。
高性能トランザクションデータ処理
OCTOのクライアントである、数カ国に数万店舗を展開する大手食料品・コンビニエンスストア小売業者は、内部ウェブアプリを利用して、店舗マネージャーが情報に基づいた購買決定と効果的な店舗管理を行うことを支援しています。このウェブアプリは、さまざまな内部データストア、プラットフォーム、システムから取得された重要な製品詳細、在庫数量、価格、プロモーションなどにアクセスできます。
2022年以前、クライアントはCloud StorageファイルとPub/Subメッセージからデータを統合および処理し、出力をBigQueryに書き込むバッチパイプラインをオーケストレーションするオーケストレーションエンジンを使用していました。ただし、ほとんどのソースデータが夜間にアップロードされるため、バッチ処理ではSLAを満たし、開店前に最新の情報を店舗マネージャーに提供することが困難でした。さらに、データのアップロードが不正確または欠落していた場合、大量のトランザクションデータとログを含む面倒なデータベース状態の復元が必要でした。クライアントの内部チームは、大規模なSQLクエリを維持したり、データベースの状態を手動で更新したりすることに多大な時間を費やしており、高いメンテナンスコストにつながっていました。
これらの問題に対処するために、クライアントはデータエコシステムを変革し、コアユースケースをバッチからストリーミングに移行するためにOCTOの専門知識を求めました。目標には、より高速なデータ処理、ウェブアプリでの最新のデータの確保、パイプラインとデータベースのメンテナンスの簡素化、スケーラビリティと復元力の確保、およびデータ量の急増の効率的な処理が含まれていました。
クライアントは、Cloud Storageからのさまざまなフォーマットの膨大な数のファイルを非常に迅速に統合および処理し、毎日ウェブアプリに新製品、プロモーションなどの最新情報を表示する必要がありました。そのため、Apache Beamは最適なツールでした。
Apache Beamとその統一モデルは最適なソリューションとして登場し、クライアントのコアトランザクションデータ処理のニアリアルタイムストリーミングと、スタンドアロンユースケースのバッチ処理の両方を可能にしました。Dataflowランナーによる自動スケーリングの追加のメリットも提供されました。Apache BeamのPython SDKとすぐに使えるI/Oコネクタにより、OCTOは既存および新しいバッチとストリーミングパイプライン間でPythonコンポーネントを再利用し、Pub/SubとCloud Storageとのネイティブに最適化された接続を活用して、移行を迅速化することができました。
クライアントのウェブアプリを支えるストリーミングApache Beamパイプラインは現在、Pub/SubメッセージとCloud Storageファイル(数行から170万行まで)から製品と在庫データを処理しています。これらのデータは、さまざまな時間に、予測できない順序で、さまざまなフォーマット(CSV、JSON、zipファイルなど)でCloud Storageに到着します。Apache Beamのタイムリーな処理機能により、ストリーミングパイプラインはこれらのデータを効率的に処理できます。そのタイマーは、必要なすべてのイベントとファイルが到着するまで待ってから正しい順序で処理することにより、集計を制御する方法を提供します。GroupByKeyとGroupIntoBatches変換により、キーごとに効率的なグループ化と、入力のバッチサイズを目的のサイズに調整することが可能です。毎日、Apache Beamパイプラインは1億行以上のデータを統合、重複排除、エンリッチメントを行い、FirestoreとAlgoliaに出力します。3時間以内に100ギガバイト以上のトランザクションデータと1テラバイトを超える外部状態を処理します。
ウェブアプリは、開店前に早朝に新しいデータが必要です。以前は、クライアントのすべてのデータを時間内に処理することは不可能でした。Apache Beamのおかげで、今ではわずか3時間で処理できるため、入力ファイルが夜遅くに到着した場合でも、データの可用性を確保できます。
クライアントの特定のユースケースは、独自の課題をもたらしました。エンリッチメントデータはメモリに保持するには大きすぎ、ファイルの順序と到着時刻が予測できないため、タイマーと状態APIは実行不可能でした。Apache Beamのネイティブなステートフル処理を活用できないため、OCTOはDoFnsの状態をトランザクション型のCloud SQL Postgresデータベースに外部化するという解決策を見つけました。新しいイベントとファイルの処理時に、Apache Beamパイプラインはストリーミングクエリを使用して、Cloud SQLデータベースの状態にある行を選択、挿入、更新、削除します。Apache Beamは、過去、現在、未来の状態を表すファイル、Pub/Subイベント、ログを処理する際の複雑な状態の統合に優れています。受信データが間違っていて、シンクデータストアを元に戻す必要がある場合、Apache Beamは特定の時間枠内で発生したデータ移動に関する膨大な量のログを処理し、状態に統合して、手動による作業を排除します。
ウェブアプリは、開店前に早朝に新しいデータが必要です。以前は、クライアントのすべてのデータを時間内に処理することは不可能でした。Apache Beamのおかげで、今ではわずか3時間で処理できるため、入力ファイルが夜遅くに到着した場合でも、データの可用性を確保できます。
Apache Beamを活用することで、クライアントはデータ処理において画期的な変革を達成し、最新のデータと履歴データを内部ウェブアプリで利用できるようにし、全体的な運用効率を高め、処理レイテンシを改善することでビジネス要件を満たしています。
カスタムI/OとSQL接続のきめ細かい制御
クライアントの特定のユースケースでは、PCollection内の値に基づいてCloud SQLデータベースでCRUD操作が必要でしたが、組み込みのJBDC I/OコネクタはCloud SQLデータベースからの読み取りと書き込みをサポートしていましたが、このようなSQL操作には対応していませんでした。しかし、Apache BeamのカスタムI/Oフレームワークは、複雑なユースケースに合わせて調整された新しいコネクタを作成するための扉を開き、すぐに使えるI/Oと同じ接続を提供します。この利点を活用し、ParDoとGroupByKey変換を活用することで、OCTOは新しいApache Beam I/Oを正常に開発しました。このカスタムI/Oは、Cloud SQL Python Connectorを使用してCloud SQLデータベースとシームレスに連携し、DoFn.Setupメソッドで後者を接続オブジェクトとしてインスタンス化します。
さらに、Apache BeamはOCTOに並列処理のきめ細かい制御を提供し、ワーカープロセスの効率を最大化できるようにしました。Dataflowランナーの強力な並列処理と自動スケーリング機能により、OCTOはCloud SQLによって課せられた同時接続数に関する制約に対処する必要がありました。この課題を克服するために、Apache Beam DoFn.Setupメソッドが使用され、メソッド内で最大同時操作数を指定することにより、最大同時操作数を定義する手段が提供されました。OCTOはまた、beam.utils.Sharedモジュールを活用してCloud SQLデータベースの接続プールを作成し、ワーカーレベルですべてのプロセスで効果的に共有しました。
OCTOのデータエンジニアは、Beam Summit 2023で、Apache Beamによって実現されたこれらの革新的な開発を発表しました。
結果
Apache Beamにより、OCTOはフランスで最も有名な食料品小売業者の1社のデータ処理に革命を起こし、インフラストラクチャコストを5倍最適化し、データ処理パフォーマンスを4倍向上させました。Apache Beamの統一モデルとPython SDKは、コンポーネント、パッケージ、モジュールをパイプライン間で再利用できる機能を提供することで、バッチからストリーミング処理への移行を加速させる上で重要な役割を果たしました。
Apache Beamの強力な変換と堅牢なストリーミング機能により、クライアントのストリーミングパイプラインは、毎日1億行以上のデータを効率的に処理し、3時間以内に1テラバイトを超える外部状態を持つトランザクションデータを統合することが可能になりました。これは、以前は達成できなかった偉業です。Apache Beamの柔軟性と拡張性により、OCTOはユースケース固有の技術的な制約に対処し、クライアントの特定のビジネス目標に合致するパワーとコントロールの完璧なバランスを実現することができました。
クライアントにはよく、Apache Beamはデータ処理の「Docker」だと説明しています。高い移植性を持ち、あらゆる環境でシームレスに動作し、バッチ処理とストリーミング処理を統合し、多くのすぐに使えるテンプレートを提供します。Beamを採用することで、バッチ処理からストリーミング処理への移行を加速し、コンテキストを跨いでのパイプラインの再利用を容易にし、新しいユースケースの迅速な実現を可能にします。Apache Beamのメリットと優れたパフォーマンスは、多くの人にとって画期的なものです!
詳細情報
この情報は役に立ちましたか?