Инструменты в повседневной работе DevOps-инженера
Эксперт рассказывает об инструментах, которые полезно знать DevOps-инженеру: от закостенелых Jenkins и Splunk, до современных Loki и Lens.
Александр Селезнев
Тренер Luxoft Training, специалист в области организации DevOps-процесса разработки
Важные инструменты, которые должен знать DevOps-инженер: от закостенелых Jenkins и Splunk, до современных Loki и Lens.
Git
Система управления исходным кодом, которой пользуются, пожалуй, вся индустрия. Это стандарт трекинга исходного кода. Git — единственная поддерживает все современные паттерны разработки и обязательна для изучения DevOps-инженеру.
Gitlab
Если вы работаете с молодой командой, то я бы посоветовал изучить Gitlab. Система поддерживает полный цикл разработки, включающий управление исходным кодом на Git, Continuous integration, Continuous Delivery, issue tracking.
На одном Gitlab можно полностью вести разработку «мерджиться», «деплоиться» и прочее. Однако система навязывает определенный workflow, который не всегда подходит проекту. Это возможно обойти, но редко результат получается хорошим.
Jenkins
Старожил на поприще систем автоматизации сегодня чаще используется в уже «вставших на ноги» компаниях. Jenkins разрабатывался, как инструмент непрерывной интеграции, но развился до системы способной запустить ракеты в космос благодаря плагинам.
Это его достоинство и недостаток. Из-за обилия необходимых плагинов система становится тяжёлой. Постоянные обновления и риски, что все разрушится, а также отвратительный UI могут превратить работу в ад. Сегодня немногие новые команды выбирают Jenkins, но в проектах около пятилетней давности система встречается часто.
Jira
Решения Atlassian уже стали определенным индустриальным стандартом. Работая с крупными заказчиками, вы, скорее всего, будете использовать именно Jira. Ежедневно в системе я завожу тикеты, трекаю время на выполнение задач, состояние спринтов, создаю release notes и решаю другие задачи. Несмотря на ряд аналогов, плюс Jira — интеграция с другими системами Atlassian, например Confluence.
Confluence
Система динамического управления контентом. В некотором роде — это «вики» с визуальным редактором страниц. Здесь я веду проектную документацию, трекаю требования к системе, заметки, состояния, создаю страницы по описанию билдов.
Docker
Система контейнеризации и одна из основных технологий для DevOps-инженера. ПО для автоматизации развёртывания и изоляции приложений. Мы используем для сборки и запуска контейнеров в DEV окружениях.
Kubernetes
Платформа для автоматизации управления контейнерами приложений. Kubernetes стал стандартом, обойдя немногочисленных конкурентов, типа Rancher. Система предоставляет механизмы решения всех стандартных задач IT по управлению приложениями. Управляется декларативно — оператор передает контроллеру Kubernetes желаемое состояние окружения, и тот сам выполняет все необходимые действия для его достижения.
Lens
Графический интерфейс для управления и мониторинга Kubernetes кластеров. Также известен, как GUI для Kubernetes, где возможно увидеть все их сущности, включая пользовательские ресурсы. Хоть это и не обязательный инструмент для DevOps-инженера, но я рекомендую его использовать. Здесь много разных крутых возможностей. Например, доступ к приватным кластерам через собственный прокси.
Prometheus
База данных для сбора метрик в реальном времени. Использует модель HTTP-запроса и «ходит» в URL приложений для сбора данных.
Grafana
Dashboard-решение для визуализации полученных данных. Мы используем Grafana в связке с Prometheus. Система демонстрирует графики, таблицы, и используется в современных стеках больших решений.
Loki
Молодая система сбора логов с приложений, вдохновленная Prometheus. До Loki логи всегда хранились, как текст в файлах либо индексировались в системе вроде Elasticsearch. Это приводило к большому весу на диске и нагрузке при поиске и агрегации. Loki индексирует метадату, позволяя хранить логи в достаточно медленном и дешёвом хранилище вроде Object Storage (AWS S3 etc), так как для поиска и агрегации не используется весь текст. Они занимают меньше места и поиск происходит быстрее по стандартизированным лейблам.
Splunk
Большая неповоротливая система по мониторингу всех данных. Старая, мощная но малопроизводительная. Крупные компании не хотят изменять Splunk с Prometheus и Grafana. Отчасти из-за платной поддержки. Поэтому, DevOps-инженеру в большой организации придется научиться работать с Splunk.
Terraform
Система управления инфраструктурой с помощью API, облачными провайдерами, приватными облаками. Terraform стала первой, позволившей нам работать с разными облачными провайдерами. Для описания и применения окружения в коде не нужно идти в консоль. Система сама создает необходимые сети, кластера и так далее.
Большая часть из названных инструментов — обязательна для DevOps-инженера. Однако единый список для каждого разработчика составить невозможно. Выбор инструментов зависит от выбора языка. Поэтому умение использовать инструменты — только часть необходимых навыков.
DevOps-инженеру нужно постоянно автоматизировать шаги. Вам понадобится «клей», который бы связывал все инструменты в общий пайплайн. Для этого помимо инструментов необходимо изучить сценарные языки — Python, JavaScript, Ruby, Go, Bash и другие.
Айтишнику на заметку: 10 крутых инструментов для DevOps

