
В нашу компанию обратились разработчики приложения музыкальной сфере с просьбой автоматизировать процесс доставки кода.
Задачи клиента и проблематика
Требовалось автоматизировать доставку кода на среды: разработки, тестирования и продакт. Стек разработки компании - reactjs, nodejs, MYSQL.
При изучении текущей ИТ-инфраструктуры компании было выяснены следующие проблемы:
- доставка кода в среду разработки и продакт происходит с помощью ручных операций и ряда скриптов, что занимает большое количество времени и требует навыков и высокой концентрации при выполнении;
- количество сред разработки ограничено;
- продакт-среда масштабируется путем ручного добавления дополнительной виртуальной машины с pm, которую нужно настраивать вручную;
- отсутствие мониторинга ИТ-структуры;
- отсутствие единой системы сбора логов.
Как мы решили задачи клиента
Для создание новой ИТ-системы клиента, мы выбрали концепцию Infrastructure as a Code, которая бы позволила декларативно описать систему. За основу был выбран terraform и ansible.
Ключевыми технологиями в системе были выбраны:
- AWS fargate - для запуска контейнера с nodeJS.
- Jenkins - для автоматизации CI\CD.
- RDS.
- AWS Cloudfront - в качестве CDN.
Рисунок 1 - Схема внедренного решения
На рисунке выше представлена схема унифицированного окружения, которое создается по нажатию кнопки в Jenkins с помощью terraform. Мониторинг осуществляется встроенными средствами CloudWatch, а за хранение логов отвечает ElasticSerach.
Результат проекта
Внедрение указанной схемы позволило:
- автоматизировать сборку кода и в дальнейшем его тестирование;
- автоматизировать доставку кода в различные среды;
- автоматизировать развертывание среды разработки;
- контролировать продакт-среду и метрики функционирования приложения;
- получить доступ в удобном интерфейсе ко всем событиями и ошибкам системы;
- автоматически масштабировать систему вверх и вниз согласно метрикам приложения.
В результате проекта, клиент получил готовую систему для работы с возможностью самостоятельного управления средами. В процессе дальнейшего DevOps-сопровождения клиента будут обновляться используемые технологии и совершенствоваться процесс доставки деплоя кода.