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

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

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

На каждом этапе компакт-диска есть варианты быстрого возврата к более старой сборке и создания тикетов отчетов об ошибках, которые разработчики могут использовать в новой сборке. Цель состоит не в том, чтобы запускать множество сборок в производство, а в том, чтобы постоянно улучшать и улучшать программное обеспечение, не вводя регрессий. Другой термин для обозначения этих практик – «DevOps. »

Зачем размещать CI / CD в облаке?

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

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

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

CI / CD должен интегрироваться с вашими репозиториями

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

Почти все инструменты CI / CD могут взаимодействовать с Git. Некоторые также напрямую интегрируются с GitHub, GitHub Enterprise, GitLab и / или Bitbucket. Некоторые также поддерживают Subversion и / или Mercurial.

Ваши инструменты CI / CD должны поддерживать ваши языки программирования и инструменты.

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

Докер Образы становятся все более и более важными для распределенного, модульного и микросервисного развертывания программного обеспечения. Очень помогает, если ваш инструмент CI / CD знает, как работать с образами Docker, включая создание образа из исходного кода, двоичных файлов и необходимых компонентов, а также развертывание образа в определенной среде. Опять же, в отсутствие этого вам может потребоваться написать плагины или скрипты для реализации необходимых вам функций Docker. Точно так же вы хотите, чтобы ваш инструмент CI / CD поддерживал Kubernetes и любые другие системы оркестрации контейнеров, которые вы используете в своих средах.

Понимают ли ваши разработчики CI / CD и инструменты, которые вы рассматриваете?

Принципы CI и CD могут показаться очевидными, но детали – нет. Различные инструменты CI / CD имеют разные уровни поддержки и документации. Есть несколько книг по Дженкинс, что неудивительно, так как это самый старый из всех. Для других продуктов вам, возможно, придется изучить документацию и форумы поддержки, а также варианты платной поддержки в рамках должной осмотрительности при выборе инструмента.

Общие сведения о КИ можно найти в книге Аддисона-Уэсли. Непрерывная интеграция Duvall et al. Аналогичным образом, для получения общей информации о компакт-диске рассмотрите Непрерывная доставка пользователя Humble and Farley. Обе книги получили награду Jolt после публикации.

Вы можете выбрать разные инструменты CI / CD для разных проектов.

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

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

Планирование будущей миграции CI / CD

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

При необходимости предпочитайте бессерверный CI / CD

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

Без сервера означает, что контейнер, в котором выполняется интересующий процесс, создается по мере необходимости, как правило, в ответ на событие. Для CI / CD инициирующим событием обычно является возврат кода в определенную ветвь репозитория; затем репозиторий Webhook запускает бессерверный процесс. Когда процесс завершается, ресурсы высвобождаются.

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

Где ваши текущие облачные активы?

Для оптимизации облачной конфигурации CI / CD (или любого облачного приложения) полезно, если все ваши активы находятся «рядом» друг с другом. «Рядом» в этом контексте частично относится к географическому положению, а частично – к местоположению в сети.

Например, если ваша база данных находится в Австралии, а ваше приложение – в Северной Америке, у вас будет большая задержка каждый раз, когда приложению потребуется прочитать или записать данные. В меньшем масштабе, если ваше приложение и база данных находятся в одной зоне доступности (AZ), задержка между ними будет минимизирована. Если они находятся в разных зонах одного региона, задержка будет выше, но не так высока, как если бы они находились в разных регионах.

Точно так же, если ваша база данных находится на облачной платформе Google в Вирджинии, а ваше приложение – в Microsoft Azure в Вирджинии, задержка будет выше, чем если бы оба они находились в одном облачном провайдере в одной зоне доступности. Все это также относится к вашему репозиторию (который по сути является базой данных), вашему программному обеспечению CI / CD, вашему реальному приложению, а также вашим разработчикам и тестерам. Помогает, если все находятся «рядом», хотя эффект запаздывания в этой ситуации не так очевиден, как, скажем, в интерактивной игре в реальном времени.

Если разработчики могут надежно и без заметного времени ожидания помещать коммиты кода в главный репозиторий, они обычно будут счастливы. Точно так же, если пользователи и тестировщики находятся «достаточно близко» к приложению, чтобы получить время отклика менее секунды, они тоже будут счастливы. Для программного обеспечения CI / CD ключом являются надежные соединения с точками развертывания. Небольшая задержка может быть допустимой, если она не вызывает тайм-аутов или отбрасывания пакетов.

Сделайте доказательство концепции, прежде чем совершать

CI / CD станет важной частью вашей инфраструктуры, как только вы ее полностью внедрите. Помните об этом, когда набираете скорость.

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

Авторские права © 2021 IDG Communications, Inc.


#Как #выбрать #облачную #платформу

Source link