Создание CI/CD-конвейера с нуля для медицинского портала: от ручного развертывания к автоматизации за 11 недель
Медицинский портал с аудиторией в несколько сотен тысяч пользователей не мог быстро обновляться: каждый деплой был ручным, рискованным и занимал несколько часов.
Мы выстроили процесс, который это изменил. Создали с нуля и автоматизировали полный CI/CD-конвейер для высоконагруженного мультиязычного веб-приложения. Построили инфраструктуру, которая ускорила разработку в 3 раза, обеспечила стабильность продакшена и позволила команде безопасно тестировать гипотезы в изолированных средах.
Клиент
Онлайн-сервис с актуальной медицинской информацией для широкой аудитории.
Задача
Требовалось запустить с нуля весь процесс сборки и развертывания, автоматизировать его, создать дополнительные среды помимо Production.
Основная цель – ускорить процесс разработки и развертывания фич в промышленной эксплуатации.
Бизнес-задачи
-
Увеличить скорость вывода новых функций и обновлений на рынок.
-
Минимизировать риски и простои при обновлении продакшн-среды.
-
Создать технологический фундамент для быстрого масштабирования сервиса и команды разработки.
Технические задачи
-
Полностью автоматизировать процесс деплоя, исключив ручные ошибки.
-
Организовать изолированные среды DEV, TEST, PROD с идентичной конфигурацией.
-
Настроить отказоустойчивый и масштабируемый пайплайн для стека технологий (PHP/Laravel, Java, Node.js).
Решение
Внедрение GitLab CI/CD в связке с подходом Infrastructure as Code позволяет оптимизировать управление инфраструктурой: все настройки серверов и рабочих окружений хранятся в виде кода, а процесс их развёртывания полностью автоматизирован.
Это значит, что мы можем в любой момент воссоздать нужную конфигурацию, видим историю всех изменений, и вся команда понимает, как устроена система. Автоматизация, повторяемость, прозрачность и контроль версий — ключевые преимущества такого подхода.
Выбор GitLab CI (инструмент для автоматической сборки, тестирования и развертывания кода) был обусловлен его обширным функционалом, который оптимально подходит для небольших команд.
Инструмент Terraform для управления облачной инфраструктурой Yandex Cloud обеспечил скорость создания идентичных сред и снизил операционные риски.
Платформа Docker стала стандартом для контейнеризации разнородных компонентов приложения.
Этапы, сроки и инструменты
-
Анализ и проектирование пайплайна (2 недели). Изучение архитектуры приложения, согласование рабочего процесса команды. Инструменты: GitLab, Terraform, Docker.
-
Инфраструктура как код (3 недели). Вся облачная инфраструктура — сети, балансировщики нагрузки, вычислительные мощности для тестовой, разработочной и рабочей сред — описали в виде кода. Это позволяет, например, по запросу разворачивать полноценную тестовую среду всего за 15 минут, а когда она больше не нужна — так же быстро ее удалять.
-
Разработка CI/CD-пайплайна (4 недели). Настройка GitLab CI для мультиязычного стека:
-
для PHP/Laravel: сборка, статический анализ, прогон юнит-тестов;
-
для Java: сборка с помощью Maven, прогон юнит-тестов, создание артефактов;
-
для Node.js: сборка с помощью npm;
-
общий этап: сборка Docker-образов, интеграционное тестирование, деплой в целевые среды; всего создано более 20 задач в пайплайне.
- Внедрение workflow и обучение (2 недели). Настройка ветвления Git, внедрение процесса: Merge Request → сборка → деплой в TEST → тестирование аналитиком → деплой в PROD. Обучение команды.
Результат
Мы создали все необходимые изолированные рабочие пространства — для первичной проверки идей и для полноценного тестирования. Настроили автоматическую передачу обновлений сначала на проверку, затем на тестирование аналитиками, а потом уже в реальную работу системы. Благодаря этому выстроился четкий и понятный порядок внедрения новых возможностей: от проверки гипотезы в безопасной песочнице до её появления у конечных пользователей.
-
С нуля создан полный CI/CD-конвейер, покрывающий 100% процесса разработки и деплоя.
-
Развернуты и автоматизированы 3 независимые среды (DEV, TEST, PROD) с идентичной конфигурацией.
-
Внедрен эффективный рабочий процесс, где каждая функциональность проходит путь от кода до продакшена через четкие этапы проверки.
-
Инфраструктура полностью описана кодом, что обеспечивает её воспроизводимость и простоту аудита.
Бизнес-эффект
Благодаря выстроенному и автоматизированному процессу сборки и развертывания, удалось значительно ускорить развитие веб-портала.
-
Новые возможности и доработки стали выходить в три раза быстрее, чем раньше. Раньше деплой занимал 2-3 часа и делался вручную раз в неделю. После внедрения — 15-20 минут, полностью автоматически, несколько раз в день.
-
Повышение стабильности и качества продукта. Ежедневно в среде TEST прогонялось в среднем 50 автоматических сборок, что позволяло выявлять и исправлять ошибки до попадания к пользователям. Количество инцидентов в PROD, связанных с деплоем, сократилось до нуля. Иными словами при обновлениях в работающей системе больше не возникает сбоев и проблем — ни одного инцидента с момента внедрения.
-
Масштабируемость процесса. К проекту смогли безопасно и быстро подключаться новые разработчики, такую же инфраструктуру стало возможно тиражировать для новых сервисов.
-
Высвобождение командных ресурсов. Разработчики и DevOps-инженеры перестали тратить время на рутинный деплой и сосредоточились на развитии продукта.
Трудности
Главной трудностью было заставить работать вместе разрозненные части системы, написанные на разных технологиях (PHP, Java, Node.js), и объединить их в один четкий и быстрый процесс поставки обновлений.
Решение потребовало создания кастомных Docker-образов-сборщиков и оптимизации этапов для избежания дублирования.
Мы разработали специальные универсальные сборщики и перестроили процесс так, чтобы исключить лишние повторяющиеся операции.
Вторым вызовом была настройка корректной работы с окружениями (Environment) для разных сред, что было решено с помощью имеющегося в GitLab-функционала.
Технологии
GitLab, Docker, Terraform, Yandex Cloud, PHP, Laravel, Nginx, Java, Maven, Node.js, npm.