movinary はドイツのベルリンを本拠とする企業で、写真から動画を作成し、それをテキストで装飾できる、クラウドホスト型オンラインプラットフォームを提供しています。ユーザーはこうした動画を使って、結婚式、休暇、誕生日など特別なイベントの思い出を自分の言葉で紹介することができます。動画はすぐにダウンロードすることができるので、動画を作成した直後にオーダーが可能です。

創立者で CEO の Maximilian Modl 氏はこう語ります。「従来の動画ツールは非常に複雑ですが、movinary は最新鋭のユーザビリティ指針に基づいているので、作成プロセスは完全に直感的に行えます」

当初 movinary は、多くのオンラインサービスと同様に、ビジネス面での課題を抱えていました。世界中のユーザーにサービスを拡張できるように、スケーラブルなビジネスモデルの構築を望んでいたのです。このためには、同社の eコマースサイト(複雑な拡張型の Magento システム)で簡単に利用できるサーバー設定と、ビデオレンダリング処理のための十分な CPU パワーが必要でした。

AWS を導入する前に、movinary チームはオンプレミスオプションとクラウドホスティングを比較調査しました。「競合する他社のサービスに対抗できるように、当社のサービスをできるだけ高速かつ効率的なものにしたかったのです」と Modl 氏は言います。「クラウドが必要なことは明白でした」

また、JavaScript Ajax や Flash など、movinary の基礎となる一般的なウェブテクノロジーを利用するためのソリューションも必要でした。

movinary チームは、初期段階からアマゾン ウェブ サービス(AWS)を積極的に使用してきました。チームが必要としていたものは次のとおりです。

  • 一般的なウェブテクノロジーへの精通
  • 十分な CPU パワー
  • 高可用性
  • 世界規模に拡張するための柔軟性

また、セキュリティ、プライバシー、容易な設定方法も重要な課題でした。Modl 氏は言います。「AWS のおかげで、お客様が個人的な動画や画像をすべて安全に保管できるサービスを提供できます。それにサーバーの容易な設定というニーズにも応えてくれました。Amazon Relational Database Service(Amazon RDS)との接続、Amazon Elastic Load Balancing の設定、拡張メカニズム、これらすべてが当社の IT スローガンである『小さく始めて、すばやく拡張』に合致するのです」

パーソナライズされたビデオレンダリング処理はもう少し複雑でした。レンダリングには、高い CPU パワーが必要で、できるだけ高速であることが求められます。

AWS には他のクラウドソリューションにはない、movinary にとっての重要な利点がありました。PHP、MySQL、Adobe AIR、Apache ウェブサーバーといった一般的なウェブテクノロジーの利用です。これらのテクノロジーは、movinary のプラットフォームにとって必須です。さらに、必要な CPU パワーも得られます。

「拡張型サービスの観点から言って、Amazon Elastic Load Balancing は、CPU 使用率など事前定義されたメトリックスがあるため使いやすいのです」と Modl 氏は言います。「Load Balancing に障害が起きても、スケーリングは専門家でなくても実行できます。このおかげで、ウェブ開発チームに影響を与えることなく、高いトラフィックを見込んだマーケティングキャンペーンを企画することができます。

Amazon Elastic Compute Cloud(Amazon EC2)リザーブドインスタンスは、通常のトラフィックもピーク時のトラフィックも大変うまく処理してくれます」と Modl 氏は言います。movinary には毎日平均 3,000 人のユーザーがアクセスします。ピーク時(マーケティング開始時など)は、最大 20,000 人のユーザーが同時に movinary で動画を作成します。

必要な CPU パワーで Windows インスタンスを使用することで、パーソナライズされたビデオレンダリングエンジンはうまく機能しました。「サーバーは、当社の開発者が Secure Shell(SSH)を介して完全に制御できます」と Modl 氏。「既存のインフラストラクチャやサービスは使いやすいので、定義済みイメージを使った設定も短時間で行えます」

movinary チームは Git を使用してウェブサーバーにコードをデプロイします。また、Linux サーバーのベースイメージを作成して Apache ウェブサーバーとして実行します。インスタンスのブート処理では、Git リポジトリからの変更はすべて自動的にプルされます。すべて同期化されている場合、サーバーは HTTP リクエストを受け入れ、これにより Elastic Load Balancing はサーバーを利用できるようになります。サーバーが実行中の場合、リポジトリに 5 分ごとに自動でポーリングして、コード内の変更を受信します。

movinary サービスは、以下のアーキテクチャー図にあるとおり、多くの AWS 製品を使用しています。

Movinary Architecture Diagram 1

