DevOps инструменты трансформируют процессы разработки программного обеспечения на мировом уровне. Давайте ознакомимся с лучшими из лучших на сегодняшний день.
В ходе опроса, проведенного аналитическим отделом Harvard Business Review, 48% респондентов заявили, что их компания полностью полагается на DevOps в контексте повышения эффективности. А более 80% представителей индустрии программного обеспечения заявили, что DevOps значительно повышает ценность их работы в том или ином виде.
Более того, согласно результатам вышеупомянутого опроса, DevOps увеличивает скорость выхода на рынок, масштабируемость, инновационный потенциал и качество продукции для компаний-разработчиков программного обеспечения на глобальном уровне.
2021 год станет важным годом для раскрытия потенциала DevOps. Он охватывает как команды разработчиков, Ops, IT и отделы обеспечения безопасности, так и различные этапы разработки программного обеспечения. Именно поэтому для каждой сферы существует множество инструментов на любой вкус и цвет.
Давайте подробно рассмотрим наиболее выдающиеся инструменты DevOps, доступные на рынке в настоящее время, с учетом важных категорий жизненного цикла CI/CD.
Puppet — это инструмент управления конфигурацией и развертыванием программного обеспечения с открытым исходным кодом, который обычно используется для приведения хостов к нужному состоянию и поддержания этого состояния. Puppet является агентно-ориентированной моделью и чаще всего используется в Linux и Windows для одновременного управления несколькими серверами приложений. Puppet в основном используется в конфигурациях клиент/сервер с управляемыми узлами, которые остаются синхронизированными с сервером. С помощью R10K, инструмента управления кодом Puppet, стало гораздо проще внедрять автоматические или ручные изменения, обновления, обзоры и тесты кода для CI/CD. Файлы R10K и Puppetfiles также можно использовать для создания автоматического развертывания ваших сред. Такие агентно-ориентированные развертывания отличаются особой точностью, своевременностью и способностью ведения журналов регистрации ошибок.
Puppet также предлагает легкую интеграцию с Git для управления версиями.
Puppet является декларативной системой и обычно подходит для базовой компоновки вместо оркестровки.
Пара недостатков состоит в следующем:
Ansible — это инструмент управления конфигурацией и оркестрацией с открытым исходным кодом, который известен своей простотой и производительностью. Ansible запускается на главном устройстве/машине и использует SSH для подключения к узлам. Ansible можно запускать на любом устройстве с установленным Python 2 (версия 2.7) или Python 3 (версии 3.5 и выше), включая Red Hat, Debian, CentOS, macOS и BSD.
Ansible позволяет очень легко управлять конфигурациями (или плейбуками) с помощью YAML (еще одного языка разметки). Так же Ansible способствует эффективной автоматизации кросс-платформенных задач. Стоит подчеркнуть, что здесь есть режим извлечения Ansible для репозиториев и выполнения команд из определенных файлов. Преобразование сценариев оболочки и файлов конфигурации в сборники или Ansible Playbooks также легко, плюс ко всему, по этому вопросу доступно множество документации.
Некоторые слабые стороны Ansible включают в себя:
Chef — это еще один инструмент управления конфигурациями с открытым исходным кодом. Chef тоже является агент-ориентированной моделью. Благодаря инструменту “knife” (нож) и коммуникации через SSH клиенты Chef могут запускаться локально на каждом клиентском компьютере. Отличие Chef от Puppet состоит в дополнительном слое под названием Workstation, который содержит в себе все конфигурации. Эти конфигурации сначала автоматически тестируются на локальных компьютерах, а затем передаются на сервер.
Chef не превзойдён в случае если конфигурация имеет зависимости между хостами. Он использует описания состояния системы (пакеты, существующие пользователи, каталоги и т.д.) и сравнивает их с экземплярами агентов в реальном времени, гарантируя, что объекты останутся синхронизированными.
Возможности автоматизации Chef для обслуживания более крупных сетей с использованием таких сервисов, как AWS OpsWorks, широко известны в различных отраслях. Chef помогает обеспечить безопасность и целостность вашей сети, а также ее развертывание. Chef Inspect — это платформа с открытым исходным кодом, которая позволяет проводить автоматическое и ручное тестирование и аудит ваших приложений.
Несмотря на сильный графический интерфейс Chef, использовать его возможности на полную мощность, можно только уже освоив Ruby, особенно когда дело доходит до сложных задач и настроек. Вы можете добиться отличного уровня кастомизации, написав скрипты в Chef (также известные как cookbooks и recipes), но во многих ситуациях этого недостаточно.
Пара недостатков Chef заключаются в следующем:
Jenkins — это средство автоматизации с открытым исходным кодом, основанный на Java, которое используется для автоматизированного создания, тестирования и развертывания программного обеспечения, упрощая непрерывную интеграцию (CI) и непрерывное развертывание для пользователей. Для всех вышеуказанных целей Jenkins использует специальные плагины.
Jenkins проверяет новый пул запросов, включает новые рабочие ветви в основной код, запускает автоматизированные тесты, собирает новые данные, сообщает об ошибках и развертывает обновления кода в среде QA для ручного тестирования.
Jenkins Pipeline — это сочетание заданий для непрерывной доставки программного обеспечения с использованием Jenkins. Достаточно выбрать необходимые файлы сборки в конвейерах, загрузить их в SCM и поставить задачу.
Jenkins существует уже очень давно и уже практически стал золотым стандартом благодаря своей зрелой экосистеме, поддержке плагинов, документации и его комьюнити. За последние годы Jenkins претерпел несколько обновлений. Теперь он является одним из лучших вариантов для многих компаний из-за его простого UX / Синтаксиса для пайплайнов и интеграции с Docker.
Слабые стороны Дженкинса:
TeamCity — это один из самых популярных инструментов CI (доступна ограниченная бесплатная версия), который славится своим простым в применении интерфейсом, удобными настройками и креативными функциями. TeamCity работает в среде Java, на сервере Apache Tomcat, но также может быть установлен на серверах Windows и Linux.
Нужен ли TeamCity именно вам? Это во многом зависит от ваших потребностей. Если вы располагаете бюджетом, и ваши основные задачи включают настройку фиксированного количества агентов сборки с целью создания параллельных цепочек сборки с зависимостями от репозитория Snapshot и артефактов, то TeamCity просто создан для вас. TeamCity также обладает довольно солидной документацией. Функция TeamCity "Snapshot Dependencies" позволяет сохранять одну и ту же исходную версию во всем пайплайне без низкоуровневых реализаций кода.
Стоит отметить, что специально для вас TeamCity автоматически исправляет агенты snowflake с помощью специальных инструментов.
Основанные на конкретных шаблонах, конфигурации сборки TeamCity могут значительно упростить вам жизнь.
TeamCity нативно поддерживает автоматическое масштабирование агентов в AWS, GCE и Azure. Он также поддерживает VMware и Kubernetes с помощью плагинов и имеет встроенную интеграцию с GitHub.
Некоторые недостатки TeamCity заключаются в следующем:
Bamboo — это сервер непрерывной интеграции и развертывания, разработанный компанией Atlassian. Одним из ключевых преимуществ Bamboo является его способность интегрировать автоматизированные сборки, тесты и выпуски в единый рабочий процесс с другими продуктами Atlassian (JIRA, BitBucket, Stash, Hipchat и Confluence), создавая прочную экосистему разработки и доставки программного обеспечения.
Bamboo имеет понятный и простой в использовании графический интерфейс.
Простота интеграции с BitBucket, Confluence и Jira также является несомненным преимуществом Bamboo. Он может инициировать подобные cron триггеры, которые пригодятся для запуска, если у вас есть уже имеется необходимая аналитика обзоров, автоматическое тестирование и автоматизированные процедуры, а сотрудники находятся вне офиса.
Но и Bamboo не идеален. Вот некоторые из его недостатков:
GitHub — один из самых популярных инструментов управления исходным кодом c миллионами пользователей по всему миру. Основные преимущества GitHub: понятный пользовательский интерфейс с продвинутыми функциями, такими как восстановление случайно удаленных репозиториев, предотвращение случайных удалений, различные интеграции и хороший уровень безопасности. GitHub славится практически не бывает сбоев или простоев, что делает его максимально надежным.
GitHub идеально подходит для проектов с открытым исходным кодом. Плюс ко всему, вокруг него собралось довольно широкое коммьюнити.
Стоит отметить, что Microsoft владеет GitHub. По этой причине для разработчиков Azure и инструментов Microsoft доступны различные возможности интеграции. GitHub предоставляет вам больше вариантов контроля процессов CI/CD.
Между тем, важно учитывать, что GitHub предлагает бесплатные частные репозитории (максимум 3-м сотрудникам на репозиторий).
BitBucket — это веб-сервис для хостинга проектов и их совместной разработки, основанный на системах контроля версий Mercurial и Git. BitBucket полезен, если вы используете другие продукты Atlassian. BitBucket также известен своей эффективностью, когда дело доходит до управления большим количеством репозиториев. В BitBucket вы можете бесплатно создавать любое количество репозиториев.
BitBucket также славится своей интеграцией с JIRA и Confluence. Это поистине лучший выбор для проектов, связанных с частными репозиториями.
Еще одним преимуществом BitBucket является практика CI/CD, позволяющая реализовывать непрерывное развертывание
Несовершенства BitBucket включают в себя:
GitLab, основанный на Git, предоставляет функции управления репозиториями, интеграция с CI-системами, отслеживание ошибок, деплой и анализ кода. Большинство компаний предпочитают использовать GitLab для управления исходным кодом из-за его сильных сервисов CI. GitLab — это то, что нужно, если вы хотите интегрировать CI/CD на своем собственном сервере. GitLab — это бесплатный сервис с открытым исходным кодом, предоставляющий неограниченное количество бесплатных частных репозиториев.
В дополнение к вышеупомянутым преимуществам, GitLab позволяет использовать частные репозитории и имеет простой интерфейс для управления контейнерами.
Spinnaker — это платформа с открытым исходным кодом, которая работает с Kubernetes, облачной платформой Google, AWS, Microsoft Azure и Oracle Cloud. В основном она используется для непрерывного развертывания и доставки, принимая ваши артефакты и организуя их развертывание.
Панель управления и интерфейс Spinnaker очень просты в применении. Разработчики могут легко перенести свой код в бранч для релиза, а данная платформа, в свою очередь, автоматически создаст, протестирует, проверит и отправит код в производство. С помощью Spinnaker вы можете использовать бесшовные интеграции сборок Kubernetes, GitHub и Google, чтобы легко вносить и развертывать изменения в свое программное обеспечение.
Spinnaker поможет нативно настроить AMI EC2, ASG и настраивать балансировку нагрузки.
Недостатки заключаются в следующем:
Octopus Deploy — это CD-инструмент, используемый для автоматизированного развертывания. Он может автоматически развертывать приложения и службы на устройствах агентов (“щупальцах”). Octopus Deploy подходит для ASP.NET веб-приложений, приложений Java, приложений NodeJS, а также запуска пользовательских сценариев в нескольких средах, включая AWS и Azure. В основном он используется с AzureDevOps и предпочитается компаниями, работающими в экосистеме Microsoft.
Octopus Deploy может интегрировать инфраструктуры CI пайплайнов. Вы можете инициировать API-вызовы в Octopus для создания новых выпусков и отправки двоичных файлов/кодов (binaries) через CI пайплайн.
У Octopus есть некоторые недостатки, к которым относятся:
Argo CD — это декларативный инструмент непрерывного развертывания GitOps для кластеров Kubernetes.
Argo CD извлекает конфигурации из репозитория и синхронизирует существующие манифесты Kubernetes, описывающих ваше приложение в репозитории Git. Argo CD может автоматически применять обновленные или измененные манифесты для фиксации изменений в вашем кластере. Сервер ArgoCD может отслеживать ветви развертывания ваших основных проектов, а также может автоматически определять, когда ветвь сборки объединяется с ветвью развертывания. Argo CD сначала развертывает новую версию, предотвращая таким образом вероятность простоев.
Недостатки Argo CD включают в себя:
TwistLock это лидирующее решение, помогающее клиентам защищать контейнеры и контейнерные среды на протяжении всего их жизненного цикла. Сервис известен своей интеграцией с контейнерами Kubernetes и Docker. TwistLock, теперь принадлежащий Palo Alto Networks, обеспечивает проверку безопасности с помощью Runtime App Security Protection и автоматического сканирования контейнеров.
У TwistLock есть развёрнутая документация. Он прост в развертывании и обеспечивает оптимизированное потребление ресурсов. Он также известен своей интеграцией пайплайна CI/CD, строгим соблюдением протоколов безопасности контейнеров и сканированием изображений.
Плюс ко всему, TwistLock известен своим скрупулезным анализом безопасности. Сервис использует возможности искусственного интеллекта для изучения вашей среды, хотя некоторые считают автоматические cron-задания слишком запутанными.
Также в TwistLock возможно сканирование безопасности на базе SaaS (prisma cloud) или on-Prem.
Sysdig — это инструмент мониторинга, используемый для сбора информации о системе (облачной инфраструктуры, службах и приложениях). Sysdig обычно используется для обеспечения безопасности контейнеров, а также для управления и оркестрации PaaS инфраструктур.
Sysdig также полезен для мониторинга кластеров OpenShift, поскольку он предоставляет детализированные данные для дальнейшего анализа.
Важным отличием Sysdig от других подобных инструментов является тесная интеграция мониторинга контейнеров с процессом оркестрации.
Sysdig очень полезен, если вы хотите разобраться в потоке трафика. Это сервис с открытым исходным кодом, что позволяет собирать сведения о хосте на уровне системных вызовов ядра. Процесс захвата также может быть автоматизирован для развертывания в качестве контейнера Docker напрямую или с помощью daemonset.
Дополнительные функции Sysdig включают в себя:
Anchore — это комплексное решение для обеспечения безопасности контейнеров, которое легко интегрируется с различными инструментами и платформами. Anchore проверяет контейнеры на соответствие требованиям по целому ряду различных параметров, что позволит командам соблюсти все необходимые отраслевые стандарты безопасности.
Благодаря такому сервису, команды по обеспечению безопасности смогут с легкостью проводить аудит и проверять соответствие требованиям в любом отделе.
Дополнительные характеристики Anchore:
JMeter — это инструмент нагрузочного тестирования, используемый для тестирования веб-приложений. Несмотря на то, что JMeter используется для тестирования нагрузки/производительности, его все равно можно использовать для инициализации вызовов API, обработки ответов и анализа текущего состояния. Плюс ко всему, JMeter поддерживает множество плагинов.
Для инициирования нескольких подключений на поток во время тестирования можно использовать функцию многопоточности.
JMeter не зависит от платформы и работает бесперебойно в различных средах.
Благодаря JMeter, результаты тестов можно просматривать различными способами, включая графики, диаграммы, древовидные представления, XML и JSON.
JUnit — это платформа модульного тестирования программного обеспечения, в основном используемая для приложений Java. Фреймворк JUnit относится к семейству Java-фреймворков xUnit.
JUnit использует Аннотации (Annotations), которые помогают определить методы, максимально предпочтительнее для использования в каждом конкретном тестировании. Его функция запуска тестов известна в сообществе разработчиков благодаря своим уникальным возможностям кастомизации и настройки. Также здесь есть отличная опция использовать Утверждения (Assertions) для проверки ожидаемых результатов.
В JUnit вы можете использовать различные комбинации между несколькими аргументами (arguments). Здесь процесс создания и управления обширными наборами модельных тестов станет максимально простым. JUnit также может автоматически тестировать все функции вашего приложения перед запуском тестирования на уровне модуля или системы.
Selenium — это комплексная платформа для тестирования программного обеспечения, известная своим удобным пользовательским интерфейсом, который позволяет тестировщикам имитировать поведение веб-системы, отправлять запросы API и анализировать ее дальнейшие действия.
Selenium позволяет писать сложные тестовые сценарии на RUBY или HTML для обеспечения комплексного тестирования.
Selenium предоставляет разработчикам веб-приложений полностью интегрированную среду разработки для редактирования, записи и отладки тестов. Вы можете задать индивидуальные начальные и контрольные точки для каждого конкретного тестового случая.
Ключевые особенности Selenium также включают:
SonarQube — это инструмент с открытым исходным кодом, используемый для контроля качества кода, непрерывной проверки, обеспечения безопасности и анализа ошибок. Он отлично интегрируется с Java, Python, XML и PHP и т.д. SonarQube может добавлять правила с помощью XPath выражений, а вы, в свою очередь, можете менять настройки для принудительного применения в определенных ситуациях, где необходимо проигнорировать исключения.
SonarQube в основном используется для статического анализа. Он отлично интегрируется для GitLab. Панели мониторинга SonarQube и высокоуровневое отслеживание позволяют отлично контролировать качество кода.
Пара недостатков заключаются в следующем:
Grafana — платформа для аналитики и мониторинга с открытым исходным кодом, базирующаяся на лицензии Apache 2.0. Известна своим превосходным пользовательским интерфейсом, графиками, диаграммами, аналитикой в реальном времени и триггерами. Grafana может извлекать данные из нескольких источников, включая Graphite, InfluxDB, OpenTSDB и Prometheus.
Grafana в основном используется для мониторинга Docker контейнеров, сетевого оборудования, пропускной способности, потока данных, виртуальных серверов, инфраструктуры Azure, баз данных и веб-приложений. Grafana также славится своими плагинами и бесшовной интеграцией с Telegraf и Zabbix.
Grafana может визуализировать детализированные данные, включая такие показатели, как точное время отключения, события непосредственно перед отключениями, журналы пользователей, температура в центре обработки данных и прогнозы производительности.
New Relic — это полнофункциональный инструмент мониторинга, используемый для отслеживания облачных приложений и программного обеспечения. New Relic предлагает не только богатые разнообразием информационные панели, но и поддержку распределенной трассировки, подробные журналы, обеспечение полноценного мониторинга процессов. New Relic строго отслеживает внутренние вызовы и может дать подробное объяснение причин замедления работы системы.
Данный инструмент полезен для компаний, которым необходим подробный анализ нескольких stack профилей.
New Relic — недешевая платформа, но компания недавно адаптировала свою модель ценообразования под целевого потребителя.
Некоторые недостатки, которые включает в себя New Relic:
Nagios — это программа с открытым исходным кодом, которая отслеживает системы, сети и инфраструктуру. Он активно отслеживает работоспособность служб и обеспечивает сбор, фильтрацию и нормализацию логов. Nagios показывает причины простоя, его продолжительность и возможные причины возникновения неполадок.
Более того, Nagios предлагает несколько вариантов конфигурации и функций оповещения. Вы можете отменять оповещения для хоста, включать режим поддержки, настраивать параметры уведомлений и многое другое.
Nagios поддерживает сотни плагинов. Вы можете создавать свои собственные настройки и разрабатывать поддержку плагинов специально под себя.
Однако, стоит отметить, что платформа Nagios уже порядком устарела и с ней не так просто работать, учитывая постоянные обновления в других средах. В ней не хватает возможности конфигурации в базе данных, что заставляет использовать конфигурационные файлы.
JIRA — это инструмент управления для проектами и совместной работы, используемый компаниями-разработчиками программного обеспечения по всему миру.
Это по настоящему мощный инструмент, предлагающий множество настроек и конфигураций.
Для того, чтобы использовать все преимущества и возможности JIRA, вам скорее всего понадобится эксперт, так как JIRA довольно сложно настроить под конкретный запрос. В JIRA’s Portfolio вы можете создавать временные рамки и планы релиза спринтов. JIRA’s Structure будет полезна для отслеживания процессов на детальном уровне.
Другие функции JIRA включают в себя:
Недостатки JIRA заключаются в:
Slack — это инструмент для совместной работы и коммуникаций, который в последнее время приобрел огромную популярность. Slack славится своими разговорами в режиме реального времени, функцией поиска и удобным пользовательским интерфейсом.
Slack быстрыми темпами замещает электронную почту в индустрии программного обеспечения благодаря своему надежному пользовательскому интерфейсу, интересным функциям и гибкости.
Благодаря такой популярности, интеграция со Slack стала актуальной и для обмена мгновенными сообщениями.
Интеграция JIRA и Slack часто используется для ведения project-журналов, онлайн-ретроспектив, организации продажи билетов/тикет-систем и оповещений.
Персонализированные чат-боты, отлаживание инфраструктуры и триггеров также могут быть задействованы в Slack.
Microsoft Teams — это инструмент для общения и совместной работы. Он полезен для компаний, работающих в экосистеме Windows. Помимо службы обмена мгновенными сообщениями, Teams полезен благодаря своей интеграции с платформой Azure DevOps. Вы также можете дополнительно подключить свои команды к репозиториям и конвейерам Azure.
Teams предлагают различные каналы, по которым команды могут сотрудничать друг с другом. Таким образом для каждого проекта будет создан свой репозиторий для связи, который может быть использован в любое время.
Дополнительные функции включают в себя:
Подводя итог, стоит отметить, что да, выбор действительно велик и такое множество доступных инструментов может быть пугающим. Отсутствие стандартизации и автоматизации может привести к большим сложностям обучения при онбординге и/или дальнейшей передаче управления. Часто команды внутри одной и той же организации инвестируют в аналогичные, дублирующие друг друга инструменты, тратя впустую как время, так и финансовые ресурсы. Таким образом, помимо выгорания разработчиков от бесконечного создания и интеграции цепочек инструментов, версии инструментов устаревают, что приводит к проблемам с безопасностью и дальнейшей интеграцией.
В ходе опроса, проведенного аналитическим отделом Harvard Business Review, 48% респондентов заявили, что их компания полностью полагается на DevOps в контексте повышения эффективности. А более 80% представителей индустрии программного обеспечения заявили, что DevOps значительно повышает ценность их работы в том или ином виде.
Более того, согласно результатам вышеупомянутого опроса, DevOps увеличивает скорость выхода на рынок, масштабируемость, инновационный потенциал и качество продукции для компаний-разработчиков программного обеспечения на глобальном уровне.
2021 год станет важным годом для раскрытия потенциала DevOps. Он охватывает как команды разработчиков, Ops, IT и отделы обеспечения безопасности, так и различные этапы разработки программного обеспечения. Именно поэтому для каждой сферы существует множество инструментов на любой вкус и цвет.
Давайте подробно рассмотрим наиболее выдающиеся инструменты DevOps, доступные на рынке в настоящее время, с учетом важных категорий жизненного цикла CI/CD.
Управление конфигурацией:
Puppet
Puppet — это инструмент управления конфигурацией и развертыванием программного обеспечения с открытым исходным кодом, который обычно используется для приведения хостов к нужному состоянию и поддержания этого состояния. Puppet является агентно-ориентированной моделью и чаще всего используется в Linux и Windows для одновременного управления несколькими серверами приложений. Puppet в основном используется в конфигурациях клиент/сервер с управляемыми узлами, которые остаются синхронизированными с сервером. С помощью R10K, инструмента управления кодом Puppet, стало гораздо проще внедрять автоматические или ручные изменения, обновления, обзоры и тесты кода для CI/CD. Файлы R10K и Puppetfiles также можно использовать для создания автоматического развертывания ваших сред. Такие агентно-ориентированные развертывания отличаются особой точностью, своевременностью и способностью ведения журналов регистрации ошибок.
Puppet также предлагает легкую интеграцию с Git для управления версиями.
Puppet является декларативной системой и обычно подходит для базовой компоновки вместо оркестровки.
Пара недостатков состоит в следующем:
- Медленная скорость выполнения задач
- Неспособность Puppet проверять состояние системы за пределами ресурсов exec без записи пользовательских фактов
- Hiera, которая является системой поиска данных конфигурации с ключевыми значениями Puppet, работает медленно и ее трудно устранить
Ansible
Ansible — это инструмент управления конфигурацией и оркестрацией с открытым исходным кодом, который известен своей простотой и производительностью. Ansible запускается на главном устройстве/машине и использует SSH для подключения к узлам. Ansible можно запускать на любом устройстве с установленным Python 2 (версия 2.7) или Python 3 (версии 3.5 и выше), включая Red Hat, Debian, CentOS, macOS и BSD.
Ansible позволяет очень легко управлять конфигурациями (или плейбуками) с помощью YAML (еще одного языка разметки). Так же Ansible способствует эффективной автоматизации кросс-платформенных задач. Стоит подчеркнуть, что здесь есть режим извлечения Ansible для репозиториев и выполнения команд из определенных файлов. Преобразование сценариев оболочки и файлов конфигурации в сборники или Ansible Playbooks также легко, плюс ко всему, по этому вопросу доступно множество документации.
Некоторые слабые стороны Ansible включают в себя:
- Медлительность с масштабированием или расширением системы
- Отсутствие поддержки Windows
- Неэффективен в случае массовой синхронизации сотен серверов
Chef
Chef — это еще один инструмент управления конфигурациями с открытым исходным кодом. Chef тоже является агент-ориентированной моделью. Благодаря инструменту “knife” (нож) и коммуникации через SSH клиенты Chef могут запускаться локально на каждом клиентском компьютере. Отличие Chef от Puppet состоит в дополнительном слое под названием Workstation, который содержит в себе все конфигурации. Эти конфигурации сначала автоматически тестируются на локальных компьютерах, а затем передаются на сервер.
Chef не превзойдён в случае если конфигурация имеет зависимости между хостами. Он использует описания состояния системы (пакеты, существующие пользователи, каталоги и т.д.) и сравнивает их с экземплярами агентов в реальном времени, гарантируя, что объекты останутся синхронизированными.
Возможности автоматизации Chef для обслуживания более крупных сетей с использованием таких сервисов, как AWS OpsWorks, широко известны в различных отраслях. Chef помогает обеспечить безопасность и целостность вашей сети, а также ее развертывание. Chef Inspect — это платформа с открытым исходным кодом, которая позволяет проводить автоматическое и ручное тестирование и аудит ваших приложений.
Несмотря на сильный графический интерфейс Chef, использовать его возможности на полную мощность, можно только уже освоив Ruby, особенно когда дело доходит до сложных задач и настроек. Вы можете добиться отличного уровня кастомизации, написав скрипты в Chef (также известные как cookbooks и recipes), но во многих ситуациях этого недостаточно.
Пара недостатков Chef заключаются в следующем:
- Периодическая необходимость сверки настроек с мастером для установки обновлений
- Сложно освоить новичкам
- Отсутствие подробной документации
- Не универсальна (сложность масштабирования)
Build:
Jenkins
Jenkins — это средство автоматизации с открытым исходным кодом, основанный на Java, которое используется для автоматизированного создания, тестирования и развертывания программного обеспечения, упрощая непрерывную интеграцию (CI) и непрерывное развертывание для пользователей. Для всех вышеуказанных целей Jenkins использует специальные плагины.
Jenkins проверяет новый пул запросов, включает новые рабочие ветви в основной код, запускает автоматизированные тесты, собирает новые данные, сообщает об ошибках и развертывает обновления кода в среде QA для ручного тестирования.
Jenkins Pipeline — это сочетание заданий для непрерывной доставки программного обеспечения с использованием Jenkins. Достаточно выбрать необходимые файлы сборки в конвейерах, загрузить их в SCM и поставить задачу.
Jenkins существует уже очень давно и уже практически стал золотым стандартом благодаря своей зрелой экосистеме, поддержке плагинов, документации и его комьюнити. За последние годы Jenkins претерпел несколько обновлений. Теперь он является одним из лучших вариантов для многих компаний из-за его простого UX / Синтаксиса для пайплайнов и интеграции с Docker.
Слабые стороны Дженкинса:
- Использовать Jenkins, можно только освоив Groovy, который печально известен своими сложностями и несостыковками. Скрипты Groovy в Jenkins нелегко писать и редактировать, особенно когда требуется много изменений.
- Довольно часто придется вручную настраивать сборки пользовательского интерфейса, файлы конфигурации жесткого кода и недоработанные элементы управления доступом.
- Jenkins практически невозможно использовать без JenkinsFile, это простой текстовый файл, который используется для создания пайплайна и располагается в системе контроля версий вместе с исходным кодом…
TeamCity
TeamCity — это один из самых популярных инструментов CI (доступна ограниченная бесплатная версия), который славится своим простым в применении интерфейсом, удобными настройками и креативными функциями. TeamCity работает в среде Java, на сервере Apache Tomcat, но также может быть установлен на серверах Windows и Linux.
Нужен ли TeamCity именно вам? Это во многом зависит от ваших потребностей. Если вы располагаете бюджетом, и ваши основные задачи включают настройку фиксированного количества агентов сборки с целью создания параллельных цепочек сборки с зависимостями от репозитория Snapshot и артефактов, то TeamCity просто создан для вас. TeamCity также обладает довольно солидной документацией. Функция TeamCity "Snapshot Dependencies" позволяет сохранять одну и ту же исходную версию во всем пайплайне без низкоуровневых реализаций кода.
Стоит отметить, что специально для вас TeamCity автоматически исправляет агенты snowflake с помощью специальных инструментов.
Основанные на конкретных шаблонах, конфигурации сборки TeamCity могут значительно упростить вам жизнь.
TeamCity нативно поддерживает автоматическое масштабирование агентов в AWS, GCE и Azure. Он также поддерживает VMware и Kubernetes с помощью плагинов и имеет встроенную интеграцию с GitHub.
Некоторые недостатки TeamCity заключаются в следующем:
- Дорогой
- Журналы отладки и журналы ошибок довольно сложны для восприятия
Bamboo
Bamboo — это сервер непрерывной интеграции и развертывания, разработанный компанией Atlassian. Одним из ключевых преимуществ Bamboo является его способность интегрировать автоматизированные сборки, тесты и выпуски в единый рабочий процесс с другими продуктами Atlassian (JIRA, BitBucket, Stash, Hipchat и Confluence), создавая прочную экосистему разработки и доставки программного обеспечения.
Bamboo имеет понятный и простой в использовании графический интерфейс.
Простота интеграции с BitBucket, Confluence и Jira также является несомненным преимуществом Bamboo. Он может инициировать подобные cron триггеры, которые пригодятся для запуска, если у вас есть уже имеется необходимая аналитика обзоров, автоматическое тестирование и автоматизированные процедуры, а сотрудники находятся вне офиса.
Но и Bamboo не идеален. Вот некоторые из его недостатков:
- Анализ кода — не самая сильная сторона Bamboo
- Отсутствие возможности централизации и конфигурации сборки
- Нет глобальной конфигурации инструментов (вам придется вручную устанавливать каждый инструмент)
- В Bamboo отсутствуют поддержка и плагины для учетных данных, что означает, что изменения паролей отразятся на всех привязанных к Bamboo проектах
Управление исходным кодом:
GitHub
GitHub — один из самых популярных инструментов управления исходным кодом c миллионами пользователей по всему миру. Основные преимущества GitHub: понятный пользовательский интерфейс с продвинутыми функциями, такими как восстановление случайно удаленных репозиториев, предотвращение случайных удалений, различные интеграции и хороший уровень безопасности. GitHub славится практически не бывает сбоев или простоев, что делает его максимально надежным.
GitHub идеально подходит для проектов с открытым исходным кодом. Плюс ко всему, вокруг него собралось довольно широкое коммьюнити.
Стоит отметить, что Microsoft владеет GitHub. По этой причине для разработчиков Azure и инструментов Microsoft доступны различные возможности интеграции. GitHub предоставляет вам больше вариантов контроля процессов CI/CD.
Между тем, важно учитывать, что GitHub предлагает бесплатные частные репозитории (максимум 3-м сотрудникам на репозиторий).
BitBucket
BitBucket — это веб-сервис для хостинга проектов и их совместной разработки, основанный на системах контроля версий Mercurial и Git. BitBucket полезен, если вы используете другие продукты Atlassian. BitBucket также известен своей эффективностью, когда дело доходит до управления большим количеством репозиториев. В BitBucket вы можете бесплатно создавать любое количество репозиториев.
BitBucket также славится своей интеграцией с JIRA и Confluence. Это поистине лучший выбор для проектов, связанных с частными репозиториями.
Еще одним преимуществом BitBucket является практика CI/CD, позволяющая реализовывать непрерывное развертывание
Несовершенства BitBucket включают в себя:
- BitBucket не поддерживает соглашение SLA
- Запутанный пользовательский интерфейс
GitLab
GitLab, основанный на Git, предоставляет функции управления репозиториями, интеграция с CI-системами, отслеживание ошибок, деплой и анализ кода. Большинство компаний предпочитают использовать GitLab для управления исходным кодом из-за его сильных сервисов CI. GitLab — это то, что нужно, если вы хотите интегрировать CI/CD на своем собственном сервере. GitLab — это бесплатный сервис с открытым исходным кодом, предоставляющий неограниченное количество бесплатных частных репозиториев.
В дополнение к вышеупомянутым преимуществам, GitLab позволяет использовать частные репозитории и имеет простой интерфейс для управления контейнерами.
Развертывание:
Spinnaker
Spinnaker — это платформа с открытым исходным кодом, которая работает с Kubernetes, облачной платформой Google, AWS, Microsoft Azure и Oracle Cloud. В основном она используется для непрерывного развертывания и доставки, принимая ваши артефакты и организуя их развертывание.
Панель управления и интерфейс Spinnaker очень просты в применении. Разработчики могут легко перенести свой код в бранч для релиза, а данная платформа, в свою очередь, автоматически создаст, протестирует, проверит и отправит код в производство. С помощью Spinnaker вы можете использовать бесшовные интеграции сборок Kubernetes, GitHub и Google, чтобы легко вносить и развертывать изменения в свое программное обеспечение.
Spinnaker поможет нативно настроить AMI EC2, ASG и настраивать балансировку нагрузки.
Недостатки заключаются в следующем:
- Отсутствие возможности масштабируемости
- Скудная документация
- Проблемы с автоматизацией задач
Octopus Deploy
Octopus Deploy — это CD-инструмент, используемый для автоматизированного развертывания. Он может автоматически развертывать приложения и службы на устройствах агентов (“щупальцах”). Octopus Deploy подходит для ASP.NET веб-приложений, приложений Java, приложений NodeJS, а также запуска пользовательских сценариев в нескольких средах, включая AWS и Azure. В основном он используется с AzureDevOps и предпочитается компаниями, работающими в экосистеме Microsoft.
Octopus Deploy может интегрировать инфраструктуры CI пайплайнов. Вы можете инициировать API-вызовы в Octopus для создания новых выпусков и отправки двоичных файлов/кодов (binaries) через CI пайплайн.
У Octopus есть некоторые недостатки, к которым относятся:
- Высокая стоимость
- Отсутствие возможности экспорта переменных между проектами
Argo CD
Argo CD — это декларативный инструмент непрерывного развертывания GitOps для кластеров Kubernetes.
Argo CD извлекает конфигурации из репозитория и синхронизирует существующие манифесты Kubernetes, описывающих ваше приложение в репозитории Git. Argo CD может автоматически применять обновленные или измененные манифесты для фиксации изменений в вашем кластере. Сервер ArgoCD может отслеживать ветви развертывания ваших основных проектов, а также может автоматически определять, когда ветвь сборки объединяется с ветвью развертывания. Argo CD сначала развертывает новую версию, предотвращая таким образом вероятность простоев.
Недостатки Argo CD включают в себя:
- Не поддерживает CI, что означает, что вам понадобятся другие инструменты, такие как Jenkins, Travis, Circle CI или Gitlab CI, если вам нужен полный конвейер CI/CD.
- Не поддерживает rollback hook
Управление уязвимостями и (возможными) угрозами:
TwistLock (Сети Пало-Альто)
TwistLock это лидирующее решение, помогающее клиентам защищать контейнеры и контейнерные среды на протяжении всего их жизненного цикла. Сервис известен своей интеграцией с контейнерами Kubernetes и Docker. TwistLock, теперь принадлежащий Palo Alto Networks, обеспечивает проверку безопасности с помощью Runtime App Security Protection и автоматического сканирования контейнеров.
У TwistLock есть развёрнутая документация. Он прост в развертывании и обеспечивает оптимизированное потребление ресурсов. Он также известен своей интеграцией пайплайна CI/CD, строгим соблюдением протоколов безопасности контейнеров и сканированием изображений.
Плюс ко всему, TwistLock известен своим скрупулезным анализом безопасности. Сервис использует возможности искусственного интеллекта для изучения вашей среды, хотя некоторые считают автоматические cron-задания слишком запутанными.
Также в TwistLock возможно сканирование безопасности на базе SaaS (prisma cloud) или on-Prem.
Sysdig
Sysdig — это инструмент мониторинга, используемый для сбора информации о системе (облачной инфраструктуры, службах и приложениях). Sysdig обычно используется для обеспечения безопасности контейнеров, а также для управления и оркестрации PaaS инфраструктур.
Sysdig также полезен для мониторинга кластеров OpenShift, поскольку он предоставляет детализированные данные для дальнейшего анализа.
Важным отличием Sysdig от других подобных инструментов является тесная интеграция мониторинга контейнеров с процессом оркестрации.
Sysdig очень полезен, если вы хотите разобраться в потоке трафика. Это сервис с открытым исходным кодом, что позволяет собирать сведения о хосте на уровне системных вызовов ядра. Процесс захвата также может быть автоматизирован для развертывания в качестве контейнера Docker напрямую или с помощью daemonset.
Дополнительные функции Sysdig включают в себя:
- Сетевые графики
- Возможность запуска self-hosted версии системы мониторинга Sentry
- Мониторинг систем на базе AWS
- Простая интеграция
- Достойный уровень поддержки клиентов
Anchore
Anchore — это комплексное решение для обеспечения безопасности контейнеров, которое легко интегрируется с различными инструментами и платформами. Anchore проверяет контейнеры на соответствие требованиям по целому ряду различных параметров, что позволит командам соблюсти все необходимые отраслевые стандарты безопасности.
Благодаря такому сервису, команды по обеспечению безопасности смогут с легкостью проводить аудит и проверять соответствие требованиям в любом отделе.
Дополнительные характеристики Anchore:
- Поддержка веб-приложений, включая облачные или локальные on-prem среды Kubernetes и CI/CD платформ
- Соответствие стандартам безопасности
- Проверка по следующим параметрам:
- Сканирование уязвимостей
- Секреты и пароли
- Пакеты операционной системы
- Сторонние библиотеки
- Проверка файлов Dockerfiles и т.д.
Тестирование качества:
JMeter
JMeter — это инструмент нагрузочного тестирования, используемый для тестирования веб-приложений. Несмотря на то, что JMeter используется для тестирования нагрузки/производительности, его все равно можно использовать для инициализации вызовов API, обработки ответов и анализа текущего состояния. Плюс ко всему, JMeter поддерживает множество плагинов.
Для инициирования нескольких подключений на поток во время тестирования можно использовать функцию многопоточности.
JMeter не зависит от платформы и работает бесперебойно в различных средах.
Благодаря JMeter, результаты тестов можно просматривать различными способами, включая графики, диаграммы, древовидные представления, XML и JSON.
JUnit
JUnit — это платформа модульного тестирования программного обеспечения, в основном используемая для приложений Java. Фреймворк JUnit относится к семейству Java-фреймворков xUnit.
JUnit использует Аннотации (Annotations), которые помогают определить методы, максимально предпочтительнее для использования в каждом конкретном тестировании. Его функция запуска тестов известна в сообществе разработчиков благодаря своим уникальным возможностям кастомизации и настройки. Также здесь есть отличная опция использовать Утверждения (Assertions) для проверки ожидаемых результатов.
В JUnit вы можете использовать различные комбинации между несколькими аргументами (arguments). Здесь процесс создания и управления обширными наборами модельных тестов станет максимально простым. JUnit также может автоматически тестировать все функции вашего приложения перед запуском тестирования на уровне модуля или системы.
Selenium
Selenium — это комплексная платформа для тестирования программного обеспечения, известная своим удобным пользовательским интерфейсом, который позволяет тестировщикам имитировать поведение веб-системы, отправлять запросы API и анализировать ее дальнейшие действия.
Selenium позволяет писать сложные тестовые сценарии на RUBY или HTML для обеспечения комплексного тестирования.
Selenium предоставляет разработчикам веб-приложений полностью интегрированную среду разработки для редактирования, записи и отладки тестов. Вы можете задать индивидуальные начальные и контрольные точки для каждого конкретного тестового случая.
Ключевые особенности Selenium также включают:
- Интеграция с несколькими платформами разработки, такими как Jenkins, Maven, TestNG, QMetry, SauceLabs.
- Параллельное тестирование с помощью Selenium Grid
- Совместимость со всеми известными языками, включая Java, Ruby, C#, PHP, JavaScript, Perl и R.
SonarQube
SonarQube — это инструмент с открытым исходным кодом, используемый для контроля качества кода, непрерывной проверки, обеспечения безопасности и анализа ошибок. Он отлично интегрируется с Java, Python, XML и PHP и т.д. SonarQube может добавлять правила с помощью XPath выражений, а вы, в свою очередь, можете менять настройки для принудительного применения в определенных ситуациях, где необходимо проигнорировать исключения.
SonarQube в основном используется для статического анализа. Он отлично интегрируется для GitLab. Панели мониторинга SonarQube и высокоуровневое отслеживание позволяют отлично контролировать качество кода.
Пара недостатков заключаются в следующем:
- Не очень хорошо работает с JavaScript
- Иногда медленный
- Ограниченная поддержка сторонних инструментов и плагинов
Ведение журнала и мониторинг:
Grafana
Grafana — платформа для аналитики и мониторинга с открытым исходным кодом, базирующаяся на лицензии Apache 2.0. Известна своим превосходным пользовательским интерфейсом, графиками, диаграммами, аналитикой в реальном времени и триггерами. Grafana может извлекать данные из нескольких источников, включая Graphite, InfluxDB, OpenTSDB и Prometheus.
Grafana в основном используется для мониторинга Docker контейнеров, сетевого оборудования, пропускной способности, потока данных, виртуальных серверов, инфраструктуры Azure, баз данных и веб-приложений. Grafana также славится своими плагинами и бесшовной интеграцией с Telegraf и Zabbix.
Grafana может визуализировать детализированные данные, включая такие показатели, как точное время отключения, события непосредственно перед отключениями, журналы пользователей, температура в центре обработки данных и прогнозы производительности.
New Relic
New Relic — это полнофункциональный инструмент мониторинга, используемый для отслеживания облачных приложений и программного обеспечения. New Relic предлагает не только богатые разнообразием информационные панели, но и поддержку распределенной трассировки, подробные журналы, обеспечение полноценного мониторинга процессов. New Relic строго отслеживает внутренние вызовы и может дать подробное объяснение причин замедления работы системы.
Данный инструмент полезен для компаний, которым необходим подробный анализ нескольких stack профилей.
New Relic — недешевая платформа, но компания недавно адаптировала свою модель ценообразования под целевого потребителя.
Некоторые недостатки, которые включает в себя New Relic:
- Низкий уровень сервисной поддержки
- Дорого даже после корректировки цены
- Сложный процесс отладки
Nagios
Nagios — это программа с открытым исходным кодом, которая отслеживает системы, сети и инфраструктуру. Он активно отслеживает работоспособность служб и обеспечивает сбор, фильтрацию и нормализацию логов. Nagios показывает причины простоя, его продолжительность и возможные причины возникновения неполадок.
Более того, Nagios предлагает несколько вариантов конфигурации и функций оповещения. Вы можете отменять оповещения для хоста, включать режим поддержки, настраивать параметры уведомлений и многое другое.
Nagios поддерживает сотни плагинов. Вы можете создавать свои собственные настройки и разрабатывать поддержку плагинов специально под себя.
Однако, стоит отметить, что платформа Nagios уже порядком устарела и с ней не так просто работать, учитывая постоянные обновления в других средах. В ней не хватает возможности конфигурации в базе данных, что заставляет использовать конфигурационные файлы.
ITSM и коллаборации:
JIRA
JIRA — это инструмент управления для проектами и совместной работы, используемый компаниями-разработчиками программного обеспечения по всему миру.
Это по настоящему мощный инструмент, предлагающий множество настроек и конфигураций.
Для того, чтобы использовать все преимущества и возможности JIRA, вам скорее всего понадобится эксперт, так как JIRA довольно сложно настроить под конкретный запрос. В JIRA’s Portfolio вы можете создавать временные рамки и планы релиза спринтов. JIRA’s Structure будет полезна для отслеживания процессов на детальном уровне.
Другие функции JIRA включают в себя:
- Zephyr для JIRA — это собственное тестовое приложение, которое можно использовать в течение всего жизненного цикла тестирования программного обеспечения
- Инструмент исследования критического пути/ Critical path tool
- Собственные инструменты для расчета скорости процессов
- Интеграция с продуктами Atlassian, такими как BitBucket и Bamboo
Недостатки JIRA заключаются в:
- Скучный и запутанный пользовательский интерфейс
- Бакеты/контейнеры в JIRA называются “Проектами”, что тоже немного сбивает с толку
Slack
Slack — это инструмент для совместной работы и коммуникаций, который в последнее время приобрел огромную популярность. Slack славится своими разговорами в режиме реального времени, функцией поиска и удобным пользовательским интерфейсом.
Slack быстрыми темпами замещает электронную почту в индустрии программного обеспечения благодаря своему надежному пользовательскому интерфейсу, интересным функциям и гибкости.
Благодаря такой популярности, интеграция со Slack стала актуальной и для обмена мгновенными сообщениями.
Интеграция JIRA и Slack часто используется для ведения project-журналов, онлайн-ретроспектив, организации продажи билетов/тикет-систем и оповещений.
Персонализированные чат-боты, отлаживание инфраструктуры и триггеров также могут быть задействованы в Slack.
Microsoft Teams
Microsoft Teams — это инструмент для общения и совместной работы. Он полезен для компаний, работающих в экосистеме Windows. Помимо службы обмена мгновенными сообщениями, Teams полезен благодаря своей интеграции с платформой Azure DevOps. Вы также можете дополнительно подключить свои команды к репозиториям и конвейерам Azure.
Teams предлагают различные каналы, по которым команды могут сотрудничать друг с другом. Таким образом для каждого проекта будет создан свой репозиторий для связи, который может быть использован в любое время.
Дополнительные функции включают в себя:
- Репозитории файлов
- Телефонная/видеоконференцсвязь
- Интеграция чат-ботов
- Интеграция с Office 365
Подводя итог, стоит отметить, что да, выбор действительно велик и такое множество доступных инструментов может быть пугающим. Отсутствие стандартизации и автоматизации может привести к большим сложностям обучения при онбординге и/или дальнейшей передаче управления. Часто команды внутри одной и той же организации инвестируют в аналогичные, дублирующие друг друга инструменты, тратя впустую как время, так и финансовые ресурсы. Таким образом, помимо выгорания разработчиков от бесконечного создания и интеграции цепочек инструментов, версии инструментов устаревают, что приводит к проблемам с безопасностью и дальнейшей интеграцией.
Топ 25 инструментов DevOps 2021
DevOps инструменты трансформируют процессы разработки программного обеспечения на мировом уровне. Давайте ознакомимся с лучшими из лучших на сегодняшний день. В ходе опроса, проведенного аналитическим...
habr.com