Рубрики
Uncategorized

Инженеры программного обеспечения должны знать Devops тоже, и это начинается с CI / CD

Дежол сейчас жарко. Кажется, что каждое программное обеспечение инжиниринговое размещение требует разработки … Теги с DevOps, WebDev, программированием, оружием.

Дежол сейчас жарко. Кажется, что каждое программное обеспечение инжиниринговое размещение требует опыта и опыта DEVOPS независимо от фактического названия работы.

Когда технологичная компания разбивает монолит в микросервисы, каждая из его инженерных команд теперь владеет своей частью заявления от начала до конца. Инженеры программного обеспечения больше не просто создают приложение; Они также владеют техническим обслуживанием репо, настроить непрерывную интеграцию, настроить строить трубопроводы и развернуть их приложение.

В этом мире кроссфункциональных команд и архитектуры микросервиса, навыки DevOps становятся все более важными, и это начинается с понимания CI/CD (непрерывной интеграции, непрерывной доставки и непрерывное развертывание).

В этой статье мы поговорим о лучших практиках CI/CD и как платформы, такие как Оружейная может помочь управлять некоторыми из вовлеченных сложностей.

Непрерывная интеграция (CI)

Непрерывная интеграция (CI) Является ли «практика автоматизации интеграции кода из нескольких вкладов в один программный проект».

Поскольку несколько разработчиков ежедневно объединяют код в главной ветке, важно иметь автоматические проверки, чтобы убедиться, что код всегда находится в хорошем рабочем состоянии. Это означает, что кодовые форматирователи, кодовые льготы и тесты единиц должны быть запущены до объединения нового кода. Вместо того, чтобы полагаться на разработчиков, чтобы не забывать использовать эти инструменты локально, Pipelines CI помогают автоматизировать работу каждой необходимой задания, предотвращая слизменный код в магистратуре.

Хорошие трубопроводы CI должны быть быстрыми. Это означает, что работа за работой трубопровода параллельно, когда это возможно и наличие быстрого тестового набора.

Хорошие трубопроводы CI также должны быть надежными. Если сборка сломана, инженеры должны работать, чтобы сразу исправить его, так как сбой сборки блокирует все открытые запросы слияния от объединения. Если тест является Flaky, он должен быть временно отключен и фиксирован как можно скорее.

Приложение должно быть построено один раз в ближайшее время в начале трубопровода CI, после того, как любые форматтеры, линтам и тесты на единицу. Таким образом, артефакт сборки готов к использованию в любой точке последующих этапов трубопровода. Строительный артефакт затем может быть развернут в контейнерной среде и используется в качестве приложения для рецензентов по кодам для быстрого подтверждения изменений при необходимости.

Когда трубопроводы CI успешно установлены для REPO CODE, разработчики могут ежедневно совершать мастерскую ветку (или даже несколько раз в день). Не более долгоиграющей ветвь функции, которые живут в течение нескольких месяцев в ожидании того день, когда они, наконец, могут быть объединены!

После этих практик CI помогает сохранить все в главной ветви в чистоте и в развертывающем состоянии, что приводит нас к второй половине Ci/Cd Acronyment.

Непрерывная доставка и непрерывное развертывание (CD)

Как коротко, давайте поговорим о Различия между «непрерывной доставкой» и «непрерывным развертыванием». Непрерывная доставка является естественным результатом генерирования артефакта сборки как часть непрерывной интеграции. Этот артефакт сборки — это рабочая копия приложения, которое можно развернуть в среду. Это означает, что вы готовы развернуть до производства в любое время! Как инженерная организация, вы можете решить, следует ли развернуть ежедневно, еженедельно, каждые две недели и так далее. В непрерывной доставке, в то время как вы готовы развернуть ваше приложение в любой момент, человек все еще должен запускать процесс, чтобы начать развертывание.

Непрерывный развертывание Однако, однако, идет на шаг дальше, чем постоянная доставка в том, что каждое изменение, объединенное в главную ветку, немедленно начнут процесс развертывания без какого-либо дальнейшего взаимодействия человека. Это интересно, потому что разработчики могут видеть их код в производстве всего через несколько минут после того, как они объединили его! (Предполагая, конечно, что развертывание не заблокировано какими-либо неудачными автоматизированными чеками, которые предотвратит выпуску новой сборки в производственную среду.)

Выбирает ли ваша организация непрерывной доставки или непрерывное развертывание, намерение обеих практик одинакова: доставлять ценность ваших клиентов как можно быстрее и так же часто. Нет больше больших квартальных релизов! Это то, что прожилено все.

Одно из самых важных вещей, которые можно получить вправо с непрерывной доставкой, состоит в том, что приложение должно быть в состоянии развернуть с помощью одной кнопки. Другими словами, процесс развертывания должен быть автоматизирован. Если эта практика не соблюдается, и существует несколько сложных этапов в процессе развертывания, который должен быть выполнен человеком, процесс развертывания становится более склонным к ошибке. В конце концов, мы человек, и люди делают ошибки.

Другой ключевой принцип как непрерывного доставки, так и постоянного развертывания заключается в том, что вы должны использовать несколько уровней среды, в которых может запустить приложение. Например, у вас может быть среда разработки, обстановка обстановки и производственная среда. Затем созданный артефакт может быть продвижена из одной среды к следующему Инфраструктура в этих различных средах должна быть максимально похожей на то, что вы не бежите на крупных сюрпризов, как только приложение попадет в производство.

