コンテンツに移動
データ分析

Gojek が提供するオープンソースのクラウドデータ変換ツール Optimus のご紹介

2022年10月19日
Google Cloud Japan Team

※この投稿は米国時間 2022 年 9 月 23 日に、Google Cloud blog に投稿されたものの抄訳です。

編集者注: 今年の初め、オンデマンド サービス プラットフォームを提供する Gojek から、BigQuery のようなデータ ウェアハウス向けに開発したオープンソースのデータ取り込みツールについてのお話を伺いました。本日は、Gojek のエンジニアリング担当バイス プレジデントである Ravi Suhag 氏が、構築中のオープンソース データ変換ツールについて再び説明してくださいます。


先日の投稿では、Cloud StorageBigQuery といったクラウド データ ウェアハウスにデータを取り込むために Gojek がオープンソースで提供しているソリューション、Firehose をご紹介しました。本日は、データ変換とデータ処理フロー内の、別のプロジェクトについて取り上げます。

インドネシア最大で、地域に特化したオンデマンド サービス プラットフォームを提供する Gojek は、交通、物流、フード デリバリー、決済処理など幅広いデータニーズを抱えています。また、数十億のアプリケーションイベントにおいて、数百のマイクロサービスを実行しています。Firehose は、さまざまなユースケースでよりスマートなデータ取り込みに対するニーズを解決しています。また、当社のデータ変換ツールである Optimus は、必要な場所に正確にアクセスできるようにデータを準備します。

シンプルさの実現に向けた課題

Gojek では、BigQuery 内の多数のデータレイヤーでデータ ウェアハウジングを実行し、当社が提供するアプリやサービス全体で使用するための準備段階にあるデータを、標準化およびモデル化しています。

Gojek のデータ ウェアハウスには、数千もの BigQuery テーブルが格納されています。100 人以上のアナリティクス エンジニアが毎日 4,000 件近くのジョブを実行し、これらのテーブルでデータを変換しています。こうした変換ジョブでは、毎日 1 ペタバイトを超えるデータを処理することになります。

BigQuery テーブル内のデータ変換以外にも、チームはクリーニングされたデータを他のストレージ ロケーションに定期的にエクスポートし、さまざまなアプリやサービスにおける機能を利用できるようにしています。

このプロセスでは、以下のような課題に取り組んでいます。

  • 複雑なワークフロー: 大量の BigQuery テーブルと数百人のアナリティクス エンジニアが同時に変換ジョブを作成するため、非常に複雑なデータベース可用性グループ(DAG)をスケジュールして確実に処理することに大きく依存します。

  • さまざまなプログラミング言語のサポート: データ変換ツールは、入力とジョブ構成の標準化だけではなく、すべてのデータユーザーのニーズに対して快適なサポートを提供する必要があります。たとえば、ユーザーが使用するプログラミング言語を 1 つに限定することはできません。

  • 使いにくい変換ツール: 変換ツールの中には、データ ウェアハウス エンジニアでない人にとって、使いにくいものもあります。使いやすいツールを導入することで、ボトルネックを解消し、すべてのデータユーザーが独自の分析テーブルを作成できるようになります。

  • データ ガバナンス ルールに関する変更の統合: 変換ツールへのアクセスを分散させるには、データ ガバナンス ルールを厳格に遵守する必要があります。変換ツールを使用する際は、大量のテーブルに、個人情報(PII)と PII ではないデータの分類が正しく挿入されていることを確認する必要があります。

  • 時間のかかる手動での機能更新: 新しいアプリケーションやストレージ ロケーションで使用するためのデータの抽出と変換に関する新しい要件は、Gojek の運用ルーティンの一部となっています。最小限の開発時間で、既存のユースケースを中断することなく更新、拡張できるデータ変換ツールを設計する必要があります。

BigQuery などのデータ ウェアハウスで信頼性の高いデータ変換を実現

