RU
title

Высоконагруженный Stream API сервис

logo

О проекте

Stream API сервис управляет высоконагруженным приложением, позволяющим пользователям получать высококачественный видеоконтент, включающий в себя фильмы, сериалы, ТВ каналы.

Технологии

PHP (Laravel Octane),
AWS (Lambda/RDS Aurora/ElasticCache/
CloudWatch/CloudFront),
CI/CD (PhpUnit/phpcpd/phpcs).

Быстродействие

Одним из ключевых требования к проекту было его быстродействие, так как было очень важно, чтобы пользователь получал запрашиваемые данные как можно быстрее. Проблема усложнялась тем, что в требованиях к проекту значилось использование php. Для того чтобы обойти проблемы с медленной работой php под большими нагрузками, было принято решение использовать php Swoole, применение которого позволило многократно увеличить скорость работы сервиса под большими нагрузками. Также широко применялось кэширование наиболее критичных частей системы.

presentation one

Стабильность кода

Высокая нагруженность проекта требовала свести риск деплоя кода с багами до минимума. Для этого было решено использовать CI/CD подход, что, в свою очередь, требовало как можно большего процента покрытия кода проекта тестами, что было сделано с использованием PHP Unit. Также процесс CI/CD включает в себя проверку кода на дублирование и соответствие стандарту PSR-12. CI/CD был построен с использованием Pipeline от GitLab.

presentation two

iPhone

presentation three

iPad

presentation four

Apple TV

presentation five

Android Phones
& Tablets

presentation six

Android TV

presentation seven

Отказоустойчивость

Сервисом пользуются десятки тысяч человек по всему миру, поэтому было важно предусмотреть архитектуру, которая позволит свести вероятность отказов до минимума. После анализа возможных вариантов решения проблемы было решено построить архитектуру сервиса с использованием сервисов Amazon AWS.

Были использованы сервисы:

  • Lambda -> используется для облачных вычислений
  • RDS -> используется RDS cluster на основе движка AWS Aurora
  • Elastic Cache -> Redis cluster используется для кэширования данных
  • Cloud Watch -> сервис анализа логов
  • CloudFront -> сервис, позволяющий размещать контент ближе географически к его пользователям

Следующий проект