Сравните Spinnaker с Jenkins 2.0 в качестве инструмента непрерывной доставки
Как мы знаем, выпущен Jenkins 2.0, и он распространяется не только на непрерывную интеграцию (CI), но и на непрерывную доставку (CD). Поэтому я хочу спросить, каковы конкурентные преимущества Spinnaker по сравнению с Jenkins 2.0?
3 ответа
Я много работаю над интеграцией Jenkins в Spinnaker и над функциональностью Pipelines в Netflix.
Spinnaker никогда не задумывался как комплексный инструмент для сборки. Есть вещи, которые Дженкинс будет делать лучше с точки зрения управления SCM, выполнения тестов, построения пакетов, наличия плагинов gazillion и т. Д., И т. Д., И т. Д.
Spinnaker пытается добиться успеха в том, чтобы взять часть программного обеспечения, которую вы опубликовали (пакет debian, образ докера или развертываемый JAR-файл), и запустить его в рамках предсказуемого цикла развертывания программного обеспечения, который можно легко настраивать. Другими словами, каждая функция в Spinnaker создана для упрощения развертывания артефактов с несколькими учетными записями и несколькими облаками.
Трубопроводы Spinnaker имеют облачную ориентацию. Большинство наших этапов конвейера и элементов управления API связаны с созданием новых групп серверов и изменением существующих групп серверов таким образом, чтобы это было предсказуемо и удобно для пользователя. В случае сомнений, это тот случай, для которого мы оптимизируем.
У нас более четкие мнения о том, как выглядит облачное развертывание, и у нас часто будет пользовательский интерфейс "укажи и щелкни" при решении задач облачного развертывания в наших конвейерах CD - найдите образ в кластере x, отключите этот кластер, измените размер группы серверов., уменьшить этот кластер, заставить этот кластер принимать трафик, уничтожить этот старый кластер и т. д.
Когда мы начали писать Spinnaker 2+ года назад, функциональность конвейера Jenkins была нам недоступна, поэтому мы создали необходимую нам функциональность. Поддержка Jenkins, к которой мы пришли, возникла из наших потребностей, помогая другим командам в Netflix создавать тысячи конвейеров развертывания внутри компании. Поскольку Netflix в значительной степени полагается на Jenkins для сборки и тестирования, переход между заданиями Jenkins и этапами Spinnaker является довольно плавным.
В Netflix есть команды, которые не используют функциональность конвейера Spinnaker и вместо этого используют API Spinnaker в своих заданиях Jenkins в качестве ярлыка для развертывания в AWS. Если вы используете конвейеры Jenkins или аналогичные инструменты для компакт-дисков, Spinnaker делает фазу развертывания действительно гибкой.
У нас также есть команды, которым нравится, как Spinnaker разбивает задания Jenkins на атомарные, многократно используемые задачи вокруг одного приложения. Команды, которые не развертываются в облаке, используют Spinnaker, потому что наши конвейеры соответствуют их потребностям лучше, чем то, что они могут найти в мире Дженкинса.
Трубопроводы Дженкинса довольно аккуратны. Я не думаю, что Спинакер когда-либо полностью заменит Дженкинса и миллион вещей, которые он делает. Наша цель - сделать шаг "развертывание в облаке" более простым и расширяемым. Выбор использовать один над другим, вместе или не использовать вообще, остается за вами.
Есть несколько причин, по которым вы можете выбрать Spinnaker вместо Jenkins (2.0) Pipeline в качестве инструмента CD:
- Spinnaker включает в себя веб-интерфейс, который может фактически предоставлять ресурсы, и это делается в нескольких облачных средах. Поэтому для создания базовых ресурсов, таких как виртуальные машины, балансировщики нагрузки, кластеры и т. Д., Вы можете сделать это из того же интерфейса, что и инструмент доставки.
- Если ваша архитектура аналогична архитектуре Netflix, Netflix использует ее в качестве всей своей платформы управления облаком, поэтому практически не требуется разложенных инструментов для поддержки управления доставкой и инфраструктурой.
С другой стороны, есть много причин, чтобы выбрать Jenkins Pipeline вместо Spinnaker
- Spinnaker по-прежнему требует инструмент для сборки, так что вам может понадобиться поддерживать Jenkins в любом случае. Так что, если Jenkins Pipeline станет вашим CD-инструментом, он уже может выполнять ваши задачи, специфичные для исполнителя.
- Spinnaker не имеет детализированных элементов управления доступом (и только недавно добавил аутентификацию любого рода), в то время как у Jenkins есть много плагинов и собственных конфигураций в Pipeline, которые предлагают управление доступом на уровне ресурсов.
- Все управляется одним отличным скриптом, так что это настоящая конфигурация как код. Он допускает простой поток / логику / управление, что невозможно (или, по крайней мере, легко) в других инструментах CD.
- Поддержка нескольких веток конвейера, легко создавать / удалять / изменять ветки
- Обширная поддержка плагинов для Jenkins уже. Например, мы используем плагин AWS ECS, чтобы разрешить динамические стыковочные узлы для наших конвейеров.
- Легко делиться / сотрудничать над кодом к конвейерам. У вас наверняка будут многократно используемые функции, которые вы хотите использовать в нескольких конвейерах, Jenkins делает это легко с помощью таких инструментов, как плагин Remote Loader
- Поддержка большого сообщества
В конечном итоге мы выбрали Jenkins 2.0 Pipeline в качестве инструмента для компакт-дисков, помимо Spinnaker и некоторых других.
Мы используем Maven, чтобы упаковать всю кодовую базу вместе с конфигами, свойствами (т. Е. Все, что является версионным в GitHub) и создать из него RPM. С этим окончанием потока - мы запускаем конвейеры Spinnaker в AWS или любом другом облаке для запуска части CD.
Spinnaker очень уникален в этой области CD.
Продвижение кода: тот же RPM, который мы будем продвигать, гарантирует, что мы сделаем наш основной код / env неизменным.
Мы можем контролировать изменение размера экземпляров с самой консоли Spinnaker.
Откат только в один клик.
Все современные концепции развертывания, такие как сине-зелёный / красно-чёрный, канарейка, горцы и т. Д., Здесь тоже есть
Журналы конвейера дают очень проницательный обзор, как высокого уровня, так и низкого уровня
Развертывание в нескольких регионах (стратегическое DR)
если кому-то нужна помощь (бесплатная помощь!) по установке Spinnaker в RHEL, вы можете сообщить мне об этом.
Но я должен сказать, что мы используем Spinnaker только для облачных развертываний.