Работа DevOps-специалиста трудна и многозадачна. К счастью, ее можно (и даже нужно) автоматизировать. Сегодня мы расскажем о 10-ти инструментах, которые облегчат тяжелые трудовые будни девопса.

Docker – платформа для контейнеризации ПО
Которая решает проблему с неисправным кодом при коллективной работе над проектом. Это когда каждая команда выполняет свою часть работы на отдельной виртуальной машине, а потом разные части не клеятся между собой. Docker переносит разработку в изолированные среды (контейнеры), которые содержат все, что нужно для работы с проектом.

Такой репозиторий (или хранилище артефактов) служит 3 целям: 1) держать под рукой копию maven-центра для сокращения времени загрузки фреймворков; 2) хранить файлы, которые будут использоваться в качестве зависимостей; 3) собрать в одном месте разные релизы. Отличный инструмент для Continuous Integration.

Jenkins — серверная система для CI/CD
Программа автоматически собирает и тестирует проект каждый раз, когда вы обновляете код в центральном репозитории. А еще помогает выстраивать процессы непрерывной доставки.
Gradle — система автоматической сборки
Идеально подходит для многомодульных сборок, чем многим нравится больше, чем старый-добрый Maven. Поддерживает инкрементальную сборку, при которой система сама определяет, какие компоненты изменились и требуют перезапуска.

Ansible – система автоматического управления конфигурациями
Еще Ansible автоматизирует запуск IT-инфраструктуры (в облаке или контейнере), деплой приложения и многое-многое другое. Работает с так называемыми плейбуками, настраивать которые гораздо проще, чем обычные модули конфигурации.

Librarian – система управления кукбуками
Палочка-выручалочка для работы с кукбуками, в которых прописаны зависимости. Даже при работе со столь популярным Chef зависимости приходится добавлять в проект вручную. Librarian же делает это в автоматическом режиме.

Selenium – инструмент для тестирования веб-приложений
Удобная программа, заменяющая команду QA-тестировщиков. Хорошее решение, если нужно протестировать с десяток компонентов или быстро оценить 100500 параметров работы веб приложения.
Takipi — инструмент для поиска багов
Широко известная в узких кругах программа, которая проверяет приложение на наличие ошибок, соответствие спецификациям, проблемы с автодеплоем и редеплоем. Очень полезный инструмент для контрольной оценки качества продукта перед продакшеном.

New Relic – сервис для мониторинга и обратной связи
Еще одна малоизвестная, но мощная программа для проверки работоспособности приложений (в том числе мобильных). Заменяет ручное нагрузочное тестирование, предоставляет развернутую аналитику, обеспечивает постоянный фидбэк с партнерами и конечными пользователями.

