Parse はモバイルアプリケーション開発者向けにクラウドベースのバックエンドサービスを提供しています。サンフランシスコを拠点とするこのスタートアップ企業は、開発者がアプリケーションの開発に集中し、インフラストラクチャについては Parse に任せられるよう、全面的なモバイルサービスを提供しています。2012 年に起業し、急速な成長を続けるこのスタートアップ企業は、2 億台以上のモバイルデバイスで実行される、180,000 を超える Android、iOS、Windows mobile アプリケーション向けにサーバー管理を提供しています。

Parse はモバイルアプリ開発者向けアプリケーションサービスを AWS で構築 (2:58)

parse-video-thumbnail2

Parse は高スループットで大量の I/O が必要な MongoDB クラスターを多数運用しており、スケーラビリティと速度の向上を必要としていました。Parse は顧客のユーザーアカウント管理、データストレージ、ディスクキャッシュを扱っており、使用状況は毎日変動します。サイト信頼性エンジニアの Charity Majors 氏はこう語っています。「Parse で開発されているあるアプリケーションが iTunes で取り上げられると、トラフィックはものの数時間で 3~4 倍に増加します。プラットフォームには安定性と高速性が必要です。Parse のオペレーションに問題が発生すれば、50,000 のモバイルアプリケーションの運用に問題が発生します。問題修復のために 15 分間プラットフォームを停止している余裕はありません。」

Parse にとって AWS は、要件を満たせるだけの全面的な機能を提供できる、唯一のクラウドプロバイダです。「これまでに、MongoDB クラスターを向上させる方法について探ってきました。大量の I/O が発生するワークロードに対して予測可能な高いパフォーマンスを持つよう設計されている Amazon EBS プロビジョンド IOPS は、ニーズにちょうどフィットしました」と Majors 氏は言います。

Parse チームは、ストライプ化された 1000 のプロビジョンド IOPS ボリュームを MongoDB クラスターに使用して、Amazon Elastic Compute Cloud (Amazon EC2) インスタンスで運用しています。エンジニアは、スタックのトップにある Elastic Load Balancing を使用して、データベースと通信するアプリケーションサーバーへの接続をウェブサーバーに分配しています。図 1 に、Parse の環境を示します。

Parse Architecture Diagram

図 1: Parse の AWS でのアーキテクチャ

Parse は、MongoDB データベースを 1 つのプライマリデータベースと 2 つのセカンダリデータベースを含むレプリカセットで運用しています。Parse では Amazon Elastic Block Store (Amazon EBS) を使用して、各 MongoDB シャードのスナップショットを頻繁に作成し、スナップショットは Amazon Simple Storage Service (Amazon S3) バケットにアップロードされます。必要な場合、Parse は数分で Amazon S3 を使用した新規ノードを起動し、クラスターに加えることもできます。

「パフォーマンス向上のためにボリュームをストライピングしていますが、もう RAID 10 は使っていません」と Majors 氏は言います。「RAID 10 を使っているときに RAID アレイのパフォーマンスが低下した場合、問題の有るボリュームを除き、新しいボリュームを追加し、新しいアレイを構築する必要があります。Amazon S3 のバックアップからボリュームを再構築するほうが実際には速くなることがわかりました。」

EBS プロビジョンド IOPS に移行するまでは、Parse はディスクスパイクを経験しており、エンドツーエンドで測定したレイテンシーが最大 400 ミリ秒に達することもありました。現在のエンドツーエンドのアプリケーションレイテンシーは平均 100 ミリ秒以下まで向上していると Majors 氏は推定しています。「当社のスタックのレイテンシーはほぼ完全にフラットです」と同氏は報告しています。「MongoDB の書き込みロックや Amazon EBS イベントによる定期的なレイテンシーのスパイクは発生していません。最もアクティブなコレクションをメモリに読み込んでデータベースのウォームアップをするためのスクリプトも準備していますが、プロビジョンド IOPS ボリュームでは使う必要がないのです。メモリのウォームアップ時間は 80% 以上短くなり、レイテンシーの長さに加えられる影響は非常に小さいものです。」

Parse では、Cassandra クラスターの実環境へのデプロイに合わせて、EBS プロビジョンドProvisioned IOPS を使用することも計画しています。「プラットフォームにダウンタイムやパフォーマンス低下を与えるような選択肢は考えられません」と Majors 氏は言います。「プロビジョンド IOPS では安定性、信頼性、低レイテンシーが実現されています。パフォーマンスが要求されるときはいつでも、AWS とプロビジョンド IOPS を使うことになるでしょう。」

データベースストレージのニーズを満たすうえで AWS がどのように役立つかについては、Amazon Elastic Block Store (EBS) の詳細ページ http://aws.amazon.com/ebs/ をご覧ください。