Рубрики
Uncategorized

⁉ Почему я начал развивать 💡 Новый проект по программному обеспечению, создавая 🚀 непрерывное развертывание 🔃 трубопровод

Как-то, в последние годы, когда обсуждаете трубопроводы по доставке программного обеспечения в современных компаниях, люди WOU … Теги с DevOps, Sre, архитектурой, трубопроводом.

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

В последние годы у меня была возможность наблюдать за созданием трубопровода доставки программного обеспечения дважды, только реализует только Непрерывная интеграция Первый раз и начиная с Непрерывная доставка В моем последнем проекте.

🙈 TL; DR/ЗАКЛЮЧЕНИЕ

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

👊 Который и почему вы их нуждаетесь?

Чтобы объяснить выбор, который мы сделали, нужно понять разницу между CI и CD Отказ Для тех, кто чувствует себя уверенно, что они понимают это, пропуская абзац ниже. Для тех, кто внезапно не совсем уверен — читаю …

☝ Непрерывная интеграция

Непрерывная интеграция — это практика, предназначенная для поддержания рабочей «интегрированной» системы, состоящей из множества компонентов, работающих параллельно несколькими инженерами/инженерными командами.

Следующая диаграмма демонстрирует упрощенный Процесс непрерывной интеграции:

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

Необходимость реализации непрерывной интеграции в предприятиях, которые зависят от их способности доставлять программное обеспечение эффективно и надежно очень очевидно. Альтернатива прямая болезненный Отказ Делая периодические интеграции «Big Bang», объединяя проекты по развитию, которые работали отдельно и надеясь, что они волшебны будут работать вместе — это огромная проблема.

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

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

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

✌ Непрерывная доставка/развертывание

Непрерывный Доставка и непрерывно Развертывание являются терминами, которые довольно часто получают взаимозаменяемо. Существует разница между каноническое Определения двух, которые важно отметить, для пользователя правильного срока:

  • Непрерывная доставка Является ли подход программного обеспечения, в котором команды производят программное обеспечение в короткие циклы, гарантируют, что программное обеспечение может быть надежно выпущено в любое время и, когда выпускаете программное обеспечение, делая это вручную. Он направлен на строительство, тестирование и освобождение программного обеспечения с большей скоростью и частотой.
  • Непрерывное развертывание Является ли подход, где программное обеспечение, проходящее набор автоматизированных ворот надежности, фактически развернут в производственной среде в полностью автоматизированном (и контролируемом) манере.

В то время как непрерывный Доставка Может, действительно, быть естественным расширением для хорошо реализованного непрерывного Интеграция , Непрерывное развертывание требует значительного объема инвестиций, как технологических, так и методологических, для успешной реализации.

Приведенная выше диаграмма изображает полный поток A Непрерывная доставка Цикл реализован с Канарейка Прогрессивная доставка (Одна из возможных стратегий ответственного автоматизированного обновления программных компонентов в производственных условиях).

👟 Реализация просто CI.

Для реализации Непрерывная интеграция Успешно, организация должна будет инвестировать в ряд технических инфраструктурных компонентов, а также для поощрения (или даже обеспечения) определенных правил на «определение проведенного» для разработчиков программного обеспечения.

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

🤖 Автоматизированные тесты

Абсолют должен для любого CI Окружающая среда, автоматическое тестирование вашего кода предоставляет основу для возможности для претендовать что изменение кода было успешно интегрировано.

Многое было сказано об автоматизированных методологиях тестирования. На данный момент достаточно указывать, что автоматизация тестирования должна быть введена на множественные уровни (а не только Блок тестирования или Конечное тестирование ). Слои, такие как Тестирование модуля , Тестирование контракта , Тестирование производительности и даже Автоматизированные тесты безопасности следует учитывать в зависимости от требований вашего проекта.

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

🌀 CI Трубопровод

В первые дни Непрерывная интеграция , когда он все еще называл Автоматизация управления конфигурацией программного обеспечения Организации, используемые для автоматизации задач программного обеспечения, тестирования и упаковки, написания пользовательских сценариев/код. Дженкинс Был, наверное, первая CI а затем и CD Трубопроводный инструмент, который появился в качестве основного потокового (практически де-фактического стандарта) для строительства Автоматизированные трубопроводы CI Отказ

