こんにちは、データ分析基盤チームの藤田と申します。
2020年8月6日に開催された Redshift事例祭り(活用編) において「ソーシャルゲームの膨⼤なゲームログを扱うCygamesのAmazon Redshift活用事例」と題して、弊社のデータ分析基盤の概要やAmazon Redshiftの新機能の活用事例などをご紹介させていただきました。
配信をご覧いただいた皆様には改めて御礼申し上げます。
本講演では、DataLakeExportを活用した事例やRA3ノードタイプのRedshiftを業務に導入した事例などについて紹介させていただきました。
以下が講演資料となります。
本記事で講演の振り返りをさせていただきます。
Cygamesのデータ分析基盤について
データ分析基盤の役目はゲーム運用に使っているDBのレコードやサーバーのログをDataLakeとして使っているS3にアーカイブし、そのデータを分析用のDWHとして利用しているAmazon Redshift上で参照できるようにすることです。
毎日午前0時過ぎからからロードジョブが実行されます。業務が開始される頃までには前日のレコードがS3やRedshift上にロードされており、分析やBIに活用できる状態になっています。
しかし、ゲームのレコードは複雑なステータス情報を管理する関係でカラムが多くなりがちで、更にゲーム内のイベント等は周回を要する形式のためにレコードも大量に発行される傾向などもあり、Redshiftの容量を圧迫してしまうのが課題でした。
そこで特に容量を圧迫しがちな一部のテーブル(資料のP10のようなテーブル等)についてはRedshift Spectrumを利用してS3内のデータを参照し、Redshiftのストレージにはデータを配置しなくてすむような形をとることである程度容量を節約することができました。
そのためにS3にアーカイブしたデータを一度EC2にダウンロードし、PythonのパッケージでTSV形式からParquet形式に変換してS3のSpectrum用のパスに再配置するという前処理を行なっています。
この前処理は
- 参照効率の問題からSpectrum用データはTSVよりもParquetで扱いたいこと
- Spectrumで扱い難いパス構造でデータを配置してしまっていた
上記の二つの課題をクリアするために行なっています。
ただし、力技で変換しているため、一部のテーブルについては処理時間が長く、前処理に数時間以上要していたテーブルもありました。
DataLakeExport
DataLakeExportが新機能としてリリースされたことで、RedshiftのUNLOADクエリを使ってParquet形式によりS3への出力が可能になりました。
これまでEC2上にダウンロードしていたものを、代わりに一時的にRedshiftにロードしてからUNLOADすることで代替してみました。
結果として処理時間に関しては大きく短縮することができました。
数時間近くかかっていたテーブルも含めほとんどのテーブルが数分 ~ 1時間以内にはUNLOADまで完了することができました。
前処理などを必要とせずにSpectrumで参照できるようなDataLake設計がされていることがベストかとは思いますが、EC2やAWS Glueなどによる前処理を行なっている場合はDataLakeExportを導入してみることで費用や処理時間が改善されるケースもあるので是非検討してみることをお勧めいたします。
RA3ノードタイプのインスタンス
Redshiftの新しいノードタイプとして、RA3が発表されました。
全体的にスペックは高いのですが、特にストレージが64TB/node なのでds2タイプからの移行でかなりストレージに余裕が持てると思い、弊社でも移行を検討しました。
移行の際には普段通りの業務に支障が出ないかという事を検証するために実際にRA3のインスタンスを立てて、
- 分析担当者に業務で扱うクエリをテスト的に実行してもらう
- 毎日行なっているS3からのCOPY処理が遅くなっていないか
の2点を主に検証しました。
弊社の環境では、ロード処理の時間が大きく伸びてしまったクラスターもあったため移行を見送ったケースもあったのですが、ある程度大きい規模のクラスターについてはロード処理の時間も早くなり、業務にも支障が無さそうということだったためRA3に移行しました。
現在も運用していますが、ストレージで大きく余裕を持つことができ、良い結果となりました。
また、AQUAのGAも今後控えているということで今回移行を見送ったクラスターについてもAQUAの登場によって移行しやすくなることに期待しています。
おわりに
今回の講演ではRedshiftの新機能を活用した事例を紹介しましたが、Cygamesデータ分析基盤チームでは最高の分析基盤を構築するために今後も様々な技術を駆使して常に改善を続けていきます。
データ分析基盤の開発/運用を通じてCygamesの掲げる「最高のコンテンツを作る」というミッションを共に支えていけるエンジニアを募集しております。今回の講演や資料をご覧になり、興味をお持ちいただけましたらこちらの採用ページをご覧ください。