Переход на Amazon ECS позволил значительно повысить производительность наших сервисов. Мы сократили время реакции на запрос в 99-м процентиле в два раза.
Джейсон Фишл Вице-президент по проектированию

Remind – это мобильное и интернет-приложение, позволяющее преподавателям отправлять текстовые сообщения ученикам и оставаться на связи с их родителями. У Remind 25 миллионов пользователей, платформу используют более 1,5 миллиона преподавателей, приложение доставляет 150 миллионов сообщений в месяц.

  • Ранее компания Remind использовала для работы инфраструктуры приложения (ядра системы доставки сообщений, клиентских API, веб-клиента, серверной части функционала для чатов) стороннюю облачную платформу, предоставляемую как сервис (PaaS). Вся инфраструктура при этом работала как единое приложение.
  • Проблемы с масштабированием заставили Remind перейти к архитектуре, основанной на микросервисах, при этом компанию перестал удовлетворять ограниченный доступ к данным о производительности сети, ЦПУ и оперативной памяти, предоставляемый провайдером PaaS.
  • Remind хотела использовать Docker на инстансах Amazon Elastic Compute Cloud (Amazon EC2), чтобы оптимизировать использование ресурсов и достичь единообразия среды. Первоначально предполагалось, что в такой архитектуре будет использоваться внутреннее решение PaaS для повышения эффективности разработки.
  • Remind начала создавать собственное решение PaaS в среде CoreOS на базе Linux с использованием кластерного менеджера fleet, но fleet и распределенное хранилище пар «ключ-значение» etcd работали нестабильно. Кроме того, команда Remind не хотела тратить свое время на обеспечение работы собственной системы управления кластером.

  • Чтобы не усложнять операционные процессы, в компании Remind решили использовать AWS напрямую; такие сервисы, как Amazon Redshift, Amazon DynamoDB, Amazon Simple Storage Service (Amazon S3) и Amazon CloudFront, уже использовались в работе Remind.
  • Компания решила построить свою платформу PaaS на базе Amazon EC2 Container Service (Amazon ECS), так как ее техническая группа была небольшой и не имела необходимого времени и квалификации, чтобы настраивать кластеры.
  • PaaS-решение компании Remind на Amazon ECS с открытым кодом получило название Empire.
  • Amazon ECS предоставляет планирование контейнеров и интеграцию, а Elastic Load Balancing (ELB) позволяет Empire использовать DNS для обнаружения сервисов.
  • Empire предоставляет совместимые с Heroku API и интерфейс командной строки, что позволяет разработчикам с легкостью развертывать приложения поверх Amazon ECS.

  • Управляемый сервис Amazon ECS предоставляет операционную эффективность, позволяя сосредоточить силы технических специалистов на разработке и развертывании приложений, а не тратить их на поддержку работы кластеров и управление ими.
  • Переход в Amazon ECS обеспечил значительные улучшения в производительности, а также лучшую стабильность и более низкие задержки.
  • Remind получила двукратное уменьшение времени отклика в 99-м процентиле, с меньшими отклонениями и меньшим количеством пиков.
  • AWS предоставляет управление безопасностью и маршрутизацию в VPC и, кроме того, большую наглядность в отношении производительности приложений.

Подробнее о том, как AWS может помочь управлять контейнерами Docker, см. на странице сведений об Amazon EC2 Container Service.