Serverless Meetup Japan Virtual Vol.3 で AWS Glue Table と Amazon Athena を使った軽量なサーバーレスETLの話をしました #serverlessjp

AWS Glue Table っていろいろなところで使われているみたいです。
2020.07.30

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

2020年7月29日(水)、オンラインイベント Serverless Meetup Japan Virtual #3 が開催されました。

こちら Meetup ということで参加する際に Meetup枠が用意されており、セッションへの質問やガヤで盛り上がれるのが特徴です。そんなイベントで、AWS にて AWS Glue や Amazon Athena をつかった軽量なETLについて話してきました。

登壇資料

発表のポイント

AWSでETLといえばGlueだけど…

AWS Glue って、名前は結構聞くし、AWSコンソールから覗いたこともあるけれど、イマイチ一言で表すのが難しいな…という思い出があり、まず AWS Glue と Amazon Athena の関係 に焦点を当て、実際のところどういうサービスなのかを明らかにしました。

images/about_glue.png

ETLユースケース:イベントサイトのバックエンド構築

ETLを使うユースケースとして、勉強会などのイベント管理サービスのバックエンドを考えます。2つの別のサービス、(1)セッション公募サービス(Google Formなど)と (2)チケット発行サービスからそれぞれ出力されたCSVデータをメールアドレスでJOINする状況を考えます。

event_manage_requirements.png

今回は、 (1)と(2)2つのCSVファイルを合成(JOIN)し、ひとつの合成済みS3オブジェクトを生成、APIリクエスト時はそのS3オブジェクトに S3 Select をかける という方針にします。

design.png

ということで、冒頭で説明した Glue Job と Glue Workflow を使ってETLを組み上げる!…といきたいところなんですが、 Glue Job と Glue Workflow は今回は使いません。代わりに、 Amazon Athena でクエリ + Lambda Function で実行、さらに一連の処理を AWS Step Functions で組み立てることとします。

serverless_etl.png

イベント管理サービスの規模だと、ひとつのイベントに登録するユーザーの数(つまりCSVファイルの行数)はたかだか数千、いって数万かと思います。このくらいの規模だと、分析用途を想定した Glue Job では課金額と起動時間がネックになってしまいます。そこで、Glue Table + Amazon Athena + Lambda Function でのETLを検討したというわけです。

serverless_etl_lightweight.png

CDKでAWSリソース作成

利用するAWS構成パターンと大まかなロジックが決まったら、具体的にどうやって AWS リソースを作っていくか議論ができます。本当はこの AWS CDK についてたくさん話したいところはあるのですが、それはクラスメソッドのイベント Developers.IO Connect での発表内容にまかせます。

今回、Serverless Meetup では、リソースを組み立てるイメージをもってもらうため、主に Glue Table, S3 Bucket, Lambda Functions の AWS CDK サンプルを載せました。

cdk_s3_glue_table.png

セッションのまとめ

AWS はいろいろなサービスがありますが、ユースケースと要件を整理すれば、「なんとなくこういうサービスがあてはまりそう」というイメージが湧いてきます。今回はファイルの変換処理ということで、AWS Glue について改めて調査、実体を明らかにしました。このように実体を調べておくと、AWS は本当にいろいろなケースを考慮して組み合わせられるよう設計されています。典型的な Glue Table + Glue Job + Glow Workflow という組み合わせも捨てがたいですが、軽量なETLでは Lambda Function も選択肢としてアリです。サービスの実体を知ることで、どういう組み合わせが使えるかということもわかるので、要件にマッチしたアーキテクチャを組める確率があがります。

社内やMeetup…アーキテクチャに困ったり、組み合わせで悩んだらぜひ一緒に議論しましょう!

Serverless Meetup Japan Virtual #3 その他関連資料

クラウドエース五十嵐さんによる GCP の Serverless Network Endpoint Groups (NEG)

Toggetter

セッション動画アーカイブ

@michimani210 さんによる参加レポート

レポートありがとうございます。

AWS Glue の参考にさせていただいた資料

Serverless Meetup Japan Virtual #4 募集中です!

視聴枠はもちろん、いろいろ質問したりできる Meetup枠もどしどしご参加ください。