Gojek は Optimus により、データ変換、データ モデリング、データ パイプライン、データ品質管理に適した、使いやすく信頼性の高いパフォーマンスを実現するワークフロー オーケストレーターを作成しました。データ ウェアハウスとして BigQuery を使用している場合、Optimus を使用することで、アナリストやエンジニアはデータ変換をより簡単に行えるようになります。これはシンプルな SQL クエリと YAML 構成によって実現され、依存関係の管理やデータ変換ジョブの大規模な実行をスケジューリングするといった多くの主な要求は、Optimus によって処理されます。
https://storage.googleapis.com/gweb-cloudblog-publish/images/Optimus.max-2000x2000.jpg

主な特長は以下のとおりです。

  • コマンドライン インターフェース(CLI): Optimus コマンドライン ツールを使用することで、サービスやジョブ仕様に効果的にアクセスできます。ユーザーは、ジョブの作成、実行、再実行や、スケジューラ用のコンパイル済み仕様のダンプ、データストア用のリソース仕様の作成、既存ジョブに対するフックの追加などを行うことができます。

  • スケジューリングの最適化: Optimus では、YAML ベースの構成により、SQL 変換の簡単なスケジューリング方法を提供しています。デフォルトでは Airflow を推奨していますが、Docker コンテナを実行できる他のスケジューラをサポートするのに十分な拡張性も備えています。

  • 依存関係の解決とドライラン: Optimus によって、データ変換クエリは解析され、依存関係グラフが自動的に作成されます。デプロイメント クエリでは、基本的な健全性チェックに合格していることを確認するためにドライランが実施されます。

  • 優れたテンプレート: ユーザーは、変数、ループ、IF ステートメント、マクロなど、コンパイル時のテンプレート オプションを使用して、複雑な変換ロジックを記述できます。

  • テナント間の依存関係: 2 つ以上のテナントが登録されている場合、Optimus を使用することで、テナント間の依存関係は自動的に解決されます。

  • 組み込みフック: BigQuery テーブルを Kafka にシンクする必要がある場合、Optimus では、変換機能を拡張する変換後のロジックをフックすることでこれを実現します。

  • プラグインによる拡張性: Optimus では、ビルディング ブロックに焦点を当てることで、変換の実行方法に関するガバナンスをプラグイン システムに委ねています。各プラグインには、アダプタと Docker イメージが備えられています。また、Optimus では、カスタム プラグインの開発が簡単に行えるよう Python 変換をサポートしています。

Optimus の主なメリット

Google Cloud と同様に、Gojek も柔軟性およびアジリティを第一に考えています。そのため、Optimus のようなオープンソース ソフトウェアを利用することで、ユーザーが特定のニーズに合わせてマルチ テナンシー ソリューションを最大限に活用できることは、大変喜ばしいことです。

Optimus は、多様な構成オプションと堅牢な CLI を活用することで、SQL を正しく準備し、迅速かつ集中的なデータ変換を実現しています。Optimus を使用することで、すべてのスケジューリング、依存関係、テーブルの作成が処理されます。Optimus のプラグインをご活用いただくことで、新たなニーズに基づいたカスタム機能を迅速に構築することができるため、ユーザーはより多くの可能性を追求できます。また、構成可能なアラート システムでは、ジョブの失敗に対して即座にフラグを設定することで、エラーを最小限に抑えることができます。障害点から SLA 要件に基づく警告まで、特定の要件に基づくアラートがメールや Slack に送信されます。

コミュニティに参加するには

Gojek は、FirehoseOptimus を Google Cloud と連携させることで、データユーザーやエンジニアが複雑なデータ環境において迅速に成果を上げることを可能にする、ツール構築への道を切り開くことに貢献しています。

OptimusGitHub で開発、管理されていて、Request for Comments(RFC)を使用して継続的な開発のためのアイデアを交換しています。チームは、Slack コミュニティの一員として、バグレポート、機能リクエスト、ドキュメント支援、通常のディスカッションを常に積極的に受け入れています。

- Gojek、エンジニアリング担当バイス プレジデント Ravi Suhag 氏

投稿先