Дополнительные продукты, как самоуверенные с открытым исходным кодом, а также поставлено SaaS ( Travis CI , Круг CI , Gitlab трубопроводы , Действия GitHub , Google Cloud Build и более) с тех пор приняли архитектуру и приборы CI легкие впереди.

📦 артефакты репозитория

Очень важный компонент в трубопроводе, репозиторий для хранения проверенных/проверенных «результатов». Артефакты репозитории Разрешены из файловой системы с предопределенной структурой к более сложным программным растворам, способным доставлять «артефакты» с использованием различных программных пакетов/систем управления/распределения.

👞 Реализация CD на вершине CI

Должен ли нам реализовать Непрерывная интеграция Во-первых, а потом рассмотрите работу над Непрерывная доставка ? А Отличная статья На тему предполагают, что, хотя это обычный подход, он может быть сделан в другом порядке (с некотором неортодоксальным мышлением). Хотя это правильное мнение, все из Непрерывная доставка Среда, знакомые автору этой статьи, на самом деле, построены на вершине Непрерывная интеграция трубопроводы.

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

👏 Оператор/триггер для развертывания

Это, на самом деле, единственный 100% обязательно Компонент для реализации Непрерывное развертывание Отказ Это то, что обеспечивает его непрерывность. Целью этого компонента является автоматическое запуск процесса развертывания на либо завершение Непрерывная интеграция Для определенного изменения или на любом другом автоматическом триггере.

Существуют несколько способов реализации такого триггера, как в том числе Custom-Develope Code и проекты с открытым исходным кодом, такие как Flux CD или Spinnaker Отказ

🙌 Прогрессивный контроллер доставки

Прогрессивная доставка Это методология, которая обеспечивает постепенное принятие вновь доставленных компонентов некоторыми пользователями общей системы (но не каждый одновременно). В сочетании с Метринг медицинских метрик Мониторинг , его можно использовать для полностью автоматизированного ответственного выпуска.

В зависимости от характера вашего обслуживания, используя Прогрессивная доставка не обязательно. Если вы можете заменить версии различных компонентов вашего программного обеспечения в производственных условиях, не беспокоясь о его влиянии на конечные пользователи, вам не нужно делать что-то особенное.

Если вызывает прерывания текущим пользователям вашего сервиса, является заботой, то требуется какой-то контроллер прогрессивного доставки. Проекты с открытым исходным кодом, такие как Rollouts Argo и Feaveworks flagger Доставьте эту функцию для среды Kubernetes.

Есть различные методы для выполнения Прогрессивная доставка , например, но не ограничивается Сине-зеленый или Канарейка Обновить.

👈 👉 трафик разделенный менеджер/балансировщик нагрузки

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

👍👎 Мониторинг метрик здоровья

Возможность установить, является ли ваш компонент «здоровым» или функционирует ли он в соответствии с ожиданиями, является обязательной частью, способной сделать автоматическое развертывание. Без этой способности ваши разработчики «слепые», не зная, функционирует ли система или нет.

Мониторинг можно сделать либо использование пассивный Методология (то есть ваш компонент испускает различные метрики или журналы и что-то контролирует, отражают ли их данные правильно функционирующей системе) или использовать Активный Методология (периодические зонды/датчики выполняются против системы, проверяя, что его ответ в соответствии с тем, что ожидается).

При рассмотрении систем для сбора метрик Prometheus Правила превосходно как самый широко используемый инструмент с открытым исходным кодом, легко интегрирован со всеми ведущими Прогрессивные контроллеры доставки Отказ

💫 связывание все вместе

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

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

Выбирай с умом…

P.S., если вы заинтересованы в том, как мы реализовали сквозное непрерывное развертывание Canary, обратитесь к этому отличному блогу или Elimelech.

Оригинал: «https://dev.to/stackpulse/why-i-started-developing-my-new-software-project-by-building-a-continuous-deployment-pipeline-3c0f»