[Программирование] Зачем нужен CI/CD и как научиться его настраивать?
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
Ориентироваться в 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
===========
Похожие новости:
- [Ненормальное программирование, Программирование, Совершенный код] Dark code-style academy: spoil if statement
- [Программирование, Хакатоны] Запускаем двухнедельный хакатон «Вездекод»
- [Программирование, Angular, TypeScript] i18n в Angular
- [Разработка веб-сайтов, JavaScript, Программирование, Node.JS] Руководство по Express.js. Часть 1 (перевод)
- [.NET, ASP, C#] Сжатие ответов в GRPC для ASP.NET CORE 3.0 (перевод)
- [Apache, Data Engineering] Обзор нового UI для Structured Streaming в Apache Spark™ 3.0 (перевод)
- [Высокая производительность, Программирование, Анализ и проектирование систем, Промышленное программирование] Проблематика распределенных транзакций в контексте микросервисной архитектуры
- [Программирование, C++, Программирование микроконтроллеров] Светодиод, таймер и прерывания на RISC-V с нуля (на примере GD32VF103 и IAR C++)
- [Разработка веб-сайтов, JavaScript, Программирование] Изучаем Parcel — альтернативу Webpack для небольших проектов
- [Qt, Программирование микроконтроллеров] Обзор возможностей Qt Creator 4.13 и QBS 1.17 для программирования микроконтроллеров
Теги для поиска: #_programmirovanie (Программирование), #_ci/cd, #_blog_kompanii_otus._onlajnobrazovanie (
Блог компании OTUS. Онлайн-образование
), #_programmirovanie (
Программирование
)
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 20:54
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
Ориентироваться в 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-х вещей:
Отсюда очевидно, что недостаточно просто изучить технологии Gitlab CI, Doker, Ansible, terraform и т.д., на которых построен CI/CD. Поэтому на курсе мы особенно внимательно отнеслись к проработке практики. Проектная работа — завершительная часть обучения, где вам предстоит реализовать процессы CI/CD для любого opensource-проекта на ваш выбор. Последовательность действий студентов такая:
Цель итоговой работы получить на выходе полностью готовое решение, приемлемое для бизнеса, которое можно добавить в портфолио и демонстрировать на собеседовании. Фактически, если вы приходите в компанию и говорите, что разработали с нуля для трех разных проектов универсальные решения — это серьезный аргумент, чтобы получить должность. Занятия начинаются с 27 августа, но присоединиться к группе вы можете в течение двух недель после старта. Курс рассчитан на специалистов с опытом разработки и эксплуатации, для обучения вам потребуется пройти вступительный тест. Жду всех, кто решил освоить эту полезную технологию для своих проектов и карьерного роста. До встречи в OTUS! =========== Источник: habr.com =========== Похожие новости:
Блог компании OTUS. Онлайн-образование ), #_programmirovanie ( Программирование ) |
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 20:54
Часовой пояс: UTC + 5