Amazon ECS への移行により、サービスパフォーマンスは大幅に向上しました。サービス応答時間が 99 パーセンタイル値で 50% 短縮されました。
Remind は、米国の学校教師がテキストメッセージを学生に送信することや、保護者と連絡を取り合うことができるウェブおよびモバイルアプリケーションです。Remind のプラットフォームは、2,500 万人のユーザーと 150 万人を超える教師に使用されており、そのアプリケーションによって 1 か月に 1 億 5,000 万件のメッセージが配信されています。
- Remind では、サードパーティのクラウドの Platform as a Service (PaaS) を使用して、メッセージ配信エンジン、フロントエンド API、ウェブクライアント、チャットバックエンドといったアプリケーションインフラストラクチャ全体を、モノリシックアプリケーションとして実行していました。
- スケーリングの問題でマイクロサービスベースのアーキテクチャに移行する必要がありましたが、PaaS プロバイダーによって提供される CPU、メモリ、ネットワークパフォーマンスの可用性を十分に確認できないことが気になっていました。
- Remind では、リソース使用と環境をバランス良く向上させるために Amazon Elastic Compute Cloud (Amazon EC2) の Docker を使用したいと考え、最初に、開発者の効率のために社内に PaaS ソリューションを所有することを検討しました。
- Linux ベースの CoreOS と fleet の上に自社の PaaS を構築してみましたが、fleet とキーバリューストア etcd が不安定でした。チームの時間を自社のクラスター管理システムの実行と運用に費やしたくありませんでした。
- Remind では、運用上の簡素化を継続的に実現するために AWS を直接使用することにしました。既に、Amazon Redshift、Amazon DynamoDB、Amazon Simple Storage Service (Amazon S3) および Amazon CloudFront を使用していました。
- この会社は、エンジニアリングチームが小規模で、クラスターの運用と管理に必要な時間や専門知識がなかったため、Amazon EC2 Container Service (Amazon ECS) の上に PaaS を構築することに決めました。
- Remind では、Amazon ECS に構築した自社の PaaS ソリューションを "Empire" としてオープンソース化しました。
- Amazon ECS をよってコンテナのスケジューリングと統合ができるようになり、Elastic Load Balancing (ELB) によって Empire で DNS を使用してサービスを検出できるようになります。
- Empire では、Heroku 互換の API と CLI が用意されており、開発者は Amazon ECS にアプリケーションを簡単にデプロイできます。
- マネージドサービスである Amazon ECS では、運用効率が向上するため、エンジニアリングリソースをクラスターの運用と管理ではなく、アプリケーションの開発とデプロイに集中させることができます。
- Amazon ECS への移行により、安定性の向上やレイテンシーの低減など大幅なパフォーマンスの向上を実現できます。
- Remind では、99 パーセンタイル値で応答時間が半分に短縮され、ばらつきとスパイクも減少しました。
- AWS を使用すると、VPC を通じてセキュリティとルーティングを制御できるようになり、さらにアプリケーションのパフォーマンスをより正確に把握できます。
AWS が Docker コンテナの管理にどのように役立つかの詳細については、Amazon EC2 Container Service の詳細ページをご覧ください。