Революция DevOps наконец стала мейнстримом, и популярность инструментов DevOps значительно выросла. Согласно Google Trends, количество поисков «инструменты DevOps» постоянно растет, и эта тенденция продолжается. Поскольку DevOps охватывает весь жизненный цикл разработки программного обеспечения, есть множество инструментов — а как известно, ни один инструмент не может подходить всем одновременно. Тем не менее, есть такие инструменты, которые предоставляют широкий спектр поддержки практически для любого сценария.
Давайте разберем лучшие в своем классе инструменты по следующим категориям:
- Инструменты разработки и сборки
- Инструменты автоматизированного тестирования
- Инструменты развертывания
- Инструменты среды выполнения
- Инструменты для совместной работы
Инструменты разработки и сборки
Это основа конвейерного стека CI/CD. Лучшие инструменты в этой категории могут управлять несколькими потоками событий и легко интегрироваться с внешними инструментами.
Инструменты в этой части жизненного цикла разработки программного обеспечения подразделяются на три подкатегории:
- Управление исходным кодом (SCM)
- Непрерывная интеграция (CI)
- Управление данными
Рекомендуемой технологией SCM в 2020 году является GIT, поэтому инструмент SCM должен иметь отличную поддержку GIT. Для CI способность запускать и выполнять сборки в контейнерной среде — необходима. Что касается управления данными, необходимо иметь возможность вносить изменения в схему базы данных и поддерживать ее в соответствие с версией приложения.
Инструмент SCM + CI: Gitlab и Gitlab-CI
Gitlab — основной инструмент жизненного цикла DevOps 2020 года, и он станет инновационным лидером в ближайшем будущем.
Основная функциональность Gitlab обеспечивает безупречный инструмент управления GIT-хранилищем. Его веб-интерфейс является наиболее подробным и простым в использовании. Gitlab предоставляет все необходимое с бесплатным предложением уровня и поставляется в форм-факторах SaaS и On-Prem.
Ключевые преимущества
- Возраст — продукт существует на рынке с 2013 года и является чрезвычайно стабильным и хорошо поддерживается.
- Открытый исходный код — бесплатная версия Gitlab не ограничивает основные функциональные возможности, которые нужны командам разработчиков. Каждый платный уровень предоставляет дополнительные функции, которые приносят огромную пользу в зависимости от размера и потребностей вашей организации.
- Укоренившаяся CI — ни один другой инструмент на рынке не внедрил непрерывную интеграцию непосредственно в ваш SCM, как Gitlab-CI. Использования Docker для беспроблемного создания сборок, а встроенные отчеты упрощают отладку сбоев. Там нет сложной интеграции и оркестровки нескольких инструментов.
- Неограниченные интеграции — Gitlab обеспечивает простую интеграцию инструментов, необходимых в каждой из основных категорий DevOps. Это позволяет разработчикам и операциям иметь единый правдивый источник информации, относящейся к их применению.
Инструмент управления данными: FlywayDB
Наиболее игнорируемым аспектом разработки веб-приложений являются потребности в автоматизации базы данных. Часто возникает мысль о развертывании изменений схемы базы данных для новых версий приложения. Изменения схемы часто добавляют или переименовывают столбцы или таблицы. Если версия приложения не соответствует версии схемы, приложение может полностью сломаться. Также может быть сложно организовать изменение базы данных при обновлении приложения, поскольку существуют две разные системы. FlyWayDB решает все эти проблемы.
Ключевые преимущества
- Управление версиями базы данных — FlyWay позволяет вам просто создавать версии базы данных, отслеживать миграцию базы данных и легко откатывать или возвращать изменения схемы без какого-либо специального решения для этого.
- Двоичный или встроенный — у вас есть возможность запускать Flyway как часть запуска вашего приложения или как двоичный исполняемый файл. Используйте этот инструмент в своем коде, чтобы он проверял возможности версий при запуске и запускал соответствующие миграции, поддерживая синхронизацию версий базы данных и приложений. Вы также можете запустить команду cmd line ad-hoc, предоставляя гибкость для существующих баз данных без перестройки всего приложения.
Инструмент автоматизированного тестирования: Cucumber
Cucumber объединяет спецификации и тестовую документацию в единый, живой документ. Поскольку они автоматически тестируются компанией Cucumber, ваши спецификации всегда актуальны. Если вы хотите создать начало для завершения инфраструктуры тестирования веб-автоматизации и симуляции поведения пользователя в веб-приложении, то Selenium WebDriver с Java и Cucumber BDD – хороший способ изучить и внедрить Cucumber в своем проекте.
Ключевые преимущества
- Разработка, основанная на поведении — Cucumber предназначен для тестирования BDD, который стал основой для тестирования (по сравнению с традиционной разработкой, основанной на тестировании).
- Живая документация. Документировать все, что вы сделали, это всегда боль. Поскольку ваши тесты определены как код, Cucumber тестирует автоматически генерируемую документацию, чтобы убедиться, что они всегда синхронизированы.
- Поддержка. Существует множество инструментов, из которых можно выбирать, но когда дела становятся серьезными, вам нужна серьезная поддержка со стороны сопровождающего инструмента. У Cucumber есть финансирование и структура поддержки, чтобы поддерживать инструмент на долгие годы.
Инструменты развертывания
Инструменты развертывания являются, вероятно, наименее понятным аспектом разработки приложений. Сложно использовать инструмент развертывания без глубокого понимания кода и функциональности приложения. Для разработчиков управление развертыванием кода является новой обязанностью, поэтому у них мало опыта работы со многими инструментами развертывания.
Давайте разделим инструменты развертывания на три подкатегории:
- Управление артефактами
- Управление конфигурацией
- Развертывание
Инструмент управления артефактами: Nexus
Хранилище артефактов Nexus поддерживает практически все основные технологии, от Java до NPM и Docker. Этот инструмент можно использовать для хранения всех наших развертываемых артефактов. Возможность прокси-управления удаленными менеджерами пакетов также значительно увеличивает скорость наших сборок CI, приближая пакеты к процессу сборки. Еще одним преимуществом этого является то, что можно получить общее представление обо всех пакетах, используемых в нескольких программных проектах, блокируя небезопасные пакеты с открытым исходным кодом, которые могут быть вектором атаки в коде.
Ключевые преимущества
- Технологическая поддержка — продукт присутствует на рынке с 2013 года и является чрезвычайно стабильным и хорошо поддерживается.
- Открытый исходный код — бесплатная версия Gitlab не ограничивает основные функциональные возможности, которые нужны командам разработчиков. Каждый платный уровень предоставляет дополнительные функции, которые приносят огромную пользу в зависимости от размера и потребностей вашей организации.
Инструмент управления конфигурацией: Ansible
Ansible является лидером в этом направлении. Более ранние инструменты управления конфигурацией на сцене были сосредоточены на управлении состоянием нашей конфигурации. Если он выйдет из режима блокировки с нужным конфигом, он исправит себя. В новых приложениях у нас есть только компоненты без сохранения состояния. Новые версии кода являются новыми артефактами и развернуты для замены чего-либо существующего.
Ключевые преимущества
- Stateless — Ansible playbook запускаются с компьютера оператора и попадают в сервер. Состояние удаленного объекта не имеет значение, что упрощает использование такого инструмента, как Packer, для создания развертываемых объектов.
- Открытый исходный код — как и CentOS, Ansible также поддерживается RedHat. Это предприятие и его высокий уровень поддержки помогают поддерживать сообщество и обеспечивают высококачественные, простые в использовании модули.
- YAML — по сравнению с другими инструментами, YAML легче обернуть голову. Поскольку управление конфигурацией, как правило, является новым для тех, кто принимает DevOps, это делает его ключевым пунктом продажи.
Инструмент развертывания: Terraform
Terraform решает проблему определения вашей инфраструктуры как кода, от сетевых компонентов до реальных образов сервера. Он прошел долгий путь с момента первого выпуска и создал огромное сообщество плагинов и поддержки, которые помогут практически в любом сценарии развертывания, с которым вы можете столкнуться. Способность поддерживать любой тип среды, локально, в облаке или что-то еще, не имеет себе равных. Наконец, последняя версия предоставляет большую часть тех же логических функций и классов в HCL, что и любой другой традиционный язык программирования, что позволяет разработчикам легко выбирать и изучать.
Ключевые преимущества
- Независимость от облачной среды — Terraform использует сервисы, которые действуют как интерфейс между вашим кодом Terraform и всем API и внутренней логикой, необходимой для связи с вашим поставщиком инфраструктуры. Это означает, что я могу выучить один инструмент и иметь возможность работать где угодно.
- Открытый исходный код — Опять же, трудно выбить бесплатные инструменты. Поддержка сообщества на высшем уровне.
Инструменты среды выполнения
Конечной целью любого проекта разработки является запуск приложения в производство. В мире DevOps мы хотим убедиться, что у нас видны все потенциальные проблемы с нашей средой, а также хотим свести к минимуму вмешательство человека вручную. Выбор правильной среды выполнения крайне важен для достижения нирваны разработки.
Инструмент XaaS: Amazon Web Services
Amazon всегда был лидером в облаке. Они не просто не останавливаются на этом — у них есть так много новых сервисов, которые разработчики могут использовать. Перенесите любую технологию и любой шаблон в AWS, и он может быть построен и запущен. Их стоимость чрезвычайно разумна по сравнению со сборкой, управлением и обслуживанием традиционного оборудования в вашем собственном центре обработки данных. Бесплатный уровень услуг дает каждому возможность поэкспериментировать с чем-либо, прежде чем принимать решение о покупке, что отлично подходит для попыток построить приложение правильным способом вместо необходимости идти на компромисс из-за затрат.
Ключевые преимущества
- Промышленный стандарт. Если у вас есть опыт создания приложений в AWS, вы можете получить работу где угодно. Предприятия любят AWS, а стартапы — низкую стоимость AWS.
- Free-Tier — это действительно бизнес-аспект, который AWS сделал так правильно по сравнению со всем остальным.
Инструмент оркестровки: OpenShift
Вы, вероятно, используете Docker или контейнеры где-то в вашем стеке приложений. Безсерверные приложения хороши, но они не могут соответствовать каждому шаблону архитектуры. Запуск контейнеров без платформы оркестровки просто не работает. OpenShift является единственной платформой Kubernetes, которая имеет все это от сборок Source2Image, автоматизации развертывания в модули и даже отслеживания и мониторинга. Он может быть запущен сразу, в облаке или в обоих случаях.
Ключевые преимущества
- Встроенная система безопасности — для управления безопасностью K8 может потребоваться докторская степень. Надо тщательно продумать и учесть каждую деталь. Механизмы безопасности, установленные по умолчанию с помощью OpenShift, отнимают много лишних функциональных нагрузок у разработчиков и обеспечивают более безопасную платформу для их приложений.
- Решение «все в одном» — в отличие от vanilla K8, который по умолчанию не включает инструменты балансировки нагрузки, в OpenShift есть все. Его можно использовать для размещения своих контейнеров, создания контейнеров, запуска инструментов CI/CD, управления внешними процессами и многого другого. Хотя GUI по-прежнему требует немного больше работы, подход API-first означает, что все может быть написано в сценарии, и, в отличие от других графических интерфейсов для K8, он значительно упрощает изучение основ Kubernetes без предварительной получения этой степени!
Инструмент мониторинга: New Relic
Ранние выпуски New Relic сделали одну вещь действительно хорошо — мониторинг APM. Теперь это полнофункциональный инструмент мониторинга, позволяющий мне отслеживать производительность сервера, производительность контейнера, производительность базы данных, мониторинг конечного пользователя и, конечно, мониторинг APM.
Ключевые преимущества
- Простота использования — это SaaS, поэтому не нужно настраивать серверный компонент.
- Сквозная видимость — другие инструменты пытаются отслеживать один конкретный аспект вашего приложения. Будь то загрузка ЦП или сетевой трафик, все эти слои работают вместе, чтобы ваше приложение работало. New Relic дает вам возможность объединить все данные, чтобы получить истинное представление о том, что происходит.
Инструменты DevOps для совместной работы
DevOps в первую очередь касается изменения культуры внутри организации. Хотя покупка инструмента не изменит культуру в одночасье, она, безусловно, может помочь создать новые способы работы с вашими коллегами.
Подкатегории инструментов для совместной работы:
- Отслеживание проблем
- ChatOps
- Документация
Инструмент отслеживания проблем: Jira
Jira продолжает удерживать лидирующие позиции, несмотря на то, что конкуренция в этом пространстве возрастает. Тем не менее, невероятная гибкость, встроенная в Jira, позволяет командам разработчиков и операционным командам управлять своей проектной работой и задачами спринта. Встроенные стандарты, использующие гибкую терминологию, помогают облегчить переход от традиционных методов работы к более экономичным процессам.
Ключевые преимущества
- Промышленный стандарт — опять же, как и многие другие инструменты, Jira используется практически везде. Небольшие команды могут использовать дешевую лицензию и получать все, что им нужно, в то время как предприятия могут позволить себе лицензию для любого.
- Интеграции — Быть первым в этом направление и быстрый рост означает, что сторонние инструменты выбирают вас для создания собственных интеграций с первой, и они просто увеличивают ценность вашего инструмента, и это имеет место в случае с Jira. Можно интегрировать со всеми другими инструментами, перечисленными в этой статье.
Инструмент ChatOps: MatterMost
Mattermost — это интерактивный онлайн-чат с открытым исходным кодом, с возможностью обмена файлами, поиска и интеграции. Он разработан как внутренний чат для организаций и компаний и в основном позиционируется как альтернатива Slack и Microsoft Team с открытым исходным кодом. Огромный плюс для предприятий в том, что он позволяет контролировать данные и хранить их на собственном сервере.
Ключевые преимущества
- Открытый исходный код — версия MatterMost с открытым исходным кодом прекрасно работает как для небольших, так и для больших команд. В отличие от бесплатного уровня Slack, где вы теряете историю, запуск сервера самостоятельно означает, что у вас есть ваши данные.
- Интеграции. Поскольку API почти на 100% основан на Slack API, почти все интеграции Slacks можно использовать напрямую с MatterMost.
Инструмент документации: Confluence
Создание и поддержание качественной технической документации сложно независимо от используемого вами инструмента. Хотя в последнее время на рынке появилось много инструментов документации SaaS, трудно согласиться на хранение конфиденциальной технической документации о критически важных приложениях третьим лицам, необходимо хранить данные и документы на собственном сервере, это и делает Confluence.
Ключевые преимущества
- Простота в управлении — большинство инструментов для самостоятельного размещения могут быть немного сложны в настройке и эксплуатации, и для их поддержания требуются определенные знания. Сервер Confluence отлично работает из коробки для 10 пользователей или 10000.
- Плагины. Несмотря на то, что создание красивой и простой в навигации документации по умолчанию уже великолепно, возможность иметь плагин практически для всего, что раскрывает потенциал Wiki.