負荷対策や高い安定性を維持する必要のある番組と連動したWebコンテンツの配信処理基盤をAWSのサーバアーキテクチャを用いて構築した。
デジタルコンテンツ部⾨ ⼩南英司Media-JAWS 第2回 re:LateAWSを⽤いた番組連動Webコンテンツ処理基盤の構築
View Slide
2⾃⼰紹介 ⼩南 英司(こみなみ えいじ) 株式会社デジアサ チーフエンジニア サーバサイドの構築 から アプリの実装 まで プリキュア応援アプリの開発/実装 ⾼校野球速報アプリの開発/実装 ライブ動画配信⽤制作システムの構築 ...など@eijikominami
3 のご紹介 朝⽇放送(ABC)グループのデジタルコンテンツ企業 字幕制作• パッケージ字幕の制作• リアルタイム字幕の付与• 字幕制作ソフトウェアの販売 Web/データ放送コンテンツの制作• 会社/番組公式Webサイト• 番組連動型Webコンテンツの制作• データ放送コンテンツの制作 システム開発• 報道原稿管理システム(Yahoo!ニュース等への出稿)• TVer向け素材納品システム• AWS APNコンサルティングパートナー セレクトTier
4本⽇お話したいこと 放送と連動した視聴者参加型コンテンツでシステムの安定性と開発/運⽤の効率性をいかに両⽴させるか⾼い安定性が求められる ⼀発勝負/ミスできない 本編への影響, 営業案件 ... 負荷対策 バーストトラフィックの発⽣ 限られた予算 短い納期 少⼈数体制による開発限りあるリソースTV / PC / Mobile DirectorsAWS Cloud番組連動Webコンテンツ処理基盤投票データHTML/結果結果リモコンの⾊ボタンをプッシュ!
5システム構成図AmazonCloudFrontAmazonAPI GatewayAmazon KinesisData Streams AmazonDynamoDBDynamoDB StreamsAmazonCloudFrontAmazon S3 AWSCloudFormationAWSCloudFormationAWSCloudFormationAWSSecurity Hubユーザ
6システム構成図AmazonCloudFrontAmazonAPI GatewayAmazon KinesisData Streams AmazonDynamoDBDynamoDB StreamsAmazonCloudFrontAmazon S3 AWSCloudFormationAWSCloudFormationAWSCloudFormationAWSSecurity Hub投票データの受付結果データの表⽰集計処理静的Webサイトのホスティングその他ユーザ
効率性の向上と継続的インテグレーション7
8システムの完全サーバレス化 サーバレスアーキテクチャのみで実装 API Gateway, Kinesis, Lambda, DynamoDB, S3, CloudFront ... EC2インスタンスなしメリット 運⽤保守に掛かる⼈的コストが⼤幅に低減される 「使った分だけ課⾦」のため利⽤料⾦も低減注意を要する点 最⼤負荷を考慮した綿密な設計とチューニングが必要 サービスの仕様を正しく理解する必要がある
9AWS SAMを⽤いた継続的デプロイ インフラもコードも⼀括管理 IAM Roleの作成– Wizardで⾃動⽣成されたIAM Roleの残骸だらけにならない– 必要最低限の権限のみを付与しているかコードベースで確認できるCloudWatch Alarmの作成– どの項⽬をどのような閾値で監視しているかが明確になる– 似たような設定項⽬を繰り返し⼿動で設定する必要が無い Lambdaのソースコード管理– 他のサービスの設定値とLambdaの環境変数をシンクロできる– ローカルで動作検証できる(AWS SAM Local)– 依存ライブラリのパッケージングも楽チン その他全てのAWSリソースをテンプレートに記述メリットメリットメリットメリットメリットメリットメリット
デプロイの⾃動化 ⼿動操作を排除することで⼈為ミスを⼤幅に低減することが可能 他のリージョンへの展開や本番環境への反映をコマンド1つで実現 リソースの⼿動変更も簡単操作、必要な項⽬だけ 機能の有効化/無効化も設定可能 属⼈化の排除と品質の⼀定化 ブラックボックスを無くす 主要な機能をテンプレート化して共⽤10AWS SAMを⽤いた継続的デプロイセキュリティテンプレートAmazonInspectorAmazonGuardDutyAWSConfigAWSCloudTrailAmazonS3
安定性の向上11
:トラフィックを徐々に下げながら受け⽌める :CloudFrontとAPI Gateway キャッシュの活⽤12負荷対策AmazonAPI GatewayAmazon KinesisData StreamsAmazonDynamoDBDynamoDBStreamsユーザPOSTGETAmazonDynamoDB1000 records/sec3taps0.2million users60万 taps/sec2万 req/sec⽣データの書き込みbatchwriter.putItem()4 records/sec集計データの更新updatetItem()atomic counter新旧イメージを⽐較して集計データを増減10秒に1回送信
13異常データへの対応 想定外のデータによる想定外の挙動を排除するAmazonAPI GatewayAmazon KinesisData StreamsAmazonDynamoDBDynamoDBStreamsユーザAmazonDynamoDBパラメータのバリデート パスパラメータ クエリパラメータBody(送信データ)のバリデート JSON Schemaを⽤いた構造チェック 必須項⽬の有無 データ型 下限値や上限値 デフォルト値 ...など異常データの排除 データ型 空データ ⼊⼒データの⻑さや数 既存のデータとの⽐較 時刻情報との⽐較 ...など例外処理の強化 ExceptionをCatchして 適切に処理する
14システム構成図(再掲)AmazonCloudFrontAmazonAPI GatewayAmazon KinesisData Streams AmazonDynamoDBDynamoDB StreamsAmazonCloudFrontAmazon S3 AWSCloudFormationAWSCloudFormationAWSCloudFormationAWSSecurity Hubユーザ
15まとめ サーバレス + SAMで継続的インテグレーション 開発/運⽤の負荷を下げ、短期間/少⼈数による開発体制を実現 デプロイ⾃動化による⼈為ミスの低減と迅速なリソース展開を実現 属⼈化/ブラックボックス化を避けて、プロダクトの品質を⼀定に保つ 安定性向上を⽬指した設計と実装 負荷対策 異常データへの対応SaaSサービスとしてのご提供も準備中
デジアサ東京オフィス、技術職募集中。 業務内容 技術担当 勤務地浜松町クレアタワー(⼤⾨駅直結) お問合わせ• 弊社Webサイトのお問合せフォーム• まで16そんなデジアサで働きませんか!