ZigZaGame のゲーム内チャット・プラットフォームで、Momento Cache がどのように運用上の問題を解消し、総所有コストを削減したかをご紹介します。
ソリューションの概要
Evertale、NeoMonster、Tokyo Debunkerなどを手がけるZigZaGameは、世界的なゲーム会社です。ゲームのワークフローは、しばしば急変するワークロードに耐えるため、高価なオーバープロビジョニングが必要となり、運用に苦痛を感じることがあります。この負担を軽減するため、サーバーレスアーキテクチャへの移行を決定し、予測不可能なピーク時のゲーム内チャットをサポートするために拡張可能なキャッシュが必要になりました。
オーバープロビジョニングされているにもかかわらず、私たちのRedisサーバーはスパイクに対応するのに苦労していました。AWS Lambdaに移行すると、Redisノードがあまりにも多くの同時ネットワーク接続を処理する必要があり、これはさらに苦痛となりました。Amazon ElastiCache RedisのVPC要件も、私たちのサーバーレススタックに複雑さを加えました。私たちは、全体的な可用性とパフォーマンスを向上させながら、運用の複雑さと経費を削減するために、スケーラブルなサーバーレス・キャッシング・ソリューションを必要としていました。
Momento Cacheは、楽しい開発者体験を提供してくれます。数週間で導入でき、総所有コストを削減し、サーバーレススタックの全体的な性能を向上させることができました。
ZigZaGameとは
ZigZaGame Inc.は、モバイルゲーム会社として成功を収めています。ZigZaGameの最新作「Evertale」は、122カ国以上のモバイルアプリストアでロールプレイングゲーム(RPG)カテゴリ1位を獲得し、1000万回以上ダウンロードされています。ゲーム制作、マーケティング、データ分析といった社内の専門知識を統合した総合的なアプローチにより、ZigZaGameは世界中のユーザーにトップクラスのエンターテイメントを提供しています。
Momento導入前の状態
ZigZaGameのレガシーメッセージングプラットフォームは、固定されたAmazon ElastiCache RedisクラスタにプッシュするAWS ElasticBeanstalkジョブで構築されていました。ユーザーの爆発的な増加により、これらの3つの主要なキャッシュのペインポイントを克服するために、サーバーレスへの近代化が必要であることが明らかになりました。
- 固定されたRedisクラスタの弾力性がないため、高いコストに悩まされていました。当社のユーザー・トラフィックは、夜中にはゲーマーの数が少ないものの、夕方などの忙しい時間帯には何十万人もの同時接続ゲーマーが急増するなど、非常に変動が激しいのです。弾力性がないため、1日の大半の時間はCPUやメモリ、ネットワークの容量を使用していないにもかかわらず、ピーク時の負荷に合わせてRedisクラスタをサイズ調整し、24時間365日稼働させることを余儀なくされました。
- 新しいユーザーが一度に参加するバーストは、何千もの接続を引き起こす何千ものAWS Lambdaを起動します。これはAmazon ElastiCache Redisクラスタを圧迫し、これらのAWS Lambda接続のすべてに対応することができませんでした。これがサーバーレスへの移行を阻んでいたのです。
- 私たちの小さなバックエンドエンジニアリングチームは、すでに様々な重要なタスクで手いっぱいだったのです。Redisクラスターを管理するためのオーバーヘッドが、大きな妨げになっていました。
Momentoとの出会い
私たちは、完全なサーバーレスの未来への道として、Momento Cacheの使用を開始しました。Momentoのオンデマンド価格モデルと即時弾力性は、私たちの総所有コストを削減する大きな機会を生み出しました。Momentoのスケーラビリティは、何千ものAWS Lambdaの同時接続に対応する方法を提供しました。Momentoのサーバーレス展開モデルは、容量のスケーリング、キャッシュのヒット率、テールレイテンシ、ホットキーなどを自動的に処理します。これにより、バックエンドエンジニアの生産性が向上し、キャッシング操作が完全にオフロードされました。
実装
私たちは、AWS API GatewayとAWS LambdaベースのアーキテクチャにMomentoを迅速かつ容易に統合し、わずか数週間でMomentoへの移行を完了させました。Momentoのおかげで、完全なサーバーレス化を実現できました。何千もの同時実行ラムダを処理し、VPC設定の複雑さを解消してくれました。
Momento Cache無しでのアーキテクチャ
Momento Cacheを使用したアーキテクチャ
ZigZaGameのMomento Cache実装においてはMomentoの.NET SDKを利用しています。 Momentoのコレクションデータ型 (dictionary
, list
, set
) やカウンターAPIなどを使用しZigZaGameはオンデマンドでMomentoをAWS Marketplace経由でデプロイしています。
導入結果とこれから
Momento Cacheによって、AWS Lambdaを使ったサーバーレスアーキテクチャのメリットを引き出すことができ、チャットプラットフォーム用のインメモリデータストアの総所有コストを30%削減することができました。バックエンドエンジニアリングチームがキャッシングインフラの管理に費やす時間はほぼなくなり、将来的なタイトルのユーザー増加にも、可用性とコスト効率の両方の観点から容易に対応できるようになりました。