図 1: 現在の movinary ウェブサーバーのアーキテクチャ

Movinary Architecture Diagram 2

図 2: 将来の movinary ウェブサーバーのアーキテクチャ

movinary-3-arch-diagram

図 3: Movinary クラウドレンダラーアーキテクチャ

movinary チームは 3 つの Amazon EC2 インスタンスを使用しています。1 つはチームのクラウドレンダラー用、1 つはウェブサーバー用、もう 1 つはデータベース用です。クラウドレンダラーはレンダリング要求ごとに 1 つのインスタンスを開始し、キュー内にレンダリング要求がなくなるとインスタンスを終了します。movinary ウェブサーバーはレイテンシーを測定して自動的にスケーリングし、データベースはリードレプリカを使ってスケーリングします。これは書き込み要求よりも読み込み要求がずっと多く実行されているウェブストアでは、非常に有効です。現在 movinary は、67 GB の画像、PDF、動画(ユーザーの動画、画像、および動画テンプレート)を Amazon Simple Storage Service(Amazon S3)に保存しています。

movinary チームでは、AWS サービスをさらに次のように使用しています。

  • Amazon CloudWatch を使用して、ウェブインスタンスのスケーリングと、サービスにアクセスできない場合の確認メールの送信を行います。
  • Amazon RDS はオンラインショップ情報のために使用されています。
  • movinary クラウドレンダラーエンジン(クラウドにレンダリングされた写真やテンプレートから個々の動画を作成するサービス)は Windows マシンで稼働します。また、レンダラー自体は Flash で記述されています。
  • Magento は movinary ウェブサイトと eコマースシステム(ショッピングアプリケーション)の両方で使用されています。これには、企業のインフラストラクチャ(Amazon EC2 と Amazon RDS)で PHP と MySQL を実行する必要があります。
  • GWT は、動画作成プロセスをシームレスに実行するために使用されます。
  • Varnish Cache はサイトをキャッシュし、応答性に優れたウェブサービスをユーザーに配信するために使用します。
  • Apache Tomcat サーバーは、クラウドレンダラーへのリクエストを受け入れたりモニタリングしたりします。
  • Adobe AIR と Avidemux は、ユーザーの動画をバックエンドでレンダリングするために使用されます。

AWS を使用することで、movinary チームは迅速に本稼働に移行することができました。「ローカルマシンで開発を始めたのですが、驚くほど簡単にサービスを AWS クラウド技術に移行できました」と Modl 氏は言います。「特に、定義済みの Amazon マシンイメージ(AMI)と Elastic Load Balancing には助けられました。おかげでローカルマシンから本稼働まで 1 か月もかかりませんでしたよ」

また、Amazon EC2 はパフォーマンスの向上にも役立ちました。「バックエンドでの動画のパーソナライズには、高い性能が必要です」と Modl 氏は続けます。「m1-medium インスタンスが当社の CPU パフォーマンスと RAM のニーズに完璧にマッチしたので助かりました。2 回クリックするだけでインスタンスに割けるディスク容量を増やすことができるので、大いに時間の節約になります」

Amazon RDS について Modl 氏はこう言います。「AWS はバックアップとアップデートを管理してくれます。それにインフラストラクチャを半自動的にスケーリングします。当社のシステムは書き込み要求より読み込み要求を多く生成するのですが、Amazon RDS によるスケーリングがこれをサポートしてくれます」

サービスをクラウドでホストすると、割り当てられたインスタンスを movinary が動的に変更できるので、費用対効果が一層向上します。この構造により、スケーラブルなインフラストラクチャにおいて高度なカスタマイズが可能なソリューションを実現できます。

movinary チームは現在、Amazon RDS と Amazon ElastiCache を評価中で、レンダリングキューの処理に Amazon Simple Queue Service(Amazon SQS)の使用を検討しています。

AWS の使用を検討している他の開発者に対して movinary は、まず CPU 使用率に基づく自動スケーリングを行うことを推奨しています。「追加のメトリックスを収集したら、他の測定技術やスケーリング技術を選択することで、スケーリングを向上させていくことができます」と Modl 氏は言います。チームは Amazon EC2 インスタンスの設定を多少変更する必要がありました。多くの設定済みイメージを利用できます。

チームは Amazon EC2 インスタンスを設定するために、多くの設定済みイメージを利用できることに気づきました。このため設定の変更はごくわずかで済みました。

Modl 氏によると、AWS の利用を決断したことは、最初から正解だったそうです。「AWS に匹敵するものは他にありません」

AWS とウェブアプリケーションについての詳細は、http://aws.amazon.com/web-mobile-social/ をご覧ください。