5 000 000
Информационные технологии и интернет
Апрель 2026
E-commerce сервису нужна была стабильная инфраструктура для нескольких окружений: test, preprod и production. Релизы требовалось сделать повторяемыми, без зависимости от ручной последовательности действий. Также нужно было настроить мониторинг, логи, алерты и нормальную эксплуатацию production.
Проект связан с e-commerce сервисом в фармацевтической нише. Сервису требовалась стабильная инфраструктура для разработки, тестирования и production эксплуатации. В контуре были backend приложения, базы данных, очереди, stateful компоненты, сетевой слой, логирование, мониторинг и CI/CD.
Основная задача была не просто запустить Kubernetes, а собрать рабочий production контур, где команда может безопасно выпускать изменения, видеть состояние сервисов и быстрее разбирать инциденты.
Задача
На старте нужно было подготовить инфраструктуру для нескольких окружений: test, preprod и production.
Перед командой стояли следующие задачи:
- разделить окружения и сделать их понятными для разработки, тестирования и релизов;
- настроить Kubernetes кластеры под эксплуатацию сервисов;
- организовать CI/CD процесс под существующую разработку;
- автоматизировать развертывание приложений и инфраструктурных компонентов;
- подключить мониторинг, логи и алерты для production;
- подготовить эксплуатационный контур для backend сервисов, баз данных, очередей и сетевых компонентов;
- снизить зависимость релизов от ручных действий инженеров.
Этапы работ
1. Анализ текущего контура
Сначала разобрали текущую схему приложения, окружения, зависимости между сервисами и требования к релизному процессу. Отдельно посмотрели, какие компоненты должны работать в test, preprod и production, где нужны разные настройки, а где можно использовать общий подход.
На этом этапе зафиксировали:
- состав сервисов;
- требования к окружениям;
- зависимости приложений;
- требования к базам данных и очередям;
- особенности сетевого слоя;
- требования к логам, метрикам и алертам;
- порядок выкладки изменений.
2. Проектирование инфраструктуры
После анализа подготовили технический план реализации. Определили, как будут устроены Kubernetes окружения, какие компоненты нужны для эксплуатации и как будет проходить релиз.
В план вошли:
- структура Kubernetes кластеров;
- разделение test, preprod и production;
- подход к деплою приложений;
- использование Helm для управления Kubernetes манифестами;
- автоматизация через Ansible playbooks;
- CI/CD процесс через Bamboo;
- подключение мониторинга и логирования;
- работа со stateful компонентами.
3. Настройка Kubernetes окружений
Настроили Kubernetes кластеры для разных сред. Подготовили базовые компоненты, сетевые настройки и эксплуатационную структуру для запуска приложений.
В работу вошли:
- подготовка Kubernetes окружений;
- настройка namespace и базовой структуры;
- подготовка деплоя приложений;
- настройка Helm charts;
- подключение Nginx и сетевого слоя;
- подготовка конфигураций для разных окружений;
- проверка запуска сервисов в test, preprod и production.
4. Настройка CI/CD
Релизный процесс собрали через Bamboo и Ansible. Цель была сделать выкладку повторяемой, чтобы релиз не зависел от ручной последовательности команд.
Что было сделано:
- настроены Bamboo pipelines;
- подготовлены Ansible playbooks для автоматизации развертывания;
- добавлены шаги сборки и выкладки;
- разделены сценарии для разных окружений;
- подготовлены параметры деплоя для test, preprod и production;
- настроена работа с Bitbucket;
- снижено количество ручных действий при релизе.
5. Мониторинг, логи и алерты
Для production эксплуатации подключили стек наблюдаемости. Команде нужно было видеть не только состояние серверов, но и поведение приложений, ошибки, логи и деградацию отдельных компонентов.
Подключили и настроили:
- Prometheus для сбора метрик;
- Grafana для дашбордов;
- Alertmanager для алертов;
- Kibana для анализа логов;
- Loki для централизованного сбора логов;
- базовые алерты по состоянию сервисов и инфраструктуры;
- дашборды для контроля приложений и Kubernetes компонентов.
6. Работа со stateful компонентами
Отдельное внимание уделили компонентам, где важны данные и восстановление. В контуре использовались Redis, PostgreSQL, Stolon, NFS/Linstor и сетевые зависимости.
Проверили и подготовили:
- размещение stateful компонентов;
- особенности работы PostgreSQL и Stolon;
- работу Redis;
- сетевые зависимости;
- хранение данных;
- требования к backup и restore;
- поведение компонентов при сбоях;
- эксплуатационные риски для production.
Решение
В результате был собран Kubernetes контур для нескольких окружений с автоматизированным релизным процессом и базовой observability системой.
Решение включало:
- Kubernetes окружения для test, preprod и production;
- CI/CD процесс на Bamboo;
- Ansible playbooks для повторяемого развертывания;
- Helm для управления конфигурациями приложений;
- интеграцию с Bitbucket;
- мониторинг на Prometheus и Grafana;
- логирование через Kibana и Loki;
- алерты через Alertmanager;
- поддержку Redis, PostgreSQL, Stolon, NFS/Linstor;
- настройку сетевого слоя через Nginx;
- эксплуатационные артефакты для команды.
Релизы стали проходить через понятный процесс: сборка, подготовка окружения, выкладка, проверка состояния сервисов и контроль через мониторинг. Команда получила единый подход к работе с разными средами и production.
После выполнения работ сервис получил управляемую инфраструктуру для полного релизного цикла.
Что изменилось для команды:
- test, preprod и production стали разделены и понятны;
- релизы стали воспроизводимыми;
- уменьшилась зависимость от ручных действий;
- команда получила CI/CD процесс под свой рабочий цикл;
- появились дашборды, метрики, логи и алерты;
- стало проще разбирать ошибки приложений и инфраструктуры;
- production поддержка стала более предсказуемой;
- stateful компоненты получили отдельное внимание в эксплуатации;
- команда стала быстрее понимать, где возникла проблема: в приложении, базе данных, очереди, сети или инфраструктуре.
Технический стек
- Kubernetes
- Docker
- Bamboo
- Bitbucket
- Ansible
- Helm
- Prometheus
- Grafana
- Kibana
- Loki
- Alertmanager
- Redis
- PostgreSQL
- Stolon
- Selectel
- Nginx
- NFS/Linstor