Ответ
Моим последним проектом была миграция legacy-монолита на микросервисную архитектуру с полным перестроением CI/CD и внедрением GitOps-практик для платформы SaaS.
Цель: Повысить частоту релизов с одного в месяц до нескольких в день и улучшить отказоустойчивость.
Что было сделано:
- Инфраструктура как код (IaC): Перенесли всю инфраструктуру с ручных серверов в AWS, описав её на Terraform (VPC, EKS, RDS, S3).
- Платформа Kubernetes: Развернули и сконфигурировали Amazon EKS кластер. Настроили Ingress-контроллер (nginx), ExternalDNS, Cert-manager для автоматического получения SSL-сертификатов.
- CI/CD Pipeline: Построили пайплайны в GitLab CI.
- Сборка: Многоэтапные Docker-сборки, сканирование образов на уязвимости (Trivy).
- Тестирование: Запуск юнит- и интеграционных тестов в изолированном окружении.
- Деплой: Использовали Helm для управления релизами. Для production-окружения внедрили ArgoCD по GitOps-модели. Состояние желаемого деплоя (Helm-чарты, параметры) хранилось в Git-репозитории, ArgoCD автоматически синхронизировал кластер с этим состоянием.
- Мониторинг и логирование: Развернули стэк Prometheus/Grafana для метрик и Loki/Promtail/Grafana для логов. Настроили алерты в Alertmanager.
Результат: Время развертывания нового сервиса сократилось с недели до нескольких часов. Частота релизов выросла в 20 раз. Откаты стали выполняться одной командой git revert благодаря ArgoCD.