🔄 CI/CD: Краткий обзор
Continuous Integration/Continuous Delivery (непрерывная интеграция и доставка) — подход к разработке приложений, который обеспечивает автоматизацию процессов сборки, тестирования и доставки кода.
Код интегрируется и доставляется пользователю итерационно, как можно чаще. Ценность CI/CD кроется в автоматизации всех этапов интеграции и развёртывания кода.
💩CI — практика интеграции кода от разных разработчиков в общий репозиторий. Разработчики как можно чаще сливают изменения в основную ветку, используя систему контроля версий (например, Git). При этом, любые изменения проходят через автоматические тесты.
💩CD — автоматизация развёртывания (доставки) кода в "прод" после успешной интеграции и тестирования.
✔️ Этапы CI/CD
1️⃣ Код. Разработка создает код, исправляет ошибки или делает доработки, выполняет тесты, а затем отправляет в ветку master с актуальной сборкой продукта. Несколько команд могут отправить любое количество модулей в master.
2️⃣ Сборка. Старт автоматической сборки и авто-тестов. Критерии запуска системы управления версиями и начала сборки настраиваются заранее.
3️⃣ Тестирование. После авто-тестов выкатываемой версии проекта, можно приступать к ручной проверке.
4️⃣ Релиз. После успешных тестов, разработчики вносят исправления и выпускают новую версию продукта.
5️⃣ Развёртывание. Отправка финальной версия кода на боевой сервер. Взаимодействие пользователя с сервисом
6️⃣ Поддержка и мониторинг. Разработка мониторит работу продукта, отслеживая и анализируя пользовательский опыт.
7️⃣ Планирование. На основе мониторинга и анализа, формулируются идеи новых доработок и улучшений. Цикл начинается заново - написание кода.
Плюсы CI/CD
+ Сокращение времени поставки (Time to Market): автоматизация процессов позволяет быстрее и чаще доставлять новые функции и исправления.
+ Качество кода: автотесты обеспечивают высокое качество кода, а регулярные интеграции помогают выявлять проблемы на ранних этапах.
+ Легкость масштабирования: Автоматизированные процессы легко масштабируются с увеличением объемов работы.
+ Однородная среда разработки: все члены команды работают в однородной среде - упрощает совместную разработку.
Минусы CI/CD
— Сложность внедрения: Реализация CI/CD требует времени и усилий для внедрения в существующие процессы разработки. обслуживания. Сложные системы CI/CD могут требовать значительных ресурсов для обслуживания
— Трудность согласования изменений: в больших командах интеграция изменений может быть сложной.
— Безопасность: неправильная настройка CI/CD может стать источником уязвимостей.
— Не всегда применимо: когда проект слишком маленький или слишком сложный для автоматизации всех процессов.
🖥 Программы для CI/CD:
Jenkins: Один из самых популярных и распространенных инструментов для CI/CD.
GitLab CI/CD: Встроенная система CI/CD в GitLab, интегрированная с GitLab репозиториями.
Travis CI: Облачный сервис CI/CD, легко настраиваемый для проектов на GitHub.
CircleCI: Облачная CI/CD-платформа с широкими возможностями конфигурации.
TeamCity: Мощный и гибкий инструмент CI/CD от JetBrains.
⭐️ Подборки материалов по этой и другим темам доступны в базе знаний по системному анализу
#devops
Post #367
16.7K