Когда приходит время подбирать инструментарий для работы, хочется, чтобы на процесс уходило немного времени, но и результат устроил. На рынке появилось множество удобных средств для DevOps, и мы решили подготовить по ним обзорную статью, классифицировав приложения по категориям. Опытным девопсерам этот список поможет держать описания рабочих инструментов под рукой, чтобы освежить в памяти при необходимости, а новичкам — не тратить дни на поиски информации в интернете.
Что такое DevOps?
DevOps — это современная методология, которая объединяет технические и управленческие методы, позволяющие ускорить релиз программного продукта и повысить его качество. В основном это инструменты автоматизации для разных этапов жизненного цикла ПО: планирования, разработки, тестирования, развертывания, получения обратной связи от пользователей. Название методологии состоит из объединения двух слов — development и operations — и говорит о том, что специалисты по разработке и по обслуживанию программного продукта работают в тесной связке. Подробнее о том, что такое DevOps, читайте в нашей статье по ссылке.
Преимущества DevOps
Методология позволяет разрабатывать и тестировать ПО небольшими параллельными итерациями, а также быстро, на ходу вносить изменения в код, не прерывая других процессов создания программного продукта. Качество ПО при этом не страдает, и даже повышается благодаря стандартизации и автоматизации большинства рутинных процессов.
Инструменты DevOps
Все методы, применяемые в DevOps-культуре, группируются исходя из задач. Они имеют несколько категорий, в каждой из которых — свой набор инструментов. Например, для управления исходным кодом мы подобрали восемь самых популярных инструментов, для непрерывной интеграции — семь. Всего в статье 10 категорий:
Планирование и сотрудничество
Управление исходным кодом
Инструменты для сборки
Управление конфигурацией
Непрерывная интеграция
Непрерывная безопасность
Тестирование
Мониторинг
Облачный хостинг
Контейнеризация / Оркестрация
Планирование и сотрудничество
Система управления проектами от Atlassian. Применяется для планирования и оценки задач спринта, а также для отслеживания проекта и ошибок в нем. JIRA — один из стандартов DevOps-инструментария, его используют и крупные организации, и небольшие команды. Совместим с разными продуктами Atlassian и других производителей. Бесплатно до 10 пользователей.
Облачный инструмент для совместной работы над проектами. Позволяет обмениваться сообщениями и файлами. В бесплатной версии история чата удаляется. Есть интеграции с JIRA, GIT, Jenkins, Asterisk.
Популярнейшая онлайн-платформа для видео-конференций. Участников видно в отдельных окнах. Каждый может убрать свое изображение, отключить микрофон. В одну конференцию может добавиться до 1000 человек. Есть чат с обменом файлами. Можно вести запись (с оповещением пользователей). Есть демонстрация экрана. Для бесплатных лицензий — ограничение на конференцию в 40 минут.
Сложная система управления портфелями проектов и продуктов. Имеет интерактивный интерфейс. Автоматизация создания отчетов и других рутинных действий. Есть чат, а также обмен файлами и ссылками, причем с возможностью их видеть внешним пользователям. Есть функции аналитики, прогнозирования и финансового менеджмента.
Еще один популярный инструмент для работы команд над задачами и проектами. Существует в виде web- и мобильного приложений. Имеет три варианта отображения: канбан-доски, списки и хронологические таблицы. Возможность формировать планы проектов. Бесплатно до 15 человек.
Управление исходным кодом
Открытая система управления версиями и контроля исходного кода от Apache. Возможности:
- Контроль изменений каталогов.
- Настоящая история версий.
- Атомарная фиксация изменений.
- Метаданные с версиями.
- Единый способ работы с данными.
Эффективные ветки и метки.
Эта распределенная система контроля версий является стандартом индустрии. Поддерживает все современные формы разработки, сохраняет целостность данных. Позволяет отслеживать изменения и проблемы в любых файлах и фиксирует их в форме коммитов. Простой интерфейс.
Популярнейшая SaaS-система контроля версий и размещения проектов. Платформа позволяет создавать функции и запросы, управлять задачами, проверять код, отслеживать изменения и ошибки, контролировать доступ.
Web-сервис для облачного хостинга и совместной работы над проектами от Atlassian. Основан на Git и Mercurial. Интеграция с Jira, Jenkins, Bamboo. Встроенный CI/CD. Функциональность аналогична GitHub, но с преимуществом для команд до 5 человек — бесплатное размещение приватных репозиториев.
Открытая система хостинга и комфортного управления Git-репозиториями (публичными и приватными). Конкурент GitHub. Поддерживает полный цикл разработки. Имеет версии SaaS и On-Premise. Использует непрерывную интеграцию (CI) непосредственно в репозитории разработчика, а также совместима с другими известными CI-системами. Имеет свою базу знаний, возможность комментирования задач, CI/CD-пайплайны, возможность анализировать код и функциональность API. GitLab позволяет управлять группами пользователей и разграничением доступа к репозиториям.
Открытая платформа для непрерывного анализа и проверки качества кода по известным стандартам программирования. Решение позволяет внедрить статистический анализ кода и поиск ошибок в процесс разработки ПО. Платформа способна поддерживать разные языки программирования через плагины.
Система для анализирования качества кода и безопасности приложений, написанный с помощью фреймворка Ruby on Rails. Позволяет производить проверку кода и поиск ошибок при помощи командной строки.
Консольный инструмент для распределенного управления версиями объемных репозиториев. Поддерживает децентрализованную работу, ветвление проекта (с копированием изменений) и слияние репозиториев.
Инструменты для сборки
Скриптовый набор программ с открытым исходным кодом от Apache для автоматизации компилирования, сборки, тестирования и запуска Java-приложений. Поддерживает формат XML.
Решение для автоматизации сборки от Apache. Проект с зависимостями, каталоги и последовательность сборки также описаны в XML-файле. Применяется в большинстве случаев для Java-приложений, однако имеет плагины для интеграции с другими языками: C/C++, PHP, Ruby, Scala и пр. Из особенностей: декларативное описание проекта.
Инструмент для сборки JavaScript-приложений из командной строки. Для автоматизации рутинных операций (модульное тестирование, минификация, компиляция и пр) применяется встроенный менеджер задач. Распространение — под лицензией MIT через менеджер пакетов NPM.
Еще одна популярная система автосборки. Основана на принципах Ant и Maven, но предоставляет DSL не в XML, а на Kotlin и Groovy. Предназначена для многопроектных сборок, поддерживает добавочные сборки и автоматически определяет обновленные части. Собирает статистику об использовании библиотек.
Управление конфигурацией
Кроссплатформенная открытая клиент-серверная система централизованного управления конфигурациями ОС и ПО, установленных на нескольких компьютерах. Написана на Ruby DSL. Позволяет управлять и настраивать многочисленные серверы, определять и исправлять сбои в инфраструктуре, распознавать зависимости. Поддерживает динамическое масштабирование машин и Iac-концепцию. Имеет более пяти тысяч модулей.
Система управления конфигурациями и автоматизации процессов сборки ПО. Языки: Ruby, Erlang и предметно-ориентированный язык для описания конфигураций. Упрощает настройку и поддержку множества серверов, интегрируется в облака для автоматизации управления текущими настройками серверов. Описания того, как управлять системой и приложениями, установленными в ней, содержатся в «рецептах».
Знаменитая система удаленного управления конфигурациями, лидер рынка. Автоматизирует настройку и развертывание ОС и ПО. Языки: Python и декларативный язык разметки. Основана на IaC-принципах. Поддерживает безагентную модель работы, подключаясь к удаленным виртуальным и выделенным серверам по SSH, WinRM.
Система для удаленного конфигурирования серверов и оркестрации не контейнеризованных приложений. Альтернатива для Ansible. Это открытое ПО, написанное на Python. Поддерживает IaaS-подход в управлении облачными вычислениями. Отличается скоростью работы, для обмена сообщениями использует ZeroMQ и raw tcp.
Открытое ПО для управления внешними ресурсами от HashiCorp. В DevOps чаще всего используется для безопасного и эффективного построения, развертывания и управления версиями облачной ИТ-инфраструктуры. Позволяет определять инфраструктуру в коде, изменять ее и отслеживать изменения. Также позволяет создавать свои решения. Есть бесплатная ограниченная версия (без серверной части).
Утилита командной строки для создания виртуальных машин и управления ими с помощью технологии виртуализации. Сокращает время настройки и оптимизации среды с помощью автоматизации процессов. Простая установка, IaC-подход.
Непрерывная интеграция
Популярнейшая в DevOps серверная система для непрерывной интеграции и доставки. Позволяет быстро находить и исправлять баги, автоматически тестировать и запускать сборку. Поддерживает конвейерный принцип сборки и развертывания. Интегрируется с другими инструментами DevOps через множество плагинов. Может устанавливаться через Docker и работать на Windows, Mac OS и Linux, а также в контейнере сервлетов. Написан на Java.
Облачный распределенный веб-сервис для непрерывной интеграции. В качестве хостинга исходного кода использует GitHub. Написан на Ruby. Настраивается через YAML-файл. Бесплатный для проектов с открытым исходным кодом.
Серверное CI/CD-решение для непрерывной интеграции от Atlassian. Может использоваться в облаке и On-Premise. Встроенные рабочие процессы и среда тестирования (Git, Mercurial) позволяют обходиться без сторонних плагинов.
Серверное ПО от JetBrains, предназначенное для непрерывной интеграции, считается аналогом Jenkins. Позволяет проводить одновременно несколько удаленных сборок, детализируя информацию о процессе. Предотвращает запуск с ошибками, нарушающими сборку кода. Перед коммитом тестирует продукт в разном программном окружении и на разных платформах. Написано на Java, поддерживает платформы на .NET, PHP и Ruby. Есть интеграция со средами разработки Visual Studio, IntelliJ IDEA, Eclipse и множеством плагинов с открытым исходным кодом.
Платформа для непрерывной сборки и непрерывного деплоя. Быстрая настройка сервера сборки с помощью YAML-файла. Система доступна в вариантах Cloud и On-premise.
Веб-инструмент непрерывной интеграции для GitLab, автоматизирующий рутинные задачи при разработке приложений: тестирование, проверку кода, статический анализ, развертывание. Осуществляет интеграцию с использованием образа Docker из Docker Hub и ссылается на любые зависимости, доступные на Docker Hub — это позволяет не устанавливать на сервер Ant, Node.js или Maven.
Непрерывная безопасность
Программа для обеспечения безопасности при использовании в разработке открытого исходного кода. Умеет автоматически проверять зависимости для различных экосистем (Java, JS, PHP, Python, .Net, NPM, jQuery и др) по обширной базе уязвимостей и исправлять найденные уязвимости.
Веб-приложение для автоматизации безопасности. Изучает новый коммит, сканируя его на наличие уязвимостей. Если ошибка найдена — сообщает о ней в систему отслеживания (например, GitHub или Jira) и повторно сканирует после исправления ошибки разработчиком. Интегрируется на каждом этапе SDLC.
Тестирование
Инструмент для автоматизации кросс-браузерного тестирования веб-приложений на Java в браузерах и ОС. Открытый исходный код, интеграция с различными DevOps-инструментами: Jenkins, Bamboo, JIRA, ALM, Teamcity. Этот веб-драйвер также применяется для решения рутинных задач администрирования сайта.
Популярный фреймворк для модульного авто-тестирования ПО на Java, который лежит в основе Test-Driven Development. Позволяет запускать и писать повторяющиеся тесты (поддерживает разные аннотации). Есть интеграция с другими известными DevOps-инструментами, например, GIT, Jenkins.
Тестовая среда с открытым исходным кодом, созданная для Java по мотивам JUnit и NUnit. Можно интегрировать с Selenium, чтобы настраивать и запускать сценарии тестирования. Генерирует отчеты в XSLT и HTML.
Мониторинг
Открытая система непрерывного мониторинга компьютерных систем (включая серверы), приложений и сетей. Nagios осуществляет администрирование и контроль состояния систем, а также создает уведомления об отказах систем. С помощью этого решения можно контролировать всю ИТ-инфраструктуру с ведением учета событий.
Это веб-платформа для аналитики и интерактивной визуализации данных мониторинга ИТ-систем, включая приложения и аппаратную часть. Реализована в виде дашбордов (приборных панелей), а также графиков и таблиц. Имеет открытый исходный код. Grafana способна собирать данные из нескольких десятков источников, в том числе из таких систем, как Elasticsearch, Prometheus, InfluxDB, AWS CloudWatch. Позволяет создавать и совместно использовать свои панели инструментов. Благодаря такой широкой функциональности активно применяется в современных стеках.
Это веб-платформа для аналитики и интерактивной визуализации данных мониторинга ИТ-систем, включая приложения и аппаратную часть. Реализована в виде дашбордов (приборных панелей), а также графиков и таблиц. Имеет открытый исходный код. Grafana способна собирать данные из нескольких десятков источников, в том числе из таких систем, как Elasticsearch, Prometheus, InfluxDB, AWS CloudWatch. Позволяет создавать и совместно использовать свои панели инструментов. Благодаря такой широкой функциональности активно применяется в современных стеках.
Это многофункциональное решение, сочетающее в себе аналитическую SaaS-платформу и инструмент мониторинга, который контролирует производительность серверов, баз данных, контейнеров, а также осуществляет мониторинг производительности приложений (APM) и мониторинг опыта конечного пользователя. Результаты предоставляет в отчетах в виде цветных графиков и диаграмм.
Еще одна SaaS-платформа аналитики с инструментарием для мониторинга серверов, баз данных и высоконагруженных облачных приложений. Поддерживает интеграцию со сторонними приложениями и веб-серверами. Результаты мониторинга инфраструктуры визуализирует графики в режиме real-time.
Это решение для мониторинга ИТ-инфраструктуры состоит из трех программных компонентов. Elasticsearch — распределенная RESTful-система, сочетающая функции NoSQL-базы данных, поисковой и аналитической систем. Logstash — конвейер по одновременному парсингу логов событий из множества источников ввода и их обработки для использования в Elasticsearch. Kibana — пользовательский интерфейс для работы с логами. Подробнее читайте в нашей статье о ELK.
Система для традиционного мониторинга серверной инфраструктуры (не развивается в сторону облачных технологий). Веб-интерфейс написан на PHP, для хранения данных решение использует PostgreSQL, MySQL, Oracle Database, SQLite. Клиент-серверная архитектура.
Стандарт мониторинга инфраструктуры с открытым кодом. Решение позволяет быстро настроить и сам процесс мониторинга, и дополнительные инструменты. Prometheus работает почти с любыми системами: серверами, базами данных, виртуальными машинами, распределенной архитектурой, контейнерами. Сбор метрик осуществляется по протоколу HTTP и pull-модели либо по модели push-gateway.
SaaS-платформа отслеживания инцидентов. После обработки событий рассылает уведомления или осуществляет телефонные звонки дежурным в порядке важности инцидентов. Позволяет выставлять нужные настройки и устанавливать порядок дежурств.
Облачный хостинг
Amazon Web Services — один из самых популярных облачных хостингов с обилием инфраструктурных и платформенных услуг по подписке. Настройка инфраструктуры «под ключ», гибкая масштабируемость, бесплатный пробный период.
Облачная платформа от Microsoft, также предоставляющая PaaS- и IaaS-услуги по подписке.
Google Cloud Platform — Еще один популярный Cloud-сервис, на это раз от компании Google. Услуги предоставляются на той же инфраструктуре, которую компания использует для своих высоконагруженных известных продуктов. Помимо платформенных и инфраструктурных услуг имеются инструменты для прикладного программирования.
Контейнеризация / Оркестрация
Эта платформа контейнеризации с открытым исходным кодом — один из важнейших инструментов DevOps. Позволяет осуществлять распределенную разработку и автоматический запуск приложений с изолированием их в контейнеры, обеспечивая приложениям безопасность и гибкость. Используя Docker, можно «упаковать» приложение в контейнер со всем его окружением и зависимостями. Образы контейнера можно использовать в других системах. Также решение позволяет тестировать продукт в разных средах, упрощать отладку с помощью встроенных отчетов, применяться вместо виртуальных машин.
Знаменитый многофункциональный оркестратор контейнеризированных приложений, стандарт отрасли. Позволяет группировать, автомасштабировать и управлять большим количеством контейнеров, обеспечивая приложениям высокую безопасность. С помощью K8s приложения могут работать на кластере компьютеров, а не на одной машине. Подробнее о решении читайте в наших статьях «Kubernetes для начинающих: как он появился, что умеет и из чего состоит» и «Внедрение Kubernetes – когда это необходимо?».
инструмент контейнеризации, Популярная альтернатива Docker, позволяющая запускать контейнеры в исполняемой среде, совместимой с OCI. Решение было разработано с участием компаний: IBM, Red Hat, Intel, Hyper, SUSE.
Docker Swarm — это решение для кластеризации и объединения в виртуальные хосты контейнеров Docker. Подходит для некрупных приложений. Имеет REST API-интерфейс, совместимый с API Docker, что позволяет использовать его инструменты для работы с кластерами контейнеров без дополнительных сущностей.
Оркестратор контейнерных и неконтейнерных приложений, совместимый с другими представителями стека разработчика HashiCorp — Terraform, Vagrant. Поддерживает работу с Docker, используется в крупных ЦОДах, имеет хорошую документацию.
Вывод
Для того, чтобы эффективно применять перечисленные решения для автоматизации процессов разработки, важно обладать соответствующими компетенциями уже на этапе их ввода в бизнес-процессы. Вы можете доверить установку этих инструментов девопс-инженерам и архитекторам Git in Sky, у которых большой опыт внедрения методологии DevOps в компании разных масштабов.