EFSOL внедрила высоконагруженную инфраструктуру для соцпроекта

28.02.2023
В EFSOL обратилась команда разработчиков социального онлайн-проекта с задачей спроектировать и развернуть необходимую ИТ-инфраструктуру и автоматизировать процессы разработки и выпуска обновлений программного продукта.

Основное требование клиента состояло в том, чтобы готовая инфраструктура проекта могла выдержать относительно высокую нагрузку, включая кратковременные пики, когда онлайн-проект посещают 100 000 пользователей и более.

Реализация проекта

Для реализации проекта была выбрана площадка "Яндекс.Облако".

На первом этапе были изучены вводные данные и требования клиента, согласно которым инфраструктура проекта должна быть отказоустойчивой и выдерживать целевой показатель RPS. Для автоматизации процессов разработки требовалось построить CI/CD с необходимыми шагами, учитывающими специфику проекта.

Приложение проекта было контейнеризировано и развернуто в масштабируемом кластере k8s. База данных расположена в кластере MySQL, а для ускорения обращений к СУБД используется Redis. Пользовательские медиа-файлы располагаются в S3 в соответствующих бакетах. Единой точкой входа выступает ALB.

Реализованы управляемые среды dev, test, prod. Для построения CI/CD был использован GitLab от Яндекс.Облака с настроенным автоматическим тестированием кода приложения. Для обновления базы данных создана схема миграции, учитывающая сверку данных.

На этапе подбора prod-конфигурации, для поиска возможных узких мест и обеспечения целевого RPS, было проведено нагрузочное тестирование с помощью locust по подготовленным сценариям. По итогу, это позволило спланировать инфраструктурный резерв и подобрать оптимальную prod-конфигурацию.

Каждый из основных компонентов инфраструктуры расположен в 3 независимых геозонах Яндекс.Облако для обеспечения отказоустойчивости сервисов.

В итоговой схеме использовался следующий набор инфраструктурных компонентов: Yandex Managed Service for Kubernetes, Yandex Managed Service for MySQL, Yandex Managed Service for Redis, Yandex Object Storage, Yandex Application Load Balancer, Yandex Cloud CDN, Yandex Managed Service for GitLab, Yandex Container Registry, Yandex DDoS Protection, Managed Web Application Firewall, Yandex Monitoring.

Результат проекта

  • Реализована отказоустойчивая инфраструктура, выдерживающая целевое значение RPS с запасом.
  • Разработчики выпускают обновления через CI/CD, что позволило повысить скорость выпуска обновлений, улучшить качество выпускаемого кода, быстрее отлавливать ошибки и оперативнее вносить исправления.
  • Улучшено взаимодействие между командой разработки и эксплуатации.

Похожие статьи