[DevOps, Облачные сервисы] Семь паттернов пайплайнов непрерывной поставки (перевод)
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
Перевод статьи подготовлен в преддверии старта курса "DevOps практики и инструменты".Прямо сейчас у вас есть шанс успеть на курс по специальной цене. Узнать подробности.
В настоящее время гибкость бизнеса часто основана на гибкости кода. Возможность быстрых и безопасных релизов по требованию для современных цифровых продуктов и услуг является реальным конкурентным преимуществом.С 2004 года мы разрабатываем, собираем и развертываем пайплайны кода для автоматизации приложений и инфраструктур. В этой статье мы делимся семью паттернами, которые улучшают скорость, гибкость и качество, при одновременном повышении автономности, прозрачности и удобства обслуживания.Непрерывная поставкаНепрерывная поставка (Continuous Delivery) — это "возможность надежно и быстро поставлять изменения всех типов в руки пользователей". Если посмотреть на непрерывную поставку по матрице Agile vs Effort, то можно увидеть, что она находится прямо между непрерывной интеграцией и непрерывным развертыванием. Часто их вместе называют CI / CD.
В отчете о состоянии DevOps за 2019 год более 31 000 респондентов сообщили об эффективности своих процессов разработки и поставки. Но разница между лидерами и отстающими ошеломляет. У лидеров в 200 раз больше развертываний и в 100 раз выше скорость развертывания, а также в 2 600 раз быстрее восстановление после инцидентов и в 7 раз меньше вероятность отката релизов.Это исследование показывает, что для лидеров скорость и стабильность не противоположны! Вы можете получить и то и другое (на самом деле вам нужно и то и другое), чтобы получить реальные конкурентные преимущества для ваших цифровых продуктов и услуг.ПайплайныПайплайны (конвейеры) — это основные технические артефакты непрерывной поставки. Современные пайплайны преобразуют исходный код приложения и инфраструктуры в версионированные пакеты, которые можно разворачивать в любой среде. Автоматизируя все рутинные задачи по сборке и развертыванию систем, разработчики могут сосредоточиться на реализации действительно полезных фич.Хотя пайплайны кода существуют уже почти 20 лет — CruiseControl, один из наших первых любимцев, был выпущен в 2001 году, — они значительно эволюционировали за последние годы.Основываясь на нашем опыте и опыте наших клиентов, мы выделили семь паттернов пайплайнов, которые мы наблюдали во многих современных технологических компаниях.Паттерны пайплайновПаттерн 1 — пайплайны как кодЛогика пайплайна кодируется и хранится вместе с кодом приложения и инфраструктуры. Для выполнения пайплайнов используются контейнеры.
- Никаких настроек через графический интерфейс! Вся логика пайплайна управляется, как и любой другой код приложения, и подчиняется тем же стратегиям ветвления и ревью.
- Выполнение пайплайнов в контейнерах позволяет CI / CD - платформе поддерживать множество различных рабочих нагрузок, при этом каждая рабочая нагрузка может иметь свою собственную среду сборки для удовлетворения специфических требований.
- Для образов контейнеров сред сборки используются проверенные Docker-образы.
- Конфигурация CI runner автоматизированная, одинаковая и не требует ручной настройки. CI runner при необходимости могут масштабироваться и находиться в режиме ожидания для минимизации задержек.
- Секреты хранятся вне пайплайнов, а их вывод маскируется, что повышает безопасность.
Паттерн 2 — перенос логики в повторно используемые библиотекиОбщая логика пайплайнов выносится в повторно используемые библиотеки, на которые можно ссылаться из кода пайплайнов, а также независимо их разрабатывать и тестировать.
- Относитесь к пайплайн-библиотекам как к любому другому программному обеспечению. У них есть собственные репозитории, пайплайны, модульные тесты и релизы.
- По возможности для запуска внешних задач пайплайны используют специфичные для языка инструменты, такие как Make, Rake, npm, Maven и т.п. Для того чтобы упростить пайплайн и сохранить идентичность процесса локальной сборки и CI.
- Библиотеки легко найти и у них хорошая документацию.
Паттерн 3 — отдельные пайплайны для сборки и развертыванияПайплайны сборки и развертывания должны быть логически разделены, управляться и запускаться независимо. Должна быть возможность как автоматического, так и ручного запуска.
- Должна быть одна сборка и много развертываний. Сосредоточьтесь на сборке. В ее результате появляются артефакты, которые можно развернуть несколько раз.
- Будьте независимы от окружения. При отсутствии пакетов, специфичных для окружения, и вынесения параметров в переменные окружения, одна и та же сборка может работать в любой среде.
- Упакуйте всё вместе. Всё — весь исходный код, включая код инфраструктуры, должен храниться вместе, чтобы стать версионнированным пакетом.
Паттерн 4 — запуск правильного пайплайнаКоммиты в ветки, пул реквесты и слияние с основной веткой — всё это может инициировать различное поведение пайплайна, оптимизированное под конкретную команду.
- Открытие pull request'а создает эфемерную среду для тестирования.
- Слияния с основной веткой развертываются в не-продакшн или демо-среде, содержащей последний интегрированный код.
- Создание новых тэгов приводит к выпуску релиза.
Паттерн 5 — быстрая обратная связьКаждый коммит автоматически запускает определенный пайплайн. При этом пайплайны сборки специально оптимизированы для скорости и быстрого оповещения о возникающих проблемах.
- Пайплайны сборки используют распараллеливание для независимых друг от друга заданий с целью повышения производительности.
- Быстрые пайплайны сборки выполняют необходимые задания за несколько минут.
- Каждый успешный запуск завершается созданием версии пакета и результатами статического анализа.
- С помощью многоканальных уведомлений вы можете настроить оповещения о статусе пул реквестов на дашбордах, в чатах, по электронной почте и др.
Паттерн 6 — стабильные внутренние релизыРазвертываются только версионнированные пакеты, созданные пайплайном сборки. Эти развертывания запускаются вручную или автоматически по событиям.
- Каждая ветка кода получает полное эфемерное окружение, названное в соответствии с именем ветки, которое можно легко создать или уничтожить.
- Любой инженер может создать или удалить эфемерную среду.
- CI runners используют возможности cloud-native IAM с временными разрешениями, чтобы получить необходимые роли и разрешения для выполнения своей работы.
Паттерн 7 — история релизовРазверните тегированные релизы в продакшн, автоматизируйте отчетность и оставьте историю развертываний.
- "Релизный шлюз" (release gate) в виде кода и стандартизированные процессы релиза позволяют выпускать релизы по требованию.
- Автоматизированные релизы оставляют историю, которую можно проанализировать в дальнейшем.
- Release gate может вызывать внешние API и использовать ответ, чтобы решить продолжать релиз или остановить его.
ПроблемыМы все чаще встречаем эти семь паттернов пайплайнов и используем их при работе с клиентами. Но несмотря на то что они представляют собой огромный скачок вперед с точки зрения скорости и стабильности, они не лишены недостатков.Безопасность — это самая большая проблема, которую мы видим. Она связана со сложностью автоматизации процессов, которые традиционно были ориентированы на человека. Сложность пайплайнов, принятие командой, изменение в культуре и автоматизация баз данных — другие серьезные проблемы, над которыми нужно работать. Но это все решаемо, и мы ежедневно работаем над этим.ИтогГибкость бизнеса основана на гибкости кода. Для современных цифровых продуктов и сервисов возможность быстрого и безопасного релиза по требованию является реальным конкурентным преимуществом бизнеса. Пайплайны кода и, в частности, описанные семь паттернов могут помочь вашей организации сделать гигантский шаг вперед в скорости и стабильности релизов, а ваши команды будут работать на уровне лидеров.
Читать ещё:
===========
Источник:
habr.com
===========
===========
Автор оригинала: Chris Belyea
===========Похожие новости:
- [Виртуализация, Облачные сервисы, Kubernetes] Вебинар «Когда, кому и зачем переходить на Kubernetes со Swarm» 10 декабря от Mail.ru Group
- [DevOps] DevOps Minsk Panel Discussion состоится 25 ноября. Онлайн и для всех желающих
- [Конференции, DevOps] Обзор программы DevOops 2020 Piter: Патрик Дебуа и все-все-все
- [Сетевые технологии] Валидация данных (перевод)
- [Python, Программирование] Как сделать ваш код на Python быстрым и асинхронным с Sanic (перевод)
- [Разработка игр, Тестирование игр] Тестирование игр
- [Python, Программирование] Itertools в Python (перевод)
- [Программирование, Go] JSON с опциональными полями в Go (перевод)
- [Программирование, Разработка под iOS, Облачные сервисы] Интеграция CI/CD для нескольких сред с Jenkins и Fastlane. Часть 3 (перевод)
- [IT-инфраструктура, Облачные сервисы] Архитектура и стоимость простого бессерверного веб-приложения Amazon Web Services
Теги для поиска: #_devops, #_oblachnye_servisy (Облачные сервисы), #_devops, #_continuous_delivery, #_pipeline, #_continuous_integration, #_cicd, #_blog_kompanii_otus._onlajnobrazovanie (
Блог компании OTUS. Онлайн-образование
), #_devops, #_oblachnye_servisy (
Облачные сервисы
)
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 18:21
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
Перевод статьи подготовлен в преддверии старта курса "DevOps практики и инструменты".Прямо сейчас у вас есть шанс успеть на курс по специальной цене. Узнать подробности.
В отчете о состоянии DevOps за 2019 год более 31 000 респондентов сообщили об эффективности своих процессов разработки и поставки. Но разница между лидерами и отстающими ошеломляет. У лидеров в 200 раз больше развертываний и в 100 раз выше скорость развертывания, а также в 2 600 раз быстрее восстановление после инцидентов и в 7 раз меньше вероятность отката релизов.Это исследование показывает, что для лидеров скорость и стабильность не противоположны! Вы можете получить и то и другое (на самом деле вам нужно и то и другое), чтобы получить реальные конкурентные преимущества для ваших цифровых продуктов и услуг.ПайплайныПайплайны (конвейеры) — это основные технические артефакты непрерывной поставки. Современные пайплайны преобразуют исходный код приложения и инфраструктуры в версионированные пакеты, которые можно разворачивать в любой среде. Автоматизируя все рутинные задачи по сборке и развертыванию систем, разработчики могут сосредоточиться на реализации действительно полезных фич.Хотя пайплайны кода существуют уже почти 20 лет — CruiseControl, один из наших первых любимцев, был выпущен в 2001 году, — они значительно эволюционировали за последние годы.Основываясь на нашем опыте и опыте наших клиентов, мы выделили семь паттернов пайплайнов, которые мы наблюдали во многих современных технологических компаниях.Паттерны пайплайновПаттерн 1 — пайплайны как кодЛогика пайплайна кодируется и хранится вместе с кодом приложения и инфраструктуры. Для выполнения пайплайнов используются контейнеры.
=========== Источник: habr.com =========== =========== Автор оригинала: Chris Belyea ===========Похожие новости:
Блог компании OTUS. Онлайн-образование ), #_devops, #_oblachnye_servisy ( Облачные сервисы ) |
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 18:21
Часовой пояс: UTC + 5