Стратегии развертывания

Стратегии развертывания Может варьироваться, но некоторые часто используемые методы — это развертывание канарей, синие/зеленые развертывания и прокат синего/зеленых развертываний.

В оформлении Канарское развертывание Сначала вы сначала выпустите новую версию вашего приложения в небольшое подмножество пользователей. Как только вам удобно, что изменения работают правильно для тех пользователей, вы также отпускаете изменения в остальных своих пользователях. Это считается осторожным способом выпуска кода, поскольку вы изначально не применяете изменения для всех всех сразу.

В оформлении синее/зеленое развертывание Вы используете два производственно-класса. Одна среда активно используется в производстве и содержит текущую версию приложения. Вторая среда находится в режиме ожидания и не имеет трафика к нему. Вы развертываете новую версию вашего приложения в среду в режиме ожидания, а затем направляйте весь трафик в эту среду, что делает его новой производственной средой. Старая производственная среда, то больше не получает трафик и становится резервной средой. Это позволяет очень легко развертывать новый выпуск, а также откатывать релиз при необходимости, потому что оба процесса так же просто, как перенаправление, где проходит трафик пользователя.

А Роллинг синего/зеленого развертывания Может использоваться, когда у вас есть несколько экземпляров вашего приложения, все работает в той же среде. Например, если у вас есть шесть узлов, используемых в производстве, поменяйте первый узел с другим узлом, который выполняет новую версию приложения. Итак, теперь у вас есть пять узлов, управляющих старой версией приложения и один узел, запущенный новой версией приложения. Тогда вы делаете это снова, чтобы соотношение становится четырьмя старыми и двумя новыми. После четырех дополнительных замене узлов, теперь все шесть ваших узлов используют новую версию приложения.

Роллинг природы развертывания является Pro, и Con. Развертывание менее рискованное, поскольку вы не развертываете все сразу, но также требуется больше времени для завершения полного выпуска, так как он выполняется один узел одновременно.

Как инструменты могут помочь с CI/CD

Теперь, когда мы понимаем лучшие практики для CI/CD, какие инструменты мы можем использовать, чтобы помочь нам? Для CI есть много хороших вариантов с открытым исходным кодом, как Трэвис СИ или Circleci Отказ Вы даже можете использовать встроенные функции GitHub (с помощью Действия GitHub ) или gitlab (с gitlab ci ). Большинство этих инструментов специализируются на части CI/CD, но также включают некоторые функции для CD. С помощью этих инструментов CI вы можете создавать трубопроводы, которые позаботятся о том, чтобы запускать свои льмина и тесты на каждом новом запросе слияния.

Когда дело доходит до CD, один из самых популярных инструментов с открытым исходным кодом, который помогает автоматизировать развертывание — Spinnaker Отказ Spinnaker изначально был разработан внутри Netflix, прежде чем он был освобожден к более широкому сообществу разработчика. Одна из лучших вещей о Spinnaker — это его гибкость в поддержке практически в каждом поставщике облака от AWS для Azure до GCP. Spinnaker может быть интегрирован с вашим инструментом CI выбора и может развернуть ваше приложение, используя выбранную стратегию развертывания. (Я уже упоминал, что это гибко, верно?)

Пример трубопровода для канарного развертывания, используя Spinnaker, может выглядеть немного подобное:

В этом рабочем процессе мы видим артефакт постройки, развернутое для небольшого кластера групп серверов для исходного развертывания канареемого. После изменения функциональных возможностей в канарее вручную рассмотрели вручную и одобренные, проводится синее/зеленое развертывание (или красное/черное развертывание в виде Netflix, вызывает его), развернув новый кластер POD и с использованием балансировщика нагрузки на этот новый группа. Канарский кластер затем разрывается, и — после того, как все удобно, что новый кластер PROD работает хорошо — также разрушается старый кластер PLOD.

Оружейная это платформа, которая требует этой идеи на один шаг дальше, предоставляя предложительство корпоративного сорта Spinnaker для лучшего Видимость, расширение расширения расширения и устойчивость Отказ Приборные панели Armory, Loggating и метрики в прямом эфире помогают разработчикам больше видимости в их развертывание приложений. С большим количеством сложности отстранены в хороший графический интерфейс, развертывание и откаты, могут быть выполнены с помощью кнопки кнопки. Это позволяет даже те разработчики без особого опыта, чтобы владеть своим приложением от начала до конца. И просто чтобы дать вам дополнительную меру уверенности, Мощность политики оружия Позволяет настроить Guardrails, чтобы убедиться, что каждое развертывание следует за лучшими практиками вашей компании и согласованными правилами.

Вывод

Итак, что мы узнали? Во-первых, разработчики должны быть знакомыми с лучшими практиками CI/CD. Во-вторых, инженерные организации должны предоставлять своим разработчикам правильных инструментах, чтобы помочь повысить производительность и уменьшить ошибки. Как мы уже видели, один из лучших инструментов, используемых для CD, является Spinnaker, теперь усиливается Arimrore. Работая вместе, чтобы реализовать эти принципы DevOps, инженерные команды будут иметь большую уверенность в их кодексе и будут иметь возможность быстрее доставлять ценность своих клиентов.

Оригинал: «https://dev.to/thawkin3/software-engineers-need-to-know-devops-too-and-that-starts-with-ci-cd-47n8»