fu3ak1's tech days

何事もシンプルに。主にAWS関連の記事を書いています

re:Invent2020セッションレポート:(EMB019) Deep dive on AWS Glue Elastic Views

概要

2020 re:Inventで新たに登場した AWS Glue Elastic Viewsの紹介セッションです。 AWS Glueは既存のサービスで、データ分析用のデータETL(抽出、変換、読み込み )処理や対象データスキーマ管理に使用されます。

今回はGlueの新機能としてElastic Viewsが出ました

Why AWS Glue Elastic Views?

  • 従来の仕組みはアプリケーション+データベースの2層構成
  • オンラインショップを例とすると、オーダー情報や個人情報を元に、不正検知やレコメンデーション等色々な処理が必要になる。
  • 1つのDBではこれら色々な処理をするのは難しい

f:id:fu3ak1:20201204161821p:plain

  • AWSでは目的ベースでDBサービスが用意されている
  • オンラインショップの場合もやりたい処理内容に合わせてDBを選択する

f:id:fu3ak1:20201204161927p:plain f:id:fu3ak1:20201204162005p:plain

  • ショッピングカタログを例

    • 100万人ユーザー、100万RPS
  • おそらくこういった例ではDynamoDBを使用する

f:id:fu3ak1:20201204162217p:plain

  • もしこのアプリケーション(+DB)が稼働中で、テキスト検索がしたいという要件が出たらどうするか?
  • テキスト検索に特化したElasticSearchを用意して、DynamoDBから読み込む
  • コピー処理には複雑なコードが必要で、エラーのリトライ管理、パイプラインの管理もしなければいけない→大変

f:id:fu3ak1:20201204162328p:plain

  • そこでGlue Elastic Viewsの登場!

f:id:fu3ak1:20201204162524p:plain

What are Glue Elastic Views

  • Elastic Viewsとは
    • 複数のデータソースを組み合わせてレプリケートし、マテリアライズドビューをコードなしで作成する
    • Transformもしてくれる
    • 簡単に使える、コード作成や管理が不要
    • PartiQLの仕組みを使用して、ビューの定義を利用者が指定して作成する。
    • トランザクション整合性、オーダー(順番)がCorrect(保証する)
    • データ変換も正しく行える、用意されたデータタイプも多い
    • "ほぼ"リアルタイム(Near-real)
    • 暗号化されており、IAMを使用するのでセキュリティ面も安全
    • 従量課金
    • サーバーレス、可用性やサーバーの管理不要

(文字スライド多めだったのでキャプチャ割愛)

Ease of use

  • 簡単に使えます
    • ここではDynamoDB→ElasticSearchの例

1.作業の流れ

  • テーブル、View、Materialize view

f:id:fu3ak1:20201204163523p:plain

2.テーブルの作成(DynamoDB)

f:id:fu3ak1:20201204163643p:plain

3.テーブルのActivate

  • 最初はinactivateなので手動でActivateする
  • Activateを押すと、テーブル情報が見れる

f:id:fu3ak1:20201204163757p:plain

4.Viewの作成

  • SQLクエリを書いてViewを作成
  • Preview機能で事前に確認もできる

f:id:fu3ak1:20201204163842p:plain f:id:fu3ak1:20201204163915p:plain

5.マテリアライズドViewの作成

  • ターゲットのElasticSearchと名前を指定

f:id:fu3ak1:20201204163953p:plain

6.データのMapping

  • 自動的に推奨のタイプが表示される、手動変更も可能

f:id:fu3ak1:20201204164046p:plain

手順はここまで

Programmability and correctness (プログラムのしやすさと正しさ)

  • PartiQLの仕組みを使用して、さまざまなAWSデータサービスに接続ができる

f:id:fu3ak1:20201204164301p:plain

  • documentという形でデータ情報の定義ができる

f:id:fu3ak1:20201204164459p:plain

  • ここで最初の質問に戻り、どうやったらDynamoDBのデータをテキスト検索できるようになるか?
  • Elastic Views を使用

f:id:fu3ak1:20201204164654p:plain

  • Viewの作成例 *(細かなSQLの紹介がありつつ、)以下の要にCREATE VIEW文を使って変換が可能

f:id:fu3ak1:20201204164942p:plain

  • データの互換性、変換例(DynamoDB→Redshift)

f:id:fu3ak1:20201204165133p:plain

  • Mapping View
    • 値の変換も可能(色付のところ)

f:id:fu3ak1:20201204165414p:plain

  • DynamoDBのデータは柔軟性があるので、想定外のデータが入ることもある。(バイナリのような)
  • 例外データとしてS3などに別出しできる

f:id:fu3ak1:20201204165519p:plain

  • Violation Views
  • 例外データを抽出するためのView
  • この例では通常データはRedshift、例外をS3へ

f:id:fu3ak1:20201204165820p:plain

  • GUIで簡単にMapping、GUIはパワフル(見やすい)

f:id:fu3ak1:20201204170003p:plain

  • コードで書きたい場合はSQLを書き込むこともできる

f:id:fu3ak1:20201204170027p:plain

Re:cap

  • 2021年に向けてサポートするデータソースおよびターゲットの追加を多く予定している
  • フィードバックください!

感想

データのETL処理はこれまで、Glueで実現するならGlueジョブを用意して、パイプライン用意して、実行間隔などを決めてなど色々とやることがありました。 もちろんジョブコードの開発も必要。

ジョブ作成に関しては、GUIベースでよりわかりやすく開発ができるGlue Studioが今年?に発表されていました。 Glue Studioは、下記クラメソさんの記事がわかりやすいと思います。

dev.classmethod.jp

それに対しGlue Elastic Viewsでは、ジョブだけでなく処理実行の管理までマネージドになり、より利用者の開発範囲が小さくなった機能のように見えました。 全てのユースケースで使えるかはまだ微妙なところですが、マッチするのであれば積極的に使っていきたいですね。

まだプレビュー段階なのでわからないことは多いですが、一般公開されたらまた見ていきたいです。