AWS Lambda の効果は劇的でした。今まで数時間かかっていた画像処理がわずか 10 数秒で完了しました。コストに関しても、同じ処理をオンプレミスで行う場合と比べ 20 分の 1 程度にまで削減することができました。
AWS Lambda にはそもそもリソースが足りなくなるという発想がありません。これはオンプレミスでは真似のできないものです。
縣 大輔氏 株式会社スクウェア・エニックス 第 6 ビジネス・ディビジョン テクニカルディレクター

「最高の『物語』を提供することで、世界中の人々の幸福に貢献する」を企業理念に掲げる株式会社スクウェア・エニックスは、主にゲームを中心とする「デジタルエンタテインメント事業」、アミューズメント施設運営や業務用ゲーム機器の開発を行う「アミューズメント事業」などを展開しており、ゲーム、エンタテインメント分野において創造的で革新的なコンテンツ、サービスを生み続けています。ゲームの代表作には「ドラゴンクエスト」「ファイナルファンタジー」「トゥームレイダー」シリーズなどがあり、世界中の数多くのお客様に高く評価されています。

主力ゲームコンテンツの1つ「ドラゴンクエスト」は、1986 年ファミコン用ゲームソフトとしてスタートし、「ドラゴンクエストⅩ」では、MMORPG(多人数同時参加型オンラインロールプレイングゲーム)と呼ばれるオンラインゲームへと進化。お客様はゲームサーバーに接続することで、たくさんの他のプレイヤーと一緒に「ドラゴンクエストⅩ」の世界に参加し、ゲームをプレイできます。
数十万人が同じ世界で遊ぶ「ドラゴンクエストⅩ」では、常にお客様が快適に遊べる環境を提供するためのインフラが構築されています。

ドラゴンクエストⅩでは、ゲームに連動するポータルサイトやスマートフォン用のアプリケーションを提供しており、ゲーム内でのメールのやりとり、買い物、キャラクター管理など、これらを使っても行うことができます。また、ゲーム内では写真を撮影できる機能があり、お客様はポータルサイトからこれらの写真を閲覧、管理できるようになっています。この機能はとても好評で、クリスマスや⼤晦⽇のカウントダウンではゲーム内でイベントが開催され、その際にお客様が撮影される写真は膨⼤な数になります。

ゲーム内で写真が撮影されると、サーバーに画像が送られ、サーバー上でサムネイル画像の作成やコピーライト表示の追加などの加工が行われます。「これらの画像加工はちょっと重たい処理です」(縣氏)。そのため、イベントなどで撮影が集中すると、サーバー負荷のスパイクが発生します。通常は 1 分間に 2 ~ 300 枚程度の処理数ですが、大晦日イベントの際には 1 分間に 6000 枚にまで増えてしまいます。

「撮影された写真はサーバー側で順番に処理します。年に何回か発生するスパイク時には、画像処理が終わってお客様が写真を閲覧できるようになるまでに、長いときは3、4 時間もかかることがありました。」(縣氏)これらの処理を高速化し、顧客満⾜度を向上することは、スクウェア・エニックスにとってお客様数拡大のためにも 1 つの課題となっていました。

※ 実際にお客様がゲーム内で撮影された写真です

画像処理を高速化するため、最初は 64 コア程度のスペックのサーバーを新たに用意し、処理するスレッド数を増やすことが検討されました。「1 回の処理速度を速くするよりも、処理の並列度を上げるほうが効果的だと考えたからです。」(縣氏)

この時サーバー増設の相談を受けたのが、情報システム部 ITI 第二MMO・グループ 窪 宏二朗氏でした。窪氏は、年に何度かしかないスパイクへの対処のためだけに、高価なサーバーを導入するのは難しいため、AWS クラウドの活用は 1 つの解決策になると考えました。「その中でも、AWS のインフラ上でコード実行をする AWS Lambda を活用することで、画像処理の仕組みを自社環境から切り出し、オンプレミスサーバーとも連携可能だと考えました。また、導入障壁も低く使いやすそうだと思い、縣に利用を薦めました。」(窪氏)

写真撮影機能は、今後お客様の数がさらに拡大するにつれて、スパイクがさらに大きくなることが予想されます。「AWS Lambda なら、理論上は無制限にスケールできます。これも選択の重要なポイントとなりました。」(縣氏)

こうしてスクウェア・エニックスでは、2015 年夏頃から簡単なサンプル準備と共に、AWS Lambda の検証が行われました。「画像処理の仕組みを AWS Lambda で動かせるようにしました。後はオンプレミスのサーバーとの連携をどうするかなどを含め、検証には時間をかけました。」(縣氏)

また、お客様が撮影した写真を扱うこの機能では、可用性や信頼性が非常に重要となるため、バックアッププランも含めた検証も行われました。このように十分な検証を経て、2015 年 12 月に AWS Lambda への移行が完了しました。

写真撮影が行われると、画像のバイナリデータはまず Amazon S3 に置かれ、Amazon S3 のイベントとして AWS Lambda が起動し画像加工の処理が行われます。その後、Amazon SQS から出される画像のバイナリデータを含むキューをオンプレミスサーバー側で取り込むことで、加工済みの画像データがサーバーに保存されます。

「撮影から写真を閲覧できるようになるまでに 1 時間もかかるようでは、お客様は満足してくれません。そのため、10 分以内で処理が完了するのを目標とし、ピーク時に予想される 1 分間 6000 枚の 3 倍、 1 分間 18000 枚を目安に処理速度のテストを行いました。」(縣氏)

検証の結果、AWS Lambda では、 1 分間 18000 枚の画像処理を数秒から10数秒で完了することができました。

実際、Amazon Lambda へ移行後の大晦日イベントでは、1 分間に 6000 枚を越える写真撮影がありましたが、「AWS Lambda の効果は劇的でした。今まで数時間かかっていた画像処理がわずか 10 数秒で完了しました。コストに関しても、同じ処理をオンプレミスで行う場合と比べ 20 分の 1 程度にまで削減することができました。」(縣氏)

AWS を導入したことによって、コスト削減はインフラコストに対してのみならず、他の面でも効果が得られています。「運用管理やサーバー入れ替え時の手間がかからないため、人的リソースの削減にもつながっています。」(窪氏)

さらに、AWS Lambda の動きを確認するため Amazon CloudWatch を活用した監視の仕組みも構築されています。「写真1枚ごとに、AWS Lambda のプロセスをキックし、処理するようになっています。このやり方はプロセスをどんどん増やすので、オンプレミスのサーバーではなかなか真似ができるものではありません。」(縣氏)

ドラゴンクエストⅩでは、プッシュ通知でお客様へ情報発信をすることも多く、曜日や時間帯によって変動が大きい処理となっています。このためスクウェア・エニックスでは、現在そういった通知機能に Amazon SNS の活用が検討されています。また、コンテンツ配信に関しては、Amazon CloudFront の導入も検討されています。

さらに、「今後、Web ベースでサービスを提供する際のリスク回避のためにも、証明書にはきちんと対応したいと考えています。そのため SSL/TLS 証明書のプロビジョニング、管理が行える AWS Certificate Manager の導入を考えています。」(窪氏)

「オンプレミス環境と上手く連携しつつ、クラウドへ切り出した方が効率的なサービスについては、今後も積極的に移行を検討していきたいと考えています。」(縣氏)

- 株式会社スクウェア・エニックス 情報システム部 ITI 第二MMO・グループ 窪 宏二朗 氏
- 株式会社スクウェア・エニックス 第 6 ビジネス・ディビジョン テクニカルディレクター 縣 大輔 氏

AWS クラウドがウェブアプリケーションにどのように役立つかに関する詳細は、ウェブサイトおよびウェブサイトホスティングの詳細ページをご参照ください。