Высоконагруженный Stream API сервис
О проекте
Stream API сервис управляет высоконагруженным приложением, позволяющим пользователям получать высококачественный видеоконтент, включающий в себя фильмы, сериалы, ТВ каналы.
Технологии
Быстродействие
Одним из ключевых требования к проекту было его быстродействие, так как было очень важно, чтобы пользователь получал запрашиваемые данные как можно быстрее. Проблема усложнялась тем, что в требованиях к проекту значилось использование php. Для того чтобы обойти проблемы с медленной работой php под большими нагрузками, было принято решение использовать php Swoole, применение которого позволило многократно увеличить скорость работы сервиса под большими нагрузками. Также широко применялось кэширование наиболее критичных частей системы.
Стабильность кода
Высокая нагруженность проекта требовала свести риск деплоя кода с багами до минимума. Для этого было решено использовать CI/CD подход, что, в свою очередь, требовало как можно большего процента покрытия кода проекта тестами, что было сделано с использованием PHP Unit. Также процесс CI/CD включает в себя проверку кода на дублирование и соответствие стандарту PSR-12. CI/CD был построен с использованием Pipeline от GitLab.
iPhone
iPad
Apple TV
Android Phones
& Tablets
Android TV
Отказоустойчивость
Сервисом пользуются десятки тысяч человек по всему миру, поэтому было важно предусмотреть архитектуру, которая позволит свести вероятность отказов до минимума. После анализа возможных вариантов решения проблемы было решено построить архитектуру сервиса с использованием сервисов Amazon AWS.
Были использованы сервисы:
- Lambda -> используется для облачных вычислений
- RDS -> используется RDS cluster на основе движка AWS Aurora
- Elastic Cache -> Redis cluster используется для кэширования данных
- Cloud Watch -> сервис анализа логов
- CloudFront -> сервис, позволяющий размещать контент ближе географически к его пользователям
Следующий проект