Кейс: Миграция монолита в Kubernetes и настройка GitLab CI/CD
Миграция старого монолита в микросервисы
В этом кейсе я хочу рассказать, как мы взяли тяжелое legacy-приложение и перенесли его в современную облачную инфраструктуру.
🎯 Задача
Клиент обратился с проблемой: деплой новых фич занимал несколько часов, сервера регулярно падали от нагрузки, а разработчики боялись вносить изменения в код.
🛠 Что было сделано:
- Контейнеризация: Написал многоступенчатые
Dockerfileдля упаковки приложения. - Оркестрация: Развернул кластер Kubernetes (K8s) и написал Helm-чарты.
- CI/CD: Настроил пайплайн в GitLab. Теперь при пуше в ветку
mainавтоматически запускаются тесты, собирается образ и раскатывается в production без даунтайма (Zero-Downtime Deployment). - Мониторинг: Прикрутил Prometheus и Grafana для отслеживания метрик.
📈 Результат
- Время деплоя сократилось с 4 часов до 10 минут.
- Инфраструктура автоматически масштабируется при наплыве трафика.
- Аптайм приложения вырос до 99.99%.
# Пример куска нашего пайплайна:
deploy_production:
stage: deploy
image: dtzar/helm-kubectl
script:
- helm upgrade --install my-app ./helm-chart -f values.prod.yaml
only:
- main