January 27, 2023

Цели и задачи 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 применяется в более широких аспектах и сосредоточен вокруг:

  1. Организационных изменений: в частности, для поддержки более тесного сотрудничества между различными типами работников, занимающихся поставкой программного обеспечения;
  2. Разработчиков;
  3. Операций;
  4. Гарантии качества;
  5. Управления;
  6. Системного администрирования;
  7. Администрирования базы данных;
  8. Координаторов
  9. Автоматизации процессов в поставке программного обеспечения

Поскольку процессы девопс охватывают весь цикл поставки ПО, выделяют несколько основных целей этого подхода [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:

  1. master (главная) ветка: Эта ветка представляет собой стабильную и продакшн-готовую версию проекта. Все изменения, которые готовы к выпуску, объединяются сюда. Релизы создаются на основе master ветки.
  2. develop (разработка) ветка: Ветка develop является основной рабочей веткой, на которой разрабатывается новый функционал. Все новые функции и изменения объединяются с develop веткой.
  3. Feature (функциональные) ветки: Для каждой новой функции или задачи создаются отдельные ветки (feature branches). Эти ветки отходят от develop и используются для разработки конкретной функциональности. После завершения работы над функцией, она объединяется обратно с develop.
  4. Release (релизные) ветки: Когда весь планируемый функционал для следующего релиза готов, создается релизная ветка (release branch). На этой ветке выполняется финальное тестирование и подготовка к выпуску. После завершения релиза, он объединяется как с master, так и с develop ветками, и присваивается версия.
  5. Hotfix (горячие исправления) ветки: Если в процессе работы на master обнаруживаются критические ошибки, создается отдельная ветка (hotfix branch) для их исправления. После завершения исправлений, изменения объединяются как с master, так и с develop ветками.

Модель Gitflow обеспечивает структурированный и организованный подход к разработке, который позволяет легко управлять функциональностью, релизами и исправлениями ошибок. Это особенно полезно в больших проектах с множеством разработчиков и множеством параллельно выполняющихся задач.