Хорошая программа для сбора метрик и мониторинга запущенного приложения. Для его работы нужны экспортёры, которые подключаться к prometheus, и заниматься непосредственно определением необходимых метрик. Некоторые экспортёры необходимо также дополнительно настраивать.
Помните: правильно выбранные инструменты DevOps не только автоматизируют работу с программным продуктом, но и повышают его качество, сокращают время релиза и дают вам фору перед конкурентами. Но если у вас нет времени, ресурсов (или специалистов), чтобы с ними разобраться, DevOps всегда можно передать на аутсорсинг.
Что такое DevOps, какие инструменты используются
DevOps — это основная концепция IT сообщества, которая подразумевает соединение разработки, эксплуатации и тестирования программного обеспечения.
Профессия devops инженер комбинирует в себе информационно технологическое обслуживание и программирование, начиная от идеи и заканчивая производственной поддержкой.
Первоначально стороны разработки и эксплуатации рассматривались как две отдельные зоны ответственности и отвечали за обработку различных аспектов программного цикла. Однако из-за этого возникало множество разрозненных проблем, таких как увеличенное время программирования, низкая производительность.
Улучшенная оптимизация и связь, снижение затрат и отсутствие сбоев при развертывании — ключевые преимущества DevOps. Чтобы вы могли полностью использовать возможности этой методологии, необходимо изучить главные инструменты devops инженера:
- Git;
- Jenkins;
- Jira;
- Docker и Kubernetes;
- Ansible.
Профессия devops инженер включает в себя не только умение пользоваться набором программ или фреймворк, за ней скрывается целое культурное движение. В последние годы стало популярным описывать как в организации могут лучше работать вместе команды разработки (Dev) и эксплуатации (Ops). DevOps — это образ мышления и действий, а не просто автоматизация, которую могут использовать инженеры. Методология сочетает в себе лучшие практики разработки с операционными процессами ИТ, чтобы доставлять приложения быстрее, чем когда-либо прежде.



Получи грант, покрывающий 50% стоимости обучения
И обучайся новой профессии онлайн из любой точки мира
Получить грант
Git
Один из самых популярных инструментов DevOps — Git. Хотя размещенные сервисы, такие как GitHub и GitLab, являются популярными способами использования этой программы, многие организации предпочитают самостоятельно размещать ее локально в соответствии с нормативными требованиями или правилами корпоративного управления.
С момента создания в 2005 году применение Git в качестве технологии резко возросло, и теперь он стал стандартом программного обеспечения для управления версиями. Сервис разработан для быстрого и эффективного администрирования небольших и масштабных проектов. Кроме того, программа проста в использовании, занимает мало места и работает с молниеносной скоростью.
ПО отличается низким уровнем локального ветвления, удобными промежуточными областями и различными рабочими процессами, которые превосходят инструменты SCM, такие, как Subversion, CVS, Perforce и ClearCase. Поэтому, несомненно, инструменты devops инженера стоит начинать изучать с Git.
Программа по умолчанию является приложением командной строки. Однако можно загрузить клиент GUI для управления исходным кодом из удобного графического интерфейса. Многие редакторы, такие, как Visual Studio Code, включают встроенный инструмент Git.
Исходный код хранится в репозиториях, где каждый участник команды может вносить свои изменения. Это позволяет интегрировать сервис в рабочую методологию DevOps. Самыми популярными онлайн-сервисами хостинга репозиториев Git на данный момент являются Github, Gitlab и Bitbucket.
Эти платформы позволяют хранить общедоступные и частные ресурсы, отслеживать и обсуждать проблемы, а также управлять выпусками программного обеспечения. Они также предоставляют дополнительные возможности DevOps, такие как встроенная функция непрерывной разработки, безопасность, инструменты аудита и совместной работы, проверка кода и многое другое.
Jenkins
Инструменты devops инженера невозможно представить без Jenkins — популярной программы для CI/CD и развертывания. Многие разработчики программного обеспечения используют его как платформу с открытым исходным кодом для автоматизации задач на протяжении всего жизненного цикла создания ПО (SDLC). Сервис управляет трафиком на перекрестке между разработкой, автоматизацией, управлением выпусками, поддерживая широкий спектр плагинов.
Jenkins стоит воспринимать как швейцарский нож с поддержкой функций, доступных для большинства потребностей DevOps. Инструмент интегрируется с широким спектром решений, таких как GitHub для непрерывного анализа кода, Jira Software для гибкого управления проектами, Docker Hub Enterprise или Quay для создания образов контейнеров, Puppet и Chef для регулирования конфигурацией системы и многое другое.

87% наших выпускников уже работают в IT
Оставь заявку, и мы поможем с выбором новой профессии
Оставить заявку
Jira Software
Еще одна программа, которую используют DevOps инженеры — это Jira Software. Она позволяет командам любого размера лучше:
- планировать проекты;
- отслеживать работу;
- создавать гибкие выпуски с помощью автоматизации.
Такие инструменты devops инженера, как Jira необходимы для детального проектирования, контроля рабочих элементов, внесения изменений в код или его выпуска. В этом помогает функция Jenkins Pipeline. Инженер также может визуализировать зависимости между задачами с помощью отчетов и досок, чтобы команда могла сосредоточиться на том, что важно, и сотрудничать более эффективно.

Docker и Kubernetes: платформы для контейнеризации
Контейнеризация — это облегченная форма виртуализации, которая инкапсулирует исходный код и все его зависимости в виде образа контейнера. Это позволяет развертывать их в различных средах без дополнительной настройки.
Docker
Инструмент произвел революцию в том, как создаются, поставляются и запускаются распределенные приложения. Docker предоставляет единую платформу для управления зависимостями от любой инфраструктуры.
Программа предлагает удобный способ развертывания кода с использованием контейнеров, независимо от того, создаете ли вы новые микросервисы или переносите существующие приложения. Такие инструменты devops инженера, как Docker позволяют разрабатывать программное обеспечение в изолированных контейнерных средах, которые действуют так же, как автономные машины Linux, даже если они работают непосредственно в ядре операционной системы хоста.
Программисты нравится, насколько легко создавать новые службы или переносить существующие приложения в контейнеры, не беспокоясь об изменениях базовой инфраструктуры. С предварительно созданными образами, доступными на сайте hub.docker.com, вы можете запустить свой код за считанные минуты.
Kubernetes
Это система оркестровки контейнеров, которая выводит управление ими на новый уровень. Kubernetes создан инженерами Google, которые искали решение для масштабного управления. Инструмент помогает организовать контейнеры в логические единицы. Он хорошо работает с Docker или любым из его конкурентов.
Kubernetes, изначально созданный для автоматизации развертывания большого количества контейнеров в их внутренней инфраструктуре, за последние годы стал одним из лучших инструментов DevOps.
Если у вас всего несколько хранилищ, вам может не понадобиться платформа их оркестровки. Однако это следующий логический шаг, когда вы достигнете определенной степени сложности и захотите масштабировать свои ресурсы. С помощью Kubernetes можно автоматизировать управление сотнями или тысячами резервуарами.
При использовании программы не нужно подключать свои приложения к одному компьютеру. Вместо этого можно создать кластер компьютеров и автоматизировать распределение и планирование контейнеров по всей группе.
Кластер инструмента имеет один главный и несколько рабочих узлов. Первый обеспечивает выполнение заданных вами условий и развертывает хранилища на других узлах. Сервис внимательно следит за всем, чтобы не допустить ошибок. Например, он будет перераспределять контейнеры, когда один рабочий узел отключен.
Ansible
Это инструмент управления конфигурацией с открытым исходным кодом от RedHat. Он используется для подготовки систем и развертывания программного обеспечения. Кроме того, Ansible позволяет централизованно настраивать удаленные машины и управлять ими.
Программа является отличным выбором для автоматизации DevOps из-за простоты использования, низкой кривой обучения и переносимости между платформами Linux и системами Windows. Кроме того, он может автоматизировать задачи системного администрирования, такие как добавление пользователей, установка пакетов и обновление конфигураций.
Ansible — это безагентное программное обеспечение, которое использует SSH для связи с удаленными системами. Это означает, что для правильной работы инструмента вам не нужно устанавливать дополнительные компоненты или зависимости.
Все перечисленные инструменты devops инженера с большой вероятностью пригодятся каждому, кто захочет освоить эту профессию. Если у вас еще нет навыков программирования, предлагаем записаться на курсы DevEducation, которые станут отличной стартовой площадкой для новичка в сфере IT.
Начни обучение сегодня
FrontEnd разработчик
Профессия Frontend-разработчик — лидер по количеству запросов от работодателей. Без этого специалиста не может обойтись ни одна современная компания, у которой есть сайт. Хотите стать Frontend-разработчиком и создавать сайты, интернет-магазины, маркетплейсы и прочее? Записывайтесь на наш курс!
QA Automation Engineer
QA Automation Engineer — это специалист, который обеспечивает качество продукта и контролирует все этапы разработки с момента появления идеи до релиза. Он имеет компетенции и тестировщика, и разработчика. Он участвует во всех процессах разработки: от подготовки стандартов и требований до самой разработки продукта. А также владеет ручным тестированием и пишет скрипты для автоматизации этого процесса, докладывает о проблемах и контролирует их исправление.
Project Manager
Project Manager — специалист, без которого не может обойтись ни один IT-проект. Если вы хотите войти в сферу IT-технологий, но учить языки программирования это не для вас, тогда профессия Project Manager — то, что вам нужно! Запишитесь на курс Project Management и начните свой путь в IT!
Популярное
10 задачек, которые дают на собеседованиях в IT-компании
8 главных качеств программиста: что говорят работодатели
Frontend разработчик: главные навыки
Рекомендации по выбору пакета инструментов DevOps

Пакет инструментов DevOps — это набор инструментов (нередко от разных поставщиков), работающих как единая система проектирования, разработки, тестирования, управления, измерения и эксплуатации программного обеспечения и систем. Такой набор позволяет командам разработчиков и специалистов по эксплуатации взаимодействовать на протяжении всего жизненного цикла продукта и решать ключевые задачи DevOps: выполнять непрерывную интеграцию, непрерывную поставку, автоматизацию и вести совместную работу.
От Agile к DevOps
Когда принципы Agile получили широкое распространение, они перевернули подход к разработке продуктов. Мы перешли к небольшим многофункциональным командам и спринтам продолжительностью от одной до двух недель, в результате которых получаются готовые к выпуску продукты. Мы реализовывали сжатые циклы обратной связи и непрерывное совершенствование. Скорость поставки увеличилась, а количество проблем — уменьшилось.
Удивительно, как быстро все меняется. Благодаря облачным вычислениям, SaaS и постоянно работающим службам цикл разработки значительно ускорился. Как правило, несколько этапов разработки и тестирования происходят параллельно. В то время как модель Agile предполагала выполнение спринтов за одну-две недели, команды в современных облачных средах выполняют итерации и развертывание несколько раз в день. Рабочие процессы и базы кода постоянно развиваются. Чтобы обеспечить непрерывное развертывание качественного кода, команды используют флажки возможностей, прогрессивные развертывания и A/B-тестирование.
Это привело к эволюционному переходу от Agile к DevOps — набору методик для автоматизации и интеграции процессов в командах разработчиков и ИТ-специалистов, чтобы они могли быстрее разрабатывать, тестировать и выпускать надежное программное обеспечение. Работу команды DevOps оценивают по скорости выпуска кода в рабочую среду. Учитывают число итераций, совершаемых командой ежедневно, и количество времени, которое команда затрачивает на выполнение тестирования, развертывания и рабочего запуска изменений в коде. Обычно в проекты моей команды вносится до 20 изменений в день. В крупные проекты может вноситься до 100 изменений.
Ускорение рабочего процесса обеспечивается за счет новых инструментов, которые позволяют командам совместно выполнять разработку, тестирование и развертывание. В частности, пакет инструментов DevOps помогает командам завершать каждый этап цикла разработки очень и очень быстро.
Что такое пакет инструментов DevOps?
Пакет инструментов DevOps включает инструменты и технологии, которые позволяют командам разработчиков и специалистов по эксплуатации взаимодействовать на протяжении всего жизненного цикла программного обеспечения. Он поддерживает основные принципы DevOps, в том числе непрерывную интеграцию, непрерывную поставку, автоматизацию и совместную работу.
Поскольку DevOps — это изменение в культуре, при котором команды по разработке и эксплуатации работают как единое целое, не существует только одного инструмента, который бы позволял использовать все принципы и методики DevOps. Пакет инструментов DevOps представляет собой набор инструментов (нередко от разных поставщиков), работающих как единая система проектирования, разработки, тестирования, управления, измерения и эксплуатации программного обеспечения и систем. Часто организациям и командам удается сформировать подходящий пакет инструментов только после череды экспериментов с различными их сочетаниями.
Если рассмотреть сложный продукт DevOps, можно понять, каким требованиям должен отвечать пакет инструментов DevOps: быстрая работа на разных этапах цикла разработки и различное представление информации для разных пользователей. В пакет должны входить инструменты для каждого этапа цикла разработки, включая непрерывную интеграцию и поставку, автоматизацию тестирования и высокоскоростное развертывание. Что касается эксплуатации, инструменты DevOps должны иметь функции мониторинга и управления инцидентами. Кроме того, инструменты должны устранять разрыв между разработкой и эксплуатацией, обеспечивая непрерывную обратную связь и ведение журналов.