皆さんは「M-1グランプリ」をご存じだろうか? 吉本興業主催の漫才コンテストであり、朝日放送が制作している。M-1グランプリに優勝すると、テレビへの出演が激増し、ブレイクするコンビも少なくない。
そんな「M-1グランプリ」が2010年から5年の空白期間を経て、2015年に復活した。M-1グランプリの特徴の1つに、視聴者投票方式による敗者復活戦がある。敗者復活戦においては、視聴者の投票の実施と集計を行うシステムが利用されている。
5月31日から6月2日にかけて開催されたAmazon Web Servicesの年次イベント「AWS Summit Tokyo 2017」において、朝日放送技術局開発部の小南英司氏が「サーバレスアーキテクチャで実現したM-1 グランプリ敗者復活戦投票システム」という講演を行った。本稿では、その模様をお届けする。
AWS&サーバレスアーキクテチャを選んだ理由
同社には視聴者投票の結果を集計するシステムが存在したが、2015年にM-1グランプリを再開するにあたり、AWSのサーバレスアーキテクチャを採用した投票システムを新たに構築した。
その理由について、小南氏は次のように語る。
「5年ぶりに復活するイベントであり、また、敗者復活戦は決勝戦に出場できるコンビの運命を決める企画ということで、サーバのリソースに限りがあるオンプレミスの環境では投票データを処理しきれない可能性があった。さらに、M-1グランプリ専用に機能の作り込みが必要だったにもかかわらず、開発期間はわずか43日しかなかった」
加えて、投票システムの特性を考えると、高負荷や冗長性への対策が必須だったが、AWSのマネージドサービスを利用すれば、サーバの増設や設定値のチューニングの手間を省くことができ、自社のプログラム開発に集中できるというメリットもあった。
AWSによる敗者復活戦投票システムにおいて、投票データの受付はストリーミングデータ処理サービス「Amazon Kinesis」、データの抽出・判定は「Kinesis Enabled App」、データの蓄積はNoSQLデータベースサービス「Amazon DynamoDB」で行っている。
小南氏は、Kinesisについて「使い勝手がいい。番組内の告知によって、莫大なトラフィックが発生するが、Kinesisはバースト対策に最適。いわば、水量調整機能を担うダムのような存在で、Kinesisの処理能力を自身で決めることができるなど、莫大なアクセスがきても、負荷をコントロールできる」と、高く評価した。
ちなみに、全投票数のうち、番組での告知後1分間の投票が2割から6割を占めており、毎秒数万レコードの処理が求められているというわけだ。
2016年は、API Gatewayを用いて、テレビからの投票にも対応した。小南氏によると、データ放送コンテンツは「特殊なマークアップ言語で記述されている」「スクリプト上で使える関数が限られている」という特徴があるうえ、通信を行う上での制約があることから、テレビ受像機からKinesisにデータを投入できないことから、「Amazon API Gateway」を採用したそうだ。
信頼性を高めるための工夫とは?
小南氏は、信頼性の高いシステムを構築するため、負荷試験に基づいたシステムの最適化を行ったことを紹介した。前述したように、投票システムは番組での告知後の1分間で最大6割の投票データを受け付けるので、これに耐えうることが求められる。
そこで、Apache JMeterによる負荷生成システムを構築し、想定のおよそ最大10倍の投票リクエストを受信する負荷テストを行ったという。そして、負荷試験の結果を基に、システム構成や設定値が決定された。
加えて、Kinesis Enabled Appによって構成されている集計処理プログラムにも工夫が凝らされている。
まず、高速処理を実現するため、複数スレッドによる並列処理とパラメータの最適化が行われているほか、厳格なフォーマットチェックにより不正データを排除する。安定性の確保にあたっては、強力な例外処理やエラー処理を実装している。さらに、パラメータを詳細に指定可能にすることで、全国ネットから深夜帯のローカル番組まで、さまざまな番組で利用できる汎用性を実現している。
そのほか、小南氏はシステムの多重化のための対策として、米国バージニア州にバックアップシステムを構築していることを紹介した。
東京とバージニアで同一システムを構築し、並行して集計処理を実施しているそうだ。そのため、通信障害やデータセンターの障害塩バックアップシステムで処理を継続することが可能になっている。
バージニアを選んだ理由は、AWSの創業の地であることから、リソースが豊富だからだという。
投票システムの利用状況だが、2015年は負荷テストの予測通り、20万人の投票を受け付け、データ放送を開始した2016年は100万人を超える投票があったそうだ。
なお、同社ではその他のシステムにおいてもAWSの活用が進んでいるそうだ。その一例として、動画配信システム基盤における活用が紹介された。AWS上で動画データの管理を行い、TV GYAOへの配信が行われている。また、動画プレイヤーのログ解析システムについても、AWSのサーバレスアーキテクチャで運用中だという。
小南氏は、「M-1グランプリ投票システムでは、クラウドとサーバレスのメリットを最大限に活用できた。約1カ月という短期間で2人で開発できたうえ、投票システムの開発に集中できたのも大きなメリット」と、締めくくった。