AWS Glueが必要とされる背景
ビッグデータが注目される以前は、社内のデータ分析といっても、分析対象のほとんどはCSVやRDBに代表される構造化データでした。そうしたデータに対して、自分たちが分析できるようにETL処理(Extract=抽出、Transform=変換、Load=ロードの頭文字)を実施していました。この時代は、データ対象の数も種類も限定的で、それぞれの事業者で個別にETLプロセスを実施することで、処理可能な範疇に収まるケースが大半でした。
現在では、モバイル端末やIoTデバイスなどの増加、サービスやデータソースの多様化もあり、データ量そのものだけでなく種類も膨大な数になり、かつ非常に速いスピードで生成されるようになっています。従来のデータ分析の方法ではストレージやデータベースの容量の制約のため、データを取捨選択し分析に必要なデータに絞って加工整形したデータを保存しなければなりません。
そうなると、今この時に必要なデータは保存できても、将来に必要となるかもしれないデータを諦めることになり、長期的にみると機会損失に至る可能性が出てきます。例えば、過去の購買履歴を詳細に分析することで、将来の売れ筋商品を予測し、機会損失を防ぐことができます。
また、大量生成されたデータを分析してビジネス価値に変換する動きが活発化しているだけでなく、ビジネス自体の変化も早くなっています。このため、大量のデータをできるだけ生の状態で保存し、必要な時に必要な分だけ抽出して分析できる場所として、「データレイク」という概念が登場しました。データレイクとは、構造化・非構造化を問わず、あらゆる種類のデータを原形のまま保存できる大規模なデータ貯蔵庫のことです。
ただし、生のデータは全てがそのまま分析対象にできるとは限りません。例えばログデータは1行の単なる文字列で、それをデータベース上のデータと組み合わせる加工が必要です。このように、生データを分析対象とするには、前処理(ETL処理)が発生するわけです。AWS Glueは、データレイク環境で生データを前処理し、AWS上で分析可能な状態にするサーバーレスETLサービスとなります。
AWS Glueの特長と挙動の流れ
AWS Glueの特長や挙動について簡単に説明しましょう。AWS Glueは、組織内のさまざまなデータを一元管理する、フルマネージドのETLサービスになります。最大のポイントは、サーバなどのインフラをユーザーが管理する必要がない、サーバーレスであることです。サーバーレスとは、サーバーを明示的に意識せずにアプリケーションを実行できるため、ユーザー側がインフラ管理をする必要は一切ありません。オンプレミス型(自社で機器を設置・運用する形態)のETLツールと比較した場合、コストを抑えて利用できるメリットもあります。
さまざまなデータソースのメタデータ(データに関する情報を記述したデータ)を管理するデータカタログ機能も特長の1つです。また、他のAWSサービスと容易に連携できるところも、大量のデータを扱うシステムの開発においては大きなメリットです。AWS の機械学習と分析機能をまとめたAmazon SageMakerのNotebookでの開発や、きめ細やかなアクセス制御、また、暗号化にも対応しています。実際のAWS Glueの動作の流れは以下の通りです。
- データソースを自動的に探索するクローラーが、データソースのメタデータ(スキーマ定義やテーブル定義、データ構造など)を収集する
- クローラーが取得したメタデータをデータカタログ(メタデータの保存場所)に登録および更新を行い、データカタログがメタデータを管理する
- ジョブ(ETLの一連の処理)の実行タイミングをトリガーで定義する
- サーバーレスエンジンがトリガーの設定に応じて起動し、データカタログのメタデータを元にデータソースから実データを抽出する
- サーバーレスエンジンがジョブを実行し、ターゲットに出力する
すでに触れた部分もありますが、AWS Glueの機能は、データソースのメタデータを管理するデータカタログ、ジョブの作成・実行を行うサーバーレスエンジン、トリガー機能を含むAWS Glueの各種設定や自動化を行うオーケストレーションの3つから構成されています。
AWS Glueのサーバーレスエンジンには、Apache Spark(大規模データ処理フレームワーク)とPythonの実行環境が含まれており、複雑なデータ変換処理も効率的に実行できます。また、AWS Glue Studioにより、コードを書かずにビジュアル開発環境でETLジョブを作成できるようになり、より幅広いユーザーにとって使いやすくなりました。
AWS Glueで何が実現できるのか
具体的にAWS Glueの機能や実現可能なユースケースを見ていきましょう。
様々なデータソースを指定:
Amazon DynamoDB、Amazon S3、Amazon Redshiftなどに加えて、JDBC接続可能であればオンプレミスのデータベースも指定可能です。100を超えるデータソースに対応しており、ほぼすべての企業データを取り込めます。
Amazon Redshift Spectrum/Athena/EMRとの連携:
例えば、AthenaからS3のデータに対してSQLを実行する場合、AWS Glueのデータカタログのメタデータを基にクエリを実行できます。また、データカタログにメタデータを保存することで、仮にデータソースとして利用していたEMR(Amazon Elastic MapReduce)を削除しても、Glueにメタデータが永続的に保存されるため、あとからでもAthenaなどでメタデータを参照可能です。
各種のトリガー設定:
ジョブを開始するための定義を柔軟に設定できます。日時や曜日、cronなどのスケジュール指定、先行するジョブの結果に応じたジョブイベントのほか、即時実行や手動で指定することも可能です。実行するPython Shellにタイムアウトを設定できるため、SQLを長時間実行し続けることやタイムアウト値に基づき途中で中断することができます。
ジョブのブックマーク機能:
定常的なETL処理が必要な場合、ブックマークしておくことで処理済みデータを再度処理しないようにすることや、処理結果のデータをターゲットに重複出力しないよう回避することが可能です。
動的なストリームデータの処理:
ストリーミングETLにより、静的なバッチ処理だけでなく、IoTセンサーなどのリアルタイムで流れるデータストリームに対してもETL処理を適用できます。
処理後のデータ品質の管理:
AWS Glue Data Qualityにより、ETL処理の前後でデータの品質を自動的にチェックし、不正確なデータや欠損値を検出・修正ができます。
ノーコードによるデータ変換:
データアナリストやビジネスユーザーでも簡単にデータクレンジングや変換ができる、ノーコードのデータ準備ツール「AWS Glue Data Brew」があります。予め250以上の変換機能が用意され、データ準備のために必要な時間を大幅に削減できます。
弾力的な料金体系:
AWS Glueの料金は、使用したリソースに対してのみ発生します。具体的には、以下の要素に基づいて課金されます。
- ETLジョブとインタラクティブセッションの実行時間
- クローラーの実行時間
- データカタログストレージの利用の可否
- 開発エンドポイントの利用の可否
なお最初の100万個のオブジェクトの保存と最初の100万回のアクセスは無料なので、トライアル利用ならその範囲で収まるでしょう。
まとめ
AWS Glueは、サーバーレスのETLサービスです。クローラー、およびデータカタログでメタデータを管理するのが特長となりますAmazon EMR/Athena/Redshift Spectrum、SageMakerなど他のサービスとセキュアに連携できる強みもあります。静的なデータだけでなく、動的なストリーミングデータにも対応し、コーディングスキルがなくても利用できるデータ変換ツールも用意されるなど、幅広い用途とユーザーにも対応した、強力なサービスとなっています。企業が大量かつ多様なデータを効率的に管理・分析するために最適化されており、膨大なデータが矢継ぎ早に積み上がっていくビッグデータ時代にあって、必要不可欠なサービスといえます。