ドワンゴ、AWSクラウド環境による開発を発表-AWS Summit Tokyo 2016

08-S-01

ドワンゴがAWSクラウドを使ってわかったコトとは? – AWS Summit Tokyo

今年6月に行われた「AWS Summit Tokyo 2016」より、「ドワンゴがAWSを使ってメディアストレージ基盤を開発してみた」の内容をお伝えします。

効率の良い開発に必要なこと

「新規プロダクトを効率良く開発していくためには、何が大切なのだろうか。」

ドワンゴ フロンティア開発部第二セクションの坂井 薫平氏によれば、それは開発における「車輪の再発明を防ぐこと」を挙げています。

坂井氏の言う「車輪」とは、サービスを構成する処理のうち、汎用性の高いもの、つまり、
どのサービスでも使うような処理(車輪)は、チームを問わず使えるように共通化・基盤化するような開発をしておこうという考え方です。

その一環として開発されたものが「メディアストレージ基盤」です。
ドワンゴのサービスでは、ユーザーが画像や動画などのメディアファイルをサーバにアップロードし、利用者がそれを視聴するタイプのサービスが多く、サービスごとに毎回、アップロードや配信の仕組みを開発するのは、坂井氏のいうところの”車輪の再発明”になってしまいます。

そこで、「画像」「音声」「動画」「PDF」の4種類のメディアファイルを対象に、アップロード・変換処理・配信を一括で処理できるように開発されたのがメディアストレージ基盤です。

メディアストレージ基盤の仕組み

メディアストレージ基盤の動作フローは以下のようになっています。
ユーザーが利用したいサービスにファイルをアップロードしようとすると、裏で「アップロード権限発行リクエスト」が実行され、サービス側がメディアストレージ基盤に「アップロード権限の払い出し」を要求し、メディアストレージ基盤へファイルをアップロードできるようになる。

メディアストレージ基盤にファイルがアップロードされると、バリデーションと変換を実行。配信用のURLやメタデータをサービス側に通知するので、サービス側はその配信用URLを使ってサービス利用者へコンテンツを提供するという流れになっています。

このメディアストレージ基盤内の独自概念の1つが、「ジョブ」という概念です。
これは、アップロード権限発行時に内部で作成されるファイル変換・配信処理用の情報群のことで、NoSQLデータベース「Amazon DynamoDB」によって管理されます。

メディアストレージ基盤での全ての処理は、このジョブという概念をベースにして行われます。

アップロード権限の払い出しは、アップロードユーザーから利用サービスに対して権限発行の要求が行われると、APIサーバへ一時認証情報リクエストが行われて、アップロード用クラウドストレージAmazon S3に対するPutObject権限を付与する一時認証情報の払い出しが行われます。
これを受けて、アップロードユーザーからクラウドストレージAmazon S3にファイルがアップロードされることになります。

クラウドストレージAmazon S3へのアップロード処理は、ファイルの種類によって少し異なりますが、ここでは画像処理についてご紹介しておきます。
画像ファイルの場合、アップロードが行われると、アップロード用Amazon S3はAWS Lambdaを起動し、Lambda上で画像ファイルのアップロードイベントに対するバリデーションが行われます。
そして問題がなければ、配信用Amazon S3にコピーされます。

クラウドを利用してわかったAWSクラウドの長所と短所

長所
この規模のものでも1人で設計・開発・運用ができる
クラウドはオンプレミスよりも融通がきくため、インフラの変更が容易
AWSフルマネージドなサービスを用いることで、コストの大幅な削減が可能
アプリケーション担当者がインフラに触れるハードルが大きく下がった
Multi-AZなどを用いることで、可用性・対障害性が容易に担保できる
サポート体制が充実している
各種リソース・サービスに対応したSDKが提供されている

短所
AWSクラウド固有のリソース・サービスへの理解と前提知識が必要となる点は否めない
整備が足りていなかったり、ドキュメントから読み取れなかったりした部分については、検証が必要だとしている。

今回はドワンゴ社でのAWSクラウド利用の取り組みについてお伝えしました。