Мы все хотим ежедневно отправлять код.
Как разработчики, мы хотим, чтобы более быстрый цикл обратной связи, который поставляется с непрерывной доставкой, и мы знаем, что в долгосрочной перспективе это лучше для нашей команды и продукта. Так почему же так много команд разработчиков все еще имеют такие длинные циклы выпуска?
В то время как длительные циклы выброса опробованы и верны и могут рассматриваться как более стабильные, команды жертвуют гораздо больше, чем более быстрые циклы обратной связи.
Разбейте привычку медленных выпусков
Когда компания находится в зачаточном состоянии, ей необходимо создать много процессов, одним из которых является цикл выпуска, который она хочет реализовать. Хотя этот процесс может созревать с течением времени и может быть улучшен, чаще всего он обычно остается таким же, как и новые обновления. Годы могут пройти, а циклы выпуска остаются прежними.
Исторически более длительные циклы выпуска были статус -кво — следовать методологии водопада, будут знакомы с этим. Но с ростом гибких практик больше программных групп отрывается от более длинных циклов и заменяет их более короткими, постепенными альтернативами.
Более длительные циклы выпуска имеют свои сильные стороны; Они хорошо проверены, предсказуемы и стабильны. Но эти преимущества стоят за счет. Благодаря более длительным циклам выпуска команды могут выпускать большие обновления достойных прессы, которые могут оставить большие впечатления от клиентов, потенциальных клиентов и конкурентов. Тем не менее, многие стартапы могут превзойти своих более крупных конкурентов, приняв более короткие циклы выпуска, что позволяет им быстро двигаться, реагировать на изменения и сосредоточиться на инновациях.
Выбирая не адаптировать и оставлять свои более длительные циклы выпуска в стагнацию, вы даете своему конкуренту возможность одержать верх.
Пришло время разорвать привычку, используя непрерывную доставку.
Преимущества непрерывной доставки
Непрерывная доставка приходит со многими преимуществами для всех областей вашей организации; Как разработчик программного обеспечения, я перечислил свою пятерку лучших, которые оказывают наибольшее влияние на ежедневной основе ниже:
1. Более короткое время решения проблемы
При написании программного обеспечения всегда существует риск, что новая функция или функциональность, которую вы создали, будут вводить ошибки в вашем приложении или веб -сайте. Более короткие циклы высвобождения, облегчайте вам реагировать и решать проблемы, когда они возникают.
2. Сосредоточьтесь на инновациях
Более короткие циклы выпуска также позволяют вам выпустить новые функции клиентам, как только они будут готовы. В зависимости от вашего метода доставки, это означает, что вы можете перейти от концептуальной стадии идеи для доставки в течение нескольких недель.
3. Отзывчивость на рынке
Рыночные условия постоянно меняются. Если вы только что обнаружили, что новый продукт теряет деньги, или что больше клиентов посещают ваш сайт с смартфонов, чем ноутбуки, гораздо проще внести быстрые изменения, если вы уже практикуете непрерывную доставку.
4. Более быстрая обратная связь
Выпуск новых функций рано и часто означает, что вы получаете более частую обратную связь, давая вам возможность итерации и учиться у ваших клиентов. Это гарантирует, что вы определяете приоритет правильной работы, которая сделает ваших клиентов счастливыми.
5. Разработчик Qol
Непрерывная доставка означает, что ответственность за развертывание широко распространяется вокруг организации. Выпуск меньших, постепенных развертываний в вашем программном обеспечении помогает смягчить стресс, который может исходить от одного или двух человек, необходимых для развертывания огромной работы.
Лучше всего, что успешный релиз становится общим успехом среди заинтересованных сторон — один из которых вы можете отпраздновать вместе.
Здесь, в Raygun, мы отпраздновали релиз нашего Новый инструмент мониторинга производительности приложения С пиццерией! Это была прекрасная возможность поздравить всех, кто участвовал в проекте, и, как, кто не любит пиццу?! 🍕
Рабочий процесс CI/CD Raygun
Создание конвейера CI/CD требует, чтобы команды разработки, тестирования и операций работали вместе, чтобы создать процесс сплоченного выпуска — и ключ — Автоматизация Анкет
В Raygun мы используем ряд различных инструментов и процессов, чтобы обеспечить плавное развертывание и минимизировать воздействие, а также возможность быстро двигаться и часто развертываться.
Используя этот процесс, в прошлом году мы смогли сделать более 365 выпусков в различных областях нашего продукта. Это одно развертывание каждый день! На рисунке ниже показан наш рабочий процесс.
Где начинается процесс Рэйгуна
Отслеживание проблем и проектов
Во -первых, прежде чем мы сможем начать все развертывание, нам нужно знать, какие работы мы собираемся завершить. Наличие инструмента отслеживания проблем позволяет легко создавать, управлять и расставлять приоритеты в предметах работы, чтобы дать вам полный обзор текущей дорожной карты и того, что будет.
В Raygun мы используем Инструмент Jira от Atlassian — Это обеспечивает уровень гранулярности, который нам требуется, и делает расщепляющие куски работы на ветерок.
Есть и другие отличные решения, поэтому стоит проверить их для себя и выбрать их, которые наилучшим образом соответствуют вашим потребностям.
Возможные альтернативы (есть много других):
Разработка
Как только мы узнаем, над чем мы будем работать, нам нужна подходящая IDE для выполнения работы. В зависимости от того, какие языки и структуры, ваш проект использует требования, необходимые от IDE, могут отличаться.
Выбор IDE зависит от предпочтения разработчика, но я предпочитаю использовать Райдер При работе в приложении и Против кода При работе в других областях нашего продукта.
Контроль версий
Работая в команде, наличие хорошего контроля источника является обязательной. Это позволяет командам просматривать исторические изменения, внесенные в кодовую базу, определяет, кто внес эти изменения и позволяет разработчикам возможность работать параллельно на одних и тех же файлах.
Git стал основным игроком в пространстве контроля версий. Что касается хостинга, существует множество решений для управления версиями, но мы используем GitHub Анкет
Когда мы готовы к объединению и развернутую нашу работу, мы поднимаем наш код в GitHub и создаем запрос на тягу. Затем это пересматривает сверстников и после одобрения, объединено.
Возможные альтернативы:
Управление сборкой
Управление сборкой является первой частью трубопровода CI/CD, где мы можем ввести автоматизацию. На этом этапе процесса мы можем настроить триггеры, чтобы инициировать сборку, когда кто -то подталкивает код до репозитория GitHub. Вы можете настроить свой скрипт сборки для выполнения необходимых задач для создания вашего приложения и запуска различных интеграционных тестов на обновленной сборке.
Как только сборка завершится и все тесты закончились, у нас теперь будет пройденная или неудачная сборка. При желании вы можете автоматически опубликовать его в службу уведомлений, такую как Slack.
Запуск этого каждый раз, когда кто -то толкает код, приносит два основных преимущества:
- Легко узнать, непреднамеренно повлияли на другую часть применения, вызывающую неожиданное или нарушенное поведение.
- У вас всегда есть сборка, готовая к развертыванию для тестирования или выпуска, не нуждаясь в ничего.
Мы используем TeamCity Как наш сервер управления сборкой и написать наши тесты, используя NUNIT и Шутка Анкет
Возможные альтернативы команде:
Альтернативы для инструментов тестирования зависит от вашего технологического стека и требований.
Развертывание
Прошли дни ручного развертывания (Ну, до определенной степени) Анкет Автоматизация процесса развертывания может серьезно уменьшить сложность выпуска и гарантировать, что определенные процессы соблюдаются точно. Используя такой инструмент, как Осьминог развертывания , мы можем создавать релизы на щелчке кнопки.
Мы можем регистрировать информацию вокруг каждого выпуска, просмотреть панель инструментов того, какие выпуски были развернуты, для каких сред и исторического развертывания для каждого проекта, который вы создаете.
Самое приятное — если вам нужно было вернуться к предыдущему стабильному релизу по какой -либо причине, это так же просто, как выбор одного из релизов из истории и ударить развертывание.
Это не все машины, мы хотим, чтобы люди тоже были вовлечены.
Мы намеренно удаляем часть автоматизации из этой части процесса, чтобы мы могли смягчить некоторые из рисков, которые сопровождаются моделью непрерывной доставки.
Мы автоматизировали все вплоть до того, чтобы нажать кнопку развертывания, это потому, что мы хотим, чтобы человек контролировал это. Требование за разработчика, ответственного за изменения их работы, приносит много преимуществ в процесс развертывания.
Поскольку они более вовлечены в этот процесс, они увидят, что их изменения идут вживую и становятся первыми, кто проверяет его в бета -версии или производственной среде.
Возможные альтернативы осьминогам:
Оповещения
После развертывания часто трудно получить видимость по любым вопросам, с которыми сталкиваются ваши пользователи. Использование инструмента мониторинга ошибок, такого как Raygun Вы можете решить эти проблемы в режиме реального времени и исправить их, прежде чем они повлияют на других пользователей.
Реализуя это с помощью нашего Slack Integration, вы можете быть уверены, что плохие развертывания пойманы рано и разрешаются.
У нас есть много других отличных интеграций для множества различных инструментов, которые я расскажу в следующем разделе.
Разрешение
Теперь, когда обновление было отправлено, мы теперь можем закрыть рабочий элемент, вернувшись к нашему инструменту управления выпусками и обновив статус для разрешения.
Стоит уведомить заинтересованные стороны, что это было завершено, прежде чем посмотреть на отставание и начать следующую работу.
Успех
Теперь, когда работа была выпущена, стоит немного праздновать!
Объявление новых функций для клиентов через новый раздел или информационные бюллетени продукта — отличное место для начала. Затем вы можете перейти к тому, чтобы делать такие вещи, как обследования NPS и общение с клиентами с помощью инструментов обмена сообщениями, таких как Intercom Анкет
Внутренние праздники также являются отличным способом обучения ваших коллег о новых функциях в вашем продукте. Здесь, в Райгуне, каждую неделю мы получаем время для демонстрации вещей, которые мы выпустили для остальной команды, и поздравляем друг друга.
Обратная связь
Обратная связь помогает закрыть цикл на вашем конвейере CI/CD, и, хотя вы не можете быть связаны со стороной обратной связи с клиентами, ваша команда продуктов будет слушать и информировать направление продукта. Собирая обратную связь с использованием таких инструментов, как Intercom и Asknicely для NPS — мы также используем наши знания, что только 1% клиентов сообщают о проблемах, поэтому мы отслеживаем все, чтобы узнать о проблемах с использованием отчетности о сбоях.
Интеграции
Если вы смотрите на настройку своего конвейера CD/CI, и вы заинтересованы в добавлении инструмента отслеживания ошибок, такого как Raygun, у нас есть ряд интеграций для множества различных инструментов, чтобы Raygun мог легко вписаться в большинство стеков инструментов.
Наши самые популярные интеграции включают:
Команда сотрудничества
- Ослабление
- Костер
- Проточный родок
Для отправки сообщений об уведомлении об ошибках для уведомления членов команды
Контроль версий
- GitHub
- Битбакет
- Гитлаб
Подключите группы ошибок Raygun к вопросам, разрешите ошибки Raygun от закрытия проблем и просмотра строк кода, которые вызвали определенные ошибки внутри Raygun.
Отслеживание проблем и проектов
- Джира
- Лазурные DevOps
- Трелло
- Зендеск
- Fogbugz
- Маяк
- Ассамблера
- Youtrack
Создайте новые проблемы из группы Raygun и ссылки на группы ошибок для работы в вашем инструменте отслеживания выпуска.
Сервисный автобус
- Azure Service Bus
- Amazon Sqs
Настройте свой собственный сервисный конвейер с помощью интеграции Raygun.
Ответ инцидента
- PAGERDUTY
- Victorops
Вспомогательная поддержка мониторинга частоты ошибок Raygun.
Но это еще не все, вы можете проверить наш полный список интеграций Здесь Анкет
Заворачивать
Непрерывная интеграция и непрерывное развертывание — это современная практика развития, и она стоит усилий для реализации. Raygun не только помогает укрепить процесс CI/CD, но и предоставляет вашей команде видимость в программных ошибках в любом месте SDLC, включая производство. Посмотрите, как это работает здесь.
Оригинал: «https://dev.to/raygun/confidently-ship-code-using-continuous-integration-ci-and-continuous-delivery-cd-3nlc»