
サーバーレス構成が求められる背景
新作ゲームのように注目度の高いサイトや、LINEやTwitterなどと連携したキャンペーンサイトで膨大なアクセスが見込まれる際、サーバーダウンを避ける方法としてサーバーの冗長化構成が検討されることは多くあります。 メールアドレス登録やユーザー登録だけさせるキャンペーンサイトは、1ページだけで完結するシンプルな作りが多いですが、冗長化構成は過剰なスペックになりやすく、余計なコストがかかることもあります。 そこで AWS Lambda を中心に複数のAWSサービスを組み合わせることで、膨大なアクセスに強く、従来の冗長化構成に比べ安価な環境を構築することができました。サーバーレス構成の3つのメリット
サーバーの保守管理の手間が減る
サーバーを利用する際、一般的にはセキュリティのためサーバーOSやミドルウェアの設定と保守運用、突発的な障害対応などありますが、サーバーレス構成ではそのサーバーOSやミドルウェアが無いので運用作業が大幅に減ります。 サーバーレス構成が冗長化構成より安価で提供できるのは、管理コストが減る点が大きいです。サーバーの脆弱性を突いた攻撃が効かない
セキュリティ被害の多くはサーバーOSやミドルウェアの脆弱性を突いた攻撃ですが、公開ネットワーク上にサーバーが無いので、一般的なサーバーの脆弱性を突く攻撃が効きません。 Amazonのプラットフォームに脆弱性が無いとは言えませんが、プラットフォーム仕様が公開されていないので脆弱性を探すことが難しく、一般的なサーバーOSより脆弱性被害の可能性は少ないと考えられます。サーバーが落ちることがない
サーバーが無いのでサーバーダウンの概念がありません。 厳密にはAmazonがダウンすれば共倒れしますが、どのプラットフォームもサービス本体がダウンすれば同じことが言えるので、世界的インフラのAWSと、自社サーバーや一般企業のレンタルサーバーのどちらを信用するか、という話になります。サーバーレス構成のしくみ
前提として「1枚の静的ページにメールアドレス登録フォームのみ置いたシンプルなキャンペーンサイト」を構築することを例に、サーバーレス構成のしくみをご紹介します。
よくあるゲーム事前登録サイトのイメージ
処理の流れとAWSサービスの概要
上図でクローズアップしたフォーム処理側は、以下ような流れになっています。

API Gateway
Amazon API Gateway は API の作成、配布、管理ができ、数十万件の同時API呼び出しも処理できるサービスです。 構成例での役割は、送られたフォームデータを Lambda へ渡すことです。 コンテンツ側からフォーム送信処理が JavaScript で API Gateway に送られ、 API Gateway から Lambda を起動しデータを渡します。
Lambda
AWS Lambda はサーバー不要でコードを実行できるサービスです。言語はNode.js、Python、Java、C#をサポートしています。 構成例での役割は、フォームプログラムを実行する要の存在です。 API Gateway によって起動され、DynamoDB へフォームの送信データを格納し、メールの自動返信処理を SES へ送る処理を実行しています。
DynamoDB
Amazon DynamoDB は高負荷が予想されスケールする環境での利用を前提に設計された、NoSQLデータベースです。NoSQLデータベースはMySQLなど従来のリレーショナルDBと異なる非リレーショナルなDBで、高速かつスケーラブルなメリットがあります。 構成例での役割は、 Lambda から次々に送ってこられるフォームデータを高速に格納するデータベースになります。