
В нашу компанию обратились разработчики приложения в сфере интернет-продаж с просьбой автоматизировать процесс доставки кода на несколько сред разработки и тестирования. Стек разработки компании: php, go, PostgresSQL, Kafka, Redis. В процессе общения с заказчиком, выяснилось, что также будет добавляться preprod и prod-среда.
Задачи клиента
Поскольку ИТ-система будет создаваться с нуля, перед нами были поставлены следующие задачи:
- должна быть автоматизирована доставка кода в dev-среды;
- ИТ-структура должна быть масштабируемой и управляемой;
- мониторинг элементов ИТ-структуры;
- наличие системы логирования как приложений, так и составных частей системы;
- SLA сред разработки должна быть не менее 98%.
Как мы решили задачи клиента
Для создания новой ИТ-системы для клиента мы выбрали концепцию Infrastructure as a Code, которая бы позволила декларативно описать систему. За основу был выбран terraform. В качестве облачного провайдера клиент выбрал Yandex.Cloud. Ключевыми технологиями в системе были выбраны:
- Managed Kubernetes;
- ISTIO;
- Gitlab CI (для автоматизации CI\CD);
- RDS PostgreSQL;
- loadbalacing (ALB);
- Distributed Message Service for Kafka;
- Distributed Cache Service (Redis);
- KeyCloak;
- Zookeper;
- Minio.
На рисунке ниже представлена схема унифицированного окружения, которое создается по нажатию кнопки в GitlabCi с помощью terraform. Мониторинг осуществляется встроенными средствами Prometheus, а также Zabbix, а за хранение логов ответственный Elasticsearch.
Рисунок 1 — Схема решения
Результат проекта
Внедрение указанной схемы позволило:
- автоматизировать сборку кода и в дальнейшем его тестирование;
- автоматизировать доставку кода в различные среды разработки и тестирования;
- автоматизировать развертывание среды разработки;
- возможность быстро создавать и масштабировать среды разработки и в дальнейшем preprod и prod среды;
- получить доступ в удобном интерфейсе ко всем событиями и ошибкам системы;
- автоматически масштабировать систему вверх и вниз согласно метрикам приложения.
В результате проекта, клиент получил готовую систему для работы с возможностью самостоятельного управления средами. В процессе дальнейшего DevOps-обслуживания будут обновляться используемые технологии и совершенствоваться процесс доставки кода.