eFusion 27 июля 2020

🔌 Чем занимается DevOps-инженер? Обзор базовых практик

Кратко описываем практики DevOps-инженеров: непрерывная интеграция, развертывание и доставка, конфигурационное управление, непрерывный мониторинг и другие.

Традиционная IT-команда крупного проекта состоит из трех подгрупп:

  1. Разработчики (Dev),
  2. Тестировщики (QA),
  3. Группа эксплуатации (оперативная группа, Ops).

Первые работают над программным обеспечением и выпускают его только после того, как будет гарантирована надлежащая работа кода. За эту гарантию отвечает группа тестирования. Оперативная группа занимается развертыванием, балансировкой нагрузки и управлением релизами.

Иллюстрация, показывающая представление DevOps как пересечения разработки, эксплуатации и тестирования
Иллюстрация, показывающая представление DevOps как пересечения разработки, эксплуатации и тестирования

Со временем стало понятно, что категоричный подход в таком разделение является одной из причин длительных циклов разработки. Ускорить выпуск релизов позволило появление методологии DevOps, направленной на улучшение взаимодействия между специалистами для более оперативной разработки приложений.

Зачем нужны DevOps-инженеры?

DevOps обеспечивает новый уровень совместной работы и скорости, что позволяет организациям быстрее поставлять продукцию на рынок, повысить производительность, снизить операционные затраты на обслуживание клиентов, сохранить рыночную конкурентоспособность и быстрее решать критические проблемы.

В методологии DevOps используются различные инструменты:

  • контейнеризация (Docker, Kubernetes)
  • непрерывная интеграция (Jenkins)
  • развертывание сред по шаблону (Terraform, Puppet, Ansible)
  • мониторинг служб и сетей (Nagios, Grafana, Prometheus, Splunk)

Но одних инструментов мало, нужен набор практик.

Непрерывная интеграция (CI)

Непрерывная интеграция (Continuous Integration, CI) – это практика разработки ПО, которая заключается в постоянном слиянии рабочих копий в общую основную ветвь разработки и выполнении автоматизированных сборок проекта для скорейшего выявления потенциальных дефектов и решения интеграционных проблем.

В традиционных проектах стадия интеграции является заключительной, что приводит к задержке окончания работ. Переход к непрерывной интеграции позволяет снизить трудоёмкость интеграции и сделать её более предсказуемой за счёт раннего обнаружения и устранения ошибок и противоречий. Но главным преимуществом является сокращение стоимости исправления дефекта за счёт его раннего выявления. Решаем проблемы, «не отходя от кассы».

Непрерывное развертывание и доставка

Процесс развертывания цикличен: разработка → сборка → проверка → управление версиями сборки → деплой и т. д. Идея непрерывного процесса развертывания заключается в автоматическом развертывании созданного кода в производственную среду после того, как сборка пройдет все этапы QA-staging-beta, интеграцию, пользовательское тестирование и т. д.

Такие инструменты, как Spinnaker, Jenkins, Harness, Ansible, Chef, Puppet, позволяют команде DevOps настраивать автоматизированные конвейеры для деплоя в нескольких средах с минимальным вмешательством человека.

Непрерывная доставка (continuous delivery) – это практика DevOps, при которой новый код тестируется QA-командой на различных этапах автоматизированных и ручных циклов QA. Если код проходит цикл QA и это одобрено командой, всё деплоится в продакшен. Именно так с помощью DevOps команда может создавать, тестировать и выпускать релизы быстрее и чаще, разделяя весь процесс на короткие циклы. Это позволяет организациям выпускать больше релизов, сокращать ручное развертывание и минимизировать риск сбоев.

Конфигурационное управление (CM)

Конфигурации и управление изменениями является важной частью цикла разработки. Конфигурационное управление – это комплекс методов, направленных на систематический учёт изменений, вносимых разработчиками в программный продукт в процессе его разработки и сопровождения, сохранение целостности системы после изменений, предотвращение нежелательных и непредсказуемых эффектов, формализацию процесса внесения изменений.

Менеджмент конфигураций дает ряд преимуществ: упрощение настройки новой среды, снижение рисков в продакшене и экономия времени на разработку ПО вместо инвестирования усилий в инициирование новых служб с использованием практики «инфраструктура как код».

Управление изменениями

Управление изменениями – это процесс запроса, планирования, внедрения и оценки изменений, необходимых для удовлетворения новых требований. Если в процессе работы в существующей системе или инфраструктуре появляются/требуются какие-либо изменения – вот тут и включается в игру управление изменениями. Оперативные группы должны следить и представлять свои отчеты с причинами и последствиями изменений, которые могут возникнуть на более широком уровне, включая другие системы, на которые могут повлиять новые изменения.

Держитесь вместе

DevOps работает с несколькими отделами. Очень важны коммуникативные навыки: чтобы избежать конфликтов, несогласованности и недопонимания в командах, используйте общий ресурс внутренней связи. Активно вовлекайте в обсуждения членов всех команд.

Автоматизация тестирования

Автоматизированное тестирование помогает выполнять больше тестов, увеличить частоту тестирования и экономить время, затрачиваемое на ручное QA. Этот процесс обеспечивает раннее обнаружение и исправление ошибок, повышает общее качество софта. Существует несколько доступных инструментов, легко интегрируемых с инструментами DevOps: Selenium, Robot Framework, Appium, XCUITest, JUnit и т. д.

Непрерывный мониторинг (CM)

Непрерывный мониторинг предполагает мониторинг и отображение отчетов в подробном графическом формате всех систем и инфраструктуры с помощью нескольких инструментов:

  • дашборды и оповещения;
  • анализ в реальном времени метрик, влияющих на ПО: производительность системы, количество тестов, частота успехов/отказов;
  • состояние развертывания;
  • журналы ошибок.

Сравнение соответствующих инструментов мы сделали в публикации «10 лучших инструментов облачного мониторинга».

Заключение

DevOps – перспективное направление, которое продолжает активно развиваться. Универсальность DevOps специалистов высоко ценится, а постоянное активное обучение, новые практики и подходы не дадут вам заскучать на рабочем месте.

***

Данный материал подготовлен при поддержке компании GeekBrains – нашего партнёра, предоставляющего помощь в освоении DevOps-технологий. Если вы хотите освоить DevOps, не тратя лишнее время и силы на поиск знаний, инструментов и привыкание к разному стилю чтения курсов, обратите внимание на факультет DevOps. Программа и преподаватели имеют высокие оценки учащихся, а при успешном прохождении курса онлайн-университет гарантирует не только диплом, но и трудоустройство.

Источники

РУБРИКИ В СТАТЬЕ

МЕРОПРИЯТИЯ

Комментарии 0

ВАКАНСИИ

Senior Backend developer (Java)
Москва, по итогам собеседования
Lead Backend Developer (Java)
по итогам собеседования

ЛУЧШИЕ СТАТЬИ ПО ТЕМЕ

BUG