Как стать автором
Обновить
942.18
OTUS
Цифровые навыки от ведущих экспертов

Зачем нужен CI/CD и как научиться его настраивать?

Время на прочтение4 мин
Количество просмотров6.1K


Ориентироваться в CI/CD полезно как инфраструктурным инженерам, так и разработчикам. Константин Брюханов, Lead DevSecOps, объяснил, что ценного дает эта методика и как на онлайн-курсе «CI/CD» студенты учатся настраивать ее процессы.

Привет! Начну с того, что расскажу о смысле использования CI/CD. Я могу выделить 5 причин:

1. Экономия времени благодаря переиспользованию кода и быстрому развертыванию проектов


Описав какой-то pipeline по доставке и развертыванию кода, его всегда можно переиспользовать. Например, у вас есть 5 проектов на Django, и вы в одном из них уже описали, как все должно разворачиваться и работать. Эти наработки можно взять и скопировать, автоматизировав остальные Django-проекты с небольшой переконфигурацией.

2. Получение ожидаемого результата от деплоя


Под ожидаемым результатом подразумевается, что если вы описали один раз инфраструктуру или какой-то процесс в виде кода, значит, каждый раз, когда вы будете выполнять какие-то процессы автоматического развертывания, они будут одинаковые. Вы всегда знаете, что получите в конце.

CI/CD позволяет предотвратить ситуации, когда сегодня у вас деплоилось одним способом, а завтра кто-то что-то у себя поправил, вы приходите, а все работает не так, и вам нужно разбираться почему. У вас появляется возможность гарантировать бизнесу, что процессы приведут именно к тому результату, который вы регламентируете.

3. Независимость проекта от окружения


Вспомните частую ситуацию, когда вы задеплоили код на сервер, у вас ничего не запускается, но разработчик говорит, что у него все работает. И вам приходится тратить время, чтобы выяснить, что на самом деле у него изменилась какая-нибудь зависимость, о которой он умолчал, например. Вам же приходится реверс-инжинирить и разбираться в ситуации.

В CI/CD все, что нужно для работы сервиса, уже идет вместе с ним. То есть вы кладете в контейнер ваш код, базы данных, зависимости и отдаете серверу. Все идет в одной сущности. Куда бы вы этот контейнер не передали, у него все есть для работы. Вам не надо тратить время, чтобы настроить окружение.

4. Иммутабельная инфраструктура и легкая миграция


Иммутабельность значит, что инфраструктура всегда находится в одном состоянии. У вас развернулся сервер, который запустил все нужные процессы, и любые изменения на этом сервере на нем не отражаются. Если вы перезапустите данный сервер и перевыполните процесс развертывания сервера, он вернется на исходную позицию. Невозможно внести и записать какие-то изменения в серверную инфраструктуру. Невозможно ему никак навредить.

А легкость миграции значит, что вам достаточно описать все один раз. И когда вам нужно, например, из одного дата центра развернуться в другом, вы просто меняете конечную точку, куда разворачиваться, и с легкостью переезжаете, разворачиваем тот же самый код без каких-либо дополнительных изменений.

5. Возможности подхода «Инфраструктура как код»


Это значит, что к инфраструктуре применимы все паттерны программирования и подходы, которые используются для кода.

Самое главное, это наличие полноценного версионирования, которое делается в коде, а не серверах. Это позволяет откатить при необходимости до прежней версии инфраструктуры. И столь же важная возможность тестировать инфраструктуру, то есть делать тестовое развертывание сервера, настройку, чтобы он не аффектил остальные сервера.

Резюмируя: что же такое CI/CD?


Концепция позволяет сократить time to market без потери нефункциональных требований: масштабируемость, отказоустойчивость, документация и т.д. Она состоит из 2-х вещей:

  • CI (Continuous Integration) позволяет максимально быстро интегрировать изменения кода в рабочую версию кода. Делать так, чтобы новый код попал в последний стабильный.
  • CD (Continuous Delivery / Deployment) позволяют не просто интегрировать функционал в рабочую версию кода, но и максимально быстро выводить на рынок новую рабочую версию кода. В зависимости от задач проекта это происходит или автоматически, или мы сами отправляем код по отточенным скриптам.

Отсюда очевидно, что недостаточно просто изучить технологии Gitlab CI, Doker, Ansible, terraform и т.д., на которых построен CI/CD. Поэтому на курсе мы особенно внимательно отнеслись к проработке практики. Проектная работа — завершительная часть обучения, где вам предстоит реализовать процессы CI/CD для любого opensource-проекта на ваш выбор. Последовательность действий студентов такая:

  • Проектируем CI/CD Workflow, Gitlab CI. То есть разрабатываем все ожидаемые стадии: сборка, тестирование, развертывание динамического окружения и т.д. Все это проектируется на схеме.
  • Имитируем некую компанию, представляем, что мы попали в некоторую фирму с рядом проектов. И берем несколько проектов, желательно на разном стеке. Например, один на Django. другой на Java и т.д.
  • Берем этапы CI/CD, которые мы спроектировали для каждого приложения, разбираем и оформляем каждый этап по элементам цепи CI. При этом смотрим, где мы можем для всех проектов использовать одинаковый кусок, для каких придется делать небольшие различия. Таким образом, комбинируем три проекта в рамках нашей общей разработанной схемы и для каждого рисуем его собственный путь.
  • Описываем все необходимые составляющие этих звеньев цепи: terraform-планы, Ansible-роли, плейбуки, Doker-файлы, правильно раскладываем по своим местам, версионируем.
  • Как конструктор собираем из этих описанных элементов реальный pipeline, который будет полностью обеспечивать жизнь продукта от и до.
  • Докручиваем поверх этого pipeline такие вещи, как алертинг в Слак и Телеграм, чтобы получать отчеты об ошибках и уведомления о начале и завершении деплоя.

Цель итоговой работы получить на выходе полностью готовое решение, приемлемое для бизнеса, которое можно добавить в портфолио и демонстрировать на собеседовании. Фактически, если вы приходите в компанию и говорите, что разработали с нуля для трех разных проектов универсальные решения — это серьезный аргумент, чтобы получить должность.

Занятия начинаются с 27 августа, но присоединиться к группе вы можете в течение двух недель после старта. Курс рассчитан на специалистов с опытом разработки и эксплуатации, для обучения вам потребуется пройти вступительный тест. Жду всех, кто решил освоить эту полезную технологию для своих проектов и карьерного роста. До встречи в OTUS!
Теги:
Хабы:
Всего голосов 12: ↑6 и ↓60
Комментарии2

Публикации

Информация

Сайт
otus.ru
Дата регистрации
Дата основания
Численность
101–200 человек
Местоположение
Россия
Представитель
OTUS