Русский
Русский
English
Статистика
Реклама

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



Ориентироваться в 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
К списку статей
Опубликовано: 27.08.2020 16:05:58
0

Сейчас читают

Комментариев (0)
Имя
Электронная почта

Блог компании otus. онлайн-образование

Программирование

Ci/cd

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru