クラウドへの期待が大きいせいか、「こんなものか」という利用企業の嘆き節が聞かれる。70社の事例を検証すると、クラウドを巡っては「5大がっかり」があることが判明した。

 朝日放送テレビは、お笑い番組「M-1グランプリ」の魅力向上を狙い、米アマゾン ウェブ サービス(Amazon Web Services)のクラウド「Amazon Web Services(AWS)」上に敗者復活戦投票システムを構築した。クラウドを使ったのは「オンプレミス(自社所有)環境では膨大なアクセスに対処できないから」と、開発を担当した、デジアサ デジタルコンテンツ部門 小南英司氏(開発当時の所属は朝日放送 技術局 開発部)は話す。

敗者復活戦投票システムの開発を担当した、デジアサ デジタルコンテンツ部門の小南英司氏(左)と朝日放送テレビ 技術局 開発部の高木衛氏
[画像のクリックで拡大表示]

 このシステムは、視聴者投票によって敗者復活のメンバーを決めるためのもので、番組の放送中だけ大量のアクセスが押し寄せると見込まれた。

 いくつかの構成案を検討した上で、最終的に「Amazon Kinesis Data Streams」を使うことにした。次々と発生するデータ(ストリームデータ)の処理に特化したサービスで、AWSのサービスの中では投票数をリアルタイムに集計するのに最も向いている。

 ところが「Kinesisは指定を超える負荷が掛かると、自動的に性能を増強するオートスケールの仕組みがなく、投票データの取りこぼしが起きる懸念があった」(小南氏)。

 Kinesisは「シャード」と呼ぶ単位でデータ処理のスループット(単位時間当たりの処理件数)を管理する。ユーザーは必要なシャード数を指定してコンピューターリソースを確保する必要がある。シャードの数を増やせばスループットを高められるが、使われないリソースはムダになる。

 そのため小南氏らは、番組当日のアクセス数を予測し、負荷テストによってシャード数を精緻に見積もる必要があった。

負荷試験を通じてリソースを最適化
朝日放送テレビの資料を基に作成
[画像のクリックで拡大表示]

 ピークの負荷は秒間2万件、総得票数は20万件を予測値とした。番組中にシステムが停止することは許されないので、Kinesisの性能に余裕を持たせて、予測値の1.5~2倍程度(秒間3万~4万件)の負荷に耐えられるように設計。オープンソースの負荷テストツール「JMeter」によって秒間1万件までの負荷を発生させた結果を基に精緻にシャード数を見積もり、40に決めた。

 番組放送当日は予測通り、20万1862件のアクセスがあった。大半のアクセスは、番組内で投票の告知をした直後の数分間に発生したが、安定運用を実現できた。結果として問題は無かったが、もし想定を大幅に超えるアクセスがあったなら安定運用できた保証はない。

この先は有料会員の登録が必要です。有料会員(月額プラン)は初月無料!

日経 xTECHには有料記事(有料会員向けまたは定期購読者向け)、無料記事(登録会員向け)、フリー記事(誰でも閲覧可能)があります。有料記事でも、登録会員向け配信期間は登録会員への登録が必要な場合があります。有料会員と登録会員に関するFAQはこちら