Цели и задачи DevOps Отличия CI/CD/CD
Оглавление
DevOps-инженеры отвечают за обеспечение эффективной и безопасной работы систем, а также за устранение любых возникающих проблем. В их сфере обязанностей — автоматизация процессов, таких как развертывание инфраструктуры, приложений и резервное копирование.
- На этапе планирования DevOps-инженер помогает решить, какую архитектуру будет использовать приложение, как оно будет масштабироваться, выбрать систему оркестрации.
- Дальше настраивает сервера, автоматизированную проверку и заливку кода, проверку среды.
- Затем автоматизирует тестирование, решает задачи по деплою.
- После релиза важно собирать обратную связь от пользователей и внедрять улучшения. DevOps делает так, чтобы пользователи не замечали этих улучшений, а процесс обновления был непрерывным.
- И заодно решает десятки задач, которые помогают наладить систему работы разработчиков, QA, системных администраторов и менеджеров.
CI/CD — это набор практик, который помогает командам разработчиков быстрее и эффективнее выпускать новые версии программного обеспечения. Эти две аббревиатуры расшифровываются как Непрерывная Интеграция (Continuous Integration, CI) и Непрерывная Доставка/Развертывание (Continuous Delivery/Deployment, CD).
Непрерывная Интеграция (CI)
Представь, что в команде несколько разработчиков работают над разными частями одного и того же проекта. CI помогает им регулярно объединять изменения в общий проект, часто несколько раз в день. Каждое объединение автоматически проверяется: система запускает сборку проекта и тесты, чтобы убедиться, что новые изменения не сломали ничего в уже существующем коде. Это помогает быстро находить и исправлять ошибки, а также поддерживать высокое качество программного обеспечения.
Непрерывная Доставка/Развертывание (CD)
Как только изменения в коде проверены и готовы, они могут быть автоматически доставлены в тестовую или производственную среду — это и есть CD. Непрерывная доставка означает, что изменения всегда готовы к релизу; они могут быть выложены в продуктив на любом этапе с минимальными усилиями со стороны команды. Непрерывное развертывание идет еще дальше, автоматически выкатывая каждое изменение, прошедшее проверку, в продуктив.
Как это работает вместе
Итак, весь процесс CI/CD помогает команде разработки сохранять код в рабочем состоянии почти всё время. Разработчики могут быстрее добавлять новые фичи и исправлять баги, а также чаще и легче выпускать обновления программного обеспечения. Это уменьшает риски, связанные с развертыванием новых версий, и делает весь процесс разработки более предсказуемым и управляемым.
Проще говоря, CI/CD — это как конвейер в фабрике, который автоматизирует производство и доставку продукта от начала и до конца, делая весь процесс более быстрым, эффективным и надежным.
DevOps (акроним от англ. development & operations) — методология автоматизации технологических процессов сборки, настройки и развёртывания программного обеспечения.
Задача инженеров автоматизации технологических процессов сборки, настройки и развёртывания программного обеспечения (DevOps engineers) — сделать процессы разработки и поставки программного обеспечения согласованным с эксплуатацией, объединив их в единое целое с помощью инструментов автоматизации.
DevOps применяется в более широких аспектах и сосредоточен вокруг:
- Организационных изменений: в частности, для поддержки более тесного сотрудничества между различными типами работников, занимающихся поставкой программного обеспечения;
- Разработчиков;
- Операций;
- Гарантии качества;
- Управления;
- Системного администрирования;
- Администрирования базы данных;
- Координаторов
- Автоматизации процессов в поставке программного обеспечения
Поскольку процессы девопс охватывают весь цикл поставки ПО, выделяют несколько основных целей этого подхода [2]:
- сокращение времени для выхода на рынок;
- снижение частоты отказов новых релизов;
- сокращение времени выполнения исправлений;
- уменьшение количества времени на восстановления при сбое новой версии или других случаях отключения текущей системы.
Эти цели достигаются через решение следующих задач:
- согласование процессов разработки и поставки ПО с эксплуатацией;
- автоматизация процессов разработки, тестирования и развертывания;
- непрерывное тестирование качества приложений;
- управление ИТ-инфраструктурой как кодом;
- управление изменениями;
- непрерывный мониторинг производительности приложений и состояния инфраструктуры.
https://habr.com/ru/company/epam_systems/blog/465601/
CI/CD/CD
Проще говоря, CI/CD — это метод разработки приложений, при котором изменения кода в центральном репозитории производятся непрерывно, после чего автоматически выполняется сборка, тестирование и развертывание.
https://dzen.ru/a/YV_vAOzQHV9HA9Mo
CI (Continuous Integration) и CD (Continuous Deployment/Delivery) - это два разных подхода в процессе разработки ПО.
CI означает постоянную интеграцию изменений, внесенных разработчиками в общую ветку кода. Это включает в себя автоматизированные сборки, тестирование и анализ кода, которые проводятся непрерывно для обеспечения качества кода.
CD означает постоянный деплой и выпуск изменений в продакшен. Это включает в себя автоматизированный процесс деплоя изменений, которые проходят успешные тесты, в боевые среды.
В общем, CI является частью CD и предназначен для повышения качества кода, в то время как CD является более широким подходом к автоматизации всех этапов развертывания продукта.
Модель Gitflow
- это стратегия организации и управления рабочим процессом при работе с репозиториями Git. Она предоставляет набор правил и рекомендаций для работы с ветками в репозитории. Вот краткое описание модели Gitflow:
- master (главная) ветка: Эта ветка представляет собой стабильную и продакшн-готовую версию проекта. Все изменения, которые готовы к выпуску, объединяются сюда. Релизы создаются на основе master ветки.
- develop (разработка) ветка: Ветка develop является основной рабочей веткой, на которой разрабатывается новый функционал. Все новые функции и изменения объединяются с develop веткой.
- Feature (функциональные) ветки: Для каждой новой функции или задачи создаются отдельные ветки (feature branches). Эти ветки отходят от develop и используются для разработки конкретной функциональности. После завершения работы над функцией, она объединяется обратно с develop.
- Release (релизные) ветки: Когда весь планируемый функционал для следующего релиза готов, создается релизная ветка (release branch). На этой ветке выполняется финальное тестирование и подготовка к выпуску. После завершения релиза, он объединяется как с master, так и с develop ветками, и присваивается версия.
- Hotfix (горячие исправления) ветки: Если в процессе работы на master обнаруживаются критические ошибки, создается отдельная ветка (hotfix branch) для их исправления. После завершения исправлений, изменения объединяются как с master, так и с develop ветками.
Модель Gitflow обеспечивает структурированный и организованный подход к разработке, который позволяет легко управлять функциональностью, релизами и исправлениями ошибок. Это особенно полезно в больших проектах с множеством разработчиков и множеством параллельно выполняющихся задач.