ゲームと Zero-ETL

[AWS for Games Advent Calendar 2023](https://qiita.com/advent-calendar/2023/aws-for-games) の3日目の記事です。

# はじめに
先日開催された AWS re:Invent 2023 では Zero-ETL というキーワードに関連するアップデートが多数発表されていました。
* [AWS announces Amazon Aurora PostgreSQL zero-ETL integration with Amazon Redshift (Public Preview)](https://aws.amazon.com/about-aws/whats-new/2023/11/amazon-aurora-postgresql-zero-etl-integration-redshift-public-preview/?trk=36a1d924-452c-4899-a6e3-64215ce86c24&sc_channel=el)
* [AWS announces Amazon RDS for MySQL zero-ETL integration with Amazon Redshift (Public Preview)](https://aws.amazon.com/about-aws/whats-new/2023/11/amazon-rds-mysql-zero-etl-integration-amazon-redshift-public-preview/?trk=478716ea-b813-40c1-8c93-e2a060ec2430&sc_channel=el)
* [AWS announces Amazon DynamoDB zero-ETL integration with Amazon Redshift](https://aws.amazon.com/about-aws/whats-new/2023/11/amazon-dynamodb-zero-etl-integration-redshift/?trk=eae54ae6-2746-4c2e-94fe-674980de3d92&sc_channel=el)
* [AWS announces Amazon DynamoDB zero-ETL integration with Amazon OpenSearch Service](https://aws.amazon.com/about-aws/whats-new/2023/11/amazon-dynamodb-zero-etl-integration-amazon-opensearch-service/)

先月(2023年11月)には Amazon Aurora MySQL と Amazon Redshift の Zero-ETL 統合が一般提供開始となり、AWS re:Invent 2022 で初めて発表されてから1年間で Zero-ETL の拡充がかなり進んだと思います。

本記事では、ゲームのバックエンドシステムでよく使われているデータベースの Amazon Aurora MySQL と AWS が提供する DWH である Amazon Redshift の Zero-ETL 統合を中心に、ゲームにおける Zero-ETL の使いどころをまとめます。

# Zero-ETL とは
Zero-ETL は ETL パイプラインを構築することなく、あるデータソースから別のデータウェアハウス・データストアへデータを移動させることを可能にする機能です。

従来はデータベース上のデータを別のデータウェアハウスで分析するとなると、複雑な ETL パイプラインを構築し運用する必要がありました。

ETL パイプラインは構築が困難であるだけでなく、データの流量が多くなった場合にインフラストラクチャを拡大させることとなるため、結果としてコストが高くなったり、データソースのスキーマ変更や分析要件の変化に応じて ETL パイプラインをメンテナンスする必要があるなど、運用においても工数を要するものだったかと思います。

そこで Zero-ETL を利用することにより、直接 ETL パイプラインを構築・運用することなく、データソースと転送先を指定し設定するだけでデータの転送が可能となります。
データ転送は CDC(Change Data Capture) で実現しており、ニアリアルタイムで行われます。

![Zero-ETL.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19106/af7eee9e-0ce7-8127-f314-da1f56ac6112.png)


# ゲームにおけるZero-ETL の使いどころ
では、このような Zero-ETL の機能はゲームにおいて、どのように活用できるでしょうか。

わかりやすい使い方としては、バックエンドシステムのデータベース(Amazon Aurora)に保存されているデータを Amazon Redshift で分析することが挙げられます。
ゲーム運営においてデータ分析にまだ取り組んでいない、これから取り組みたいと考えられている方にとっては Zero-ETL を使い簡単に分析環境を構築できるというのは便利なところかと思います。

また、Zero-ETL ではニアリアルタイムでデータベースから Amazon Redshift にデータが転送されるため、ゲームのイベントを実施した後のユーザーのアイテム購入状況やクエストのクリア状況をすぐに集計して確認することができます。
ゲームの運営においては企画側が実施した施策を想定通りにユーザーに遊んでもらえているかが重要であり、想定外の事象が発生した場合には迅速にカバーすることが重要です。
よりスピーディな分析とゲーム運営への反映を実現するために Zero-ETL によるニアリアルタイムでのデータ連携が役立つかと思います。

![Zero-ETL UseCase1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19106/73a2f944-a4c2-293f-6469-47f30a83d44a.png)

さらに Zero-ETL では複数の AWS アカウント、VPC に存在する Amazon Aurora データベースから1つの Amazon Redshift の環境にまとめてデータ転送をすることも可能です。
これにより複数のゲームタイトルの運用状況を横断で分析したいというニーズにも応えることができます。

![Zero-ETL UseCase2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19106/8706e11a-ff7c-87b2-0ab8-4fb474dcef2d.png)

あるいは既に何かしらの分析ソリューションを使っており、データベースと分析ソリューションを繋ぐ独自の ETL パイプラインが存在していることもあるかと思います。
そのような場合でも Zero-ETL を活用できる余地はあります。
まず、独自の ETL パイプラインを構築・運用されている場合には Zero-ETL に置き換えることで、その ETL パイプラインの運用負荷を削減することが見込めます。
また、Amazon Redshift 以外の分析ソリューションをお使いの場合にも、独自の ETL パイプラインによって Amazon Aurora のデータを Amazon S3 にエクスポートし、その後 Amazon S3 に保存されているデータを分析したり、別の分析ソリューションにデータ連携をしているかと思います。
この Amazon Aurora と Amazon S3 のデータを連携する ETL パイプラインを Zero-ETL に置き換えることによって、やはり ETL パイプラインの運用負荷を削減できる他、Amazon S3 に保存する前に Amazon Redshift を経由するため、Amazon Redshift でデータの前処理を行って Amazon S3 に保存することも可能です。

![Zero-ETL UseCase3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19106/3a610502-4226-9233-3c13-4e8ac82805b9.png)

最後に、データ分析に直接関わらない用途ではありますが、データベースの運用負荷の軽減にも Zero-ETL を使えるかと思います。
ゲームの運営において、例えば売上の計上を行う場合などに本番環境のデータベースに重い集計処理を実行しなければならないこともあるかと思います。
本番環境のデータベースで集計用のリードレプリカを用意し、そのリードレプリカに対して重い集計処理を実行するといった運用が考えられますが、万が一ライターノードや別のユーザー負荷のあるリードレプリカに向けて集計処理を実行してしまった場合にはユーザー影響が発生します。
こういった事故が発生しないように仕組みや手順書で予防しているケースがほとんどだと思いますが、やはり本番環境のデータベースに対して集計処理を実行するということには一定のリスクがあると思います。
そこで本番環境と分離された集計処理の実行環境として Zero-ETL でデータ連携された Amazon Redshift を使うという方法が考えられます。
実際の使い方としては本番環境のデータベースに保存されているデータを分析することと変わらないですが、本番環境のデータベースへ集計処理を実行することにおける運用負荷を軽減できます。

![Zero-ETL UseCase4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19106/9398304f-7d32-b250-7e52-782f2a2fc4c7.png)

まとめると以下のような使いどころが挙げられます。
* これからデータ分析を始める場合における迅速な分析環境の構築
* ニアリアルタイムでのデータ分析
* 複数の環境にまたがったデータ分析
* ETL パイプラインの運用負荷軽減
* データベースを使った運用負荷の軽減

# Zero-ETL を使い始めるには
Amazon Aurora と Amazon Redshift の Zero-ETL 統合について、公式のドキュメントは下記のものになります。
[Working with Aurora zero-ETL integrations with Amazon Redshift ](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/zero-etl.html)
※日本語ドキュメントは12/3現在 Public Preview 版のままとなっております。

実際に Zero-ETL を利用しゲーム分析を行う手順をまとめた資料として、AWS の公式ウェブマガジンである builders.flash に下記の記事があります。
[ゲーム分析を Amazon Aurora と Amazon Redshift の Zero-ETL 統合ではじめよう](https://aws.amazon.com/jp/builders-flash/202309/game-analytics/?awsf.filter-name=*all)

builders.flash では他にも以下のゲーム分析に関する記事があります。
[Amazon Redshift を活用したゲームの行動ログ分析](https://aws.amazon.com/jp/builders-flash/202311/game-event-log-analytics/?awsf.filter-name=*all)
[Amazon QuickSight によるゲーム分析ダッシュボードの構築](https://aws.amazon.com/jp/builders-flash/202311/quicksight-game-analytics/?awsf.filter-name=*all)

なお、Zero-ETL を利用する上での制限事項につきましては以下にまとめられています。
[Working with Aurora zero-ETL integrations with Amazon Redshift - Limitations](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/zero-etl.html#zero-etl.reqs-lims)

# まとめ
こちらの記事では AWS re:Invent 2023 でもいくつかのアップデートが発表された Zero-ETL についてまとめてご紹介しました。
ゲームの運営においても様々な用途で活用できることが期待でき、今後は利用事例も出てくるところかと思います。
本記事ではあまり触れませんでしたが、Amazon DynamoDB についても Zero-ETL が提供されることとなり、ゲームのバックエンドシステムのアーキテクチャを再考するための材料も揃ってきたところかと思います。
Zero-ETL を活用して効率化できることはないか、ぜひ一度ご検討ください！

(免責) 本記事の内容はあくまでも個人の意見であり、所属する企業や団体は関係ございません。