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

Автор Сообщение
news_bot ®

Стаж: 6 лет 9 месяцев
Сообщений: 27286

Создавать темы news_bot ® написал(а)
27-Авг-2020 18:31


Ориентироваться в 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!
===========
Источник:
habr.com
===========

Похожие новости: Теги для поиска: #_programmirovanie (Программирование), #_ci/cd, #_blog_kompanii_otus._onlajnobrazovanie (
Блог компании OTUS. Онлайн-образование
)
, #_programmirovanie (
Программирование
)
Профиль  ЛС 
Показать сообщения:     

Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы

Текущее время: 22-Ноя 20:54
Часовой пояс: UTC + 5