目次
ドワンゴが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クラウド利用の取り組みについてお伝えしました。