Переход на 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.