Все больше крупных компаний по всему миру начинают использовать в работе DevOps-инструментарий. В опросе Harvard Business Review 48% респондентов заявили, что их компания полностью полагается на DevOps для повышения эффективности, а более 80% разработчиков отметили, что эти практики значительно увеличивают ценность их работы в том или ином виде. К 2024 году 90% всех IT-компаний мира внедрят принципы и философию DevOps.
DevOps — это сочетание культурных принципов, подходов и средств, позволяющее наладить совместную работу разработчиков, тестировщиков и других IT-специалистов в команде. В итоге участники команды работают более эффективно и слаженно, вовремя исправляют ошибки и грамотно взаимодействуют друг с другом.
Этапы внедрения DevOps-практик
Перед тем как вводить в компании новые инструменты и практики, потребуется составить так называемую карту ценности продукта. Обычно в процессе выпуска программного обеспечения используются четыре базовые метрики: частота обновления продукта, время от идеи до реализации, процент неуспешных изменений и время восстановления после сбоя. Кроме этих метрик, может оцениваться эффективность работы самих разработчиков, например, сколько лишних часов они тратят на выполнение разных операций, которые можно автоматизировать. По данным компании Forrester, каждый разработчик тратит в среднем около 3,5% времени на устранение уязвимостей, а после внедрения DevOps специалисты смогут сократить этот показатель примерно на 50%.
Компания также может включать сюда иные метрики производственного процесса, важные для нее. Составление карты позволит увидеть самые неэффективные места в процессах разработки.
Примеры задач, которые можно решить с помощью DevOps:
- Повышение скорости внесения изменений в продукт. Это позволит компании быстро и легко проверять новые функции и так же быстро реагировать на рыночные изменения.
- Улучшение времени отклика сайта или приложения либо снижение количества сбоев. Это улучшит пользовательский опыт и снизит риски, связанные с безопасностью.
- Отказ от рутинных и повторяющихся операций разработки и поставки. Это позволит команде сфокусироваться на развитии своих продуктов.
Затем понадобится вычислить текущие показатели выделенных метрик и сравнить их с целевыми показателями, которые компания намерена получить.
После этого нужно сформировать список процессов, которые будут затронуты изменениями. При этом важно начинать с некритичных процессов, изменения в которых не нарушат работу компании. Одновременно потребуется донести до команды и каждого ее участника, как изменится его работа после обновления процесса.
Чтобы оценить успех внедрения новых инструментов и процессов, важно разработать метрики, которые будут регулярно обновляться. Желательно, если этот процесс будет автоматизирован и будет сопровождаться аналитикой, которую смогут видеть все участники команды. Так, на дашборде можно показывать, на сколько сократилось время выпуска продукта, уменьшилось количество ошибок при его разработке, ускорились частота развертывания, время восстановления после сбоев и так далее. В качестве примера можно привести метрики DORA (DevOps Research and Assessment) от Google.
«Инструментов для сбора метрик много, но чаще используются инструменты мониторинга приложений, такие как Zabbix, Prometheus, Grafana. Кроме того, компании могут создавать кастомные системы метрик. Их можно использовать вместе с существующими инструментами», — объясняет руководитель портфеля продуктов DevSecOps платформы «Сфера» Евгений Калашников.
Для тестирования того или иного инструмента выбирается пилотная команда. Желательно, чтобы это были те разработчики, результаты работы которых после внедрения изменений станут показательными. Также важно выбирать команду из сотрудников, которые будут понимать ценность изменений и будут готовы уделять их внедрению часть своего времени, вместо того чтобы фокусироваться на привычной работе.
Процесс пилотного тестирования должен быть плавным — важно доносить до команды всю информацию о его ходе, проводить демонстрации и обучение.
После того как пилотная команда успешно завершила проект, можно приступать к масштабированию новых процессов на всю компанию. Здесь руководство должно выступать за изменения и поощрять команды к совместной работе.
Поскольку при внедрении DevOps задействуются все команды разработчиков, то они становятся кроссфункциональными. Это означает, что команда разработки вовлечена во все процессы — и тестирования, и развертывания, и доставки продукта. При этом сотрудникам потребуются новые компетенции, базовые из которых включают в себя опыт работы с инструментами автоматизации, контейнерами и инструментами контейнеризации, знание инструментов мониторинга и анализа. Соответственно, этим специалистам потребуется дополнительное обучение.
Контейнеры в разработке — это способ «упаковать» код вместе со всеми его зависимостями в единую изолированную среду. Контейнер можно передать другому разработчику или запустить на сервере, а приложения в контейнерах легко переносить и масштабировать. Это позволяет ускорить процесс разработки и развертывания-доставки, а также улучшить гибкость и надежность приложений. Примеры инструментов контейнеризации — Docker, Kubernetes, OpenShift, Mesos, Nomad.
Чтобы упростить процесс обучения, пилотная команда должна сформировать документацию, рассказать о своем опыте, ошибках и трудностях, которые возникали.
В процессе обучения также потребуется создать общее информационное пространство, где все участники смогут обсуждать проблемы и находить решения. Это могут быть корпоративные мессенджеры, дашборды, внутренние митапы.
Также при масштабировании нововведений желательно вовлекать команды в этот процесс постепенно, но не одновременно.
Важно понимать, что в компании нужно постоянно развивать культуру и практики DevOps. «При этом важно придерживаться принципов DevSecOps — делать упор не на скорость внедрения нового инструмента, а на качество проведенных пилотов и то, какое влияние оказывают новые процессы и инструменты на метрики и бизнес компании. Не стоит забывать, что следование новациям должно быть безопасным», — подчеркивает Калашников из платформы «Сфера».
Как правильно выбрать DevOps-инструментарий
Когда компания определила круг задач, которые поможет решить внедрение DevOps, потребуется подобрать оптимальный инструментарий. Для этого нужно изучить рынок доступных инструментов. Информацию о них можно найти на профильных ресурсах и в исследованиях. Так, на ресурсе Digital.ai опубликована «Периодическая таблица инструментов DevOps» — подборка лучших в своем классе инструментов в 17 категориях. Их отбирали путем голосования специалистов DevOps. Также можно ознакомиться с исследованием Russia DevOps Report 2022 Холдинга Т1, которое базируется на качественных интервью с руководителями отделов разработки крупных российских компаний. Оно будет проводиться ежегодно.
При выборе того или иного инструмента DevOps компания должна учитывать следующие факторы:
- функциональность и возможности;
- совместимость с другими инструментами, которые уже используются;
- удобство использования;
- надежность и стабильность работы;
- стоимость инструмента и наличие поддержки;
- скорость и производительность;
- безопасность и защита данных при использовании инструмента;
- возможность масштабирования;
- интеграция с системами мониторинга и аналитики;
- наличие документации.
По словам Евгения Калашникова, в реалиях современного российского рынка нужно также обращать внимание на доступность инструмента в стране, безопасность для российских пользователей (в зарубежном ПО могут размещать вредоносный код), доступность технической поддержки и надежность компании-поставщика.
В этих условиях особую важность приобретает связанность продуктов в единую систему или объединение их на одной платформе. Согласно данным опроса State of DevOps, который в 2022 году выпустили компания «Экспресс 42» совместно c hh.ru и «OTUS Онлайн-образование», для респондентов при выборе платформ важными оказываются быстрота освоения, удобство использования и то, насколько вендоры учитывают пожелания команд.
Какие бывают инструменты DevOps
Существует множество инструментов DevOps, но можно выделить пять самых крупных категорий:
- Автоматизация: эти инструменты автоматизируют процессы разработки, тестирования и доставки приложений. Они включают в себя и инструменты безопасности, которые позволяют анализировать код из открытых библиотек для разработки на наличие уязвимостей. Кроме того, с их помощью можно отсеивать те библиотеки, которые нельзя использовать из-за политики компании, например из-за типа лицензии. Так, «Сфера. Дистрибутивы и лицензии» обеспечивает анализ кода и управление жизненным циклом продукта в DevSecOps с высоким уровнем безопасности. Инструмент входит в реестр средств интеллектуальной обработки информации и интеллектуального анализа бизнес-процессов Минцифры.
- Инфраструктура кода: эти инструменты позволяют быстро создавать и масштабировать инфраструктуру для приложений. Например, с помощью инструмента «Сфера. Код» разработчики могут отслеживать все изменения и обновления в коде, а в случае неудачи легко возвращаться к предыдущим его версиям.
- Мониторинг: эти инструменты помогают отслеживать работу приложений и инфраструктуры, оперативно выявлять проблемы, чтобы улучшить надежность и производительность продуктов. В качестве примера можно привести Grafana — опенсорсную платформу мониторинга, которая предоставляет графики и аналитику о работе приложений и инфраструктуры в реальном времени.
- Контейнеризация: это инструменты для упаковки приложения в контейнеры, которые легко переносить и масштабировать, что ускоряет процесс разработки и развертывания продукта, улучшает его гибкость и надежность. Например, Docker компании Mirantis — платформа, позволяющая упаковать в контейнер приложение со всем окружением. При этом оно изолируется от операционной системы и другого окружения, что позволяет автоматизировать создание приложения, его доставку и управление им.
- Коммуникация и постановка задач: эти инструменты создают общую среду для общения разработчиков и их совместной работы. Таск-менеджер «Сфера. Задачи» позволяет гибко настраивать типы задач, обеспечивает групповую работу над ними и облегчает планирование, а также предлагает диаграммы и дашборды.
«При существующем тренде рынка на микросервисную архитектуру на первый план выступают категории инструментов контейнеризации, которые позволяют легко масштабировать приложения и управлять ими в распределенной среде, а также инструменты автоматизации, инфраструктуры и хранения», — объясняет Евгений Калашников.
Базовыми для любой компании выступают инструменты безопасности, мониторинга и коммуникации. При этом разные их категории могут становиться приоритетными в зависимости от типа бизнеса, инфраструктуры и бюджета.
Внедрение DevOps-практик будет успешным, если компания сможет правильно определить цели и задачи внедряемых инструментов, тестировать их, а также будет анализировать потребности как бизнеса, так и команд разработки. При этом важно исследовать рынок решений, чтобы выбрать наиболее подходящее, и постоянно совершенствоваться, следуя новым практикам.
Успешность внедрения DevOps-инструментов можно оценить по тем критериям, которые компания установила на старте. Их позволяют отслеживать соответствующие метрики. Такими критериями могут стать достижение определенных показателей как самого продукта, так и процессов, а также соответствие продукта ключевым показателям функциональности, безопасности, совместимости.
Грамотное внедрение DevOps-практик дает компании целый ряд преимуществ. Следование новой философии позволяет улучшить производительность и качество разработки, ускорить его процесс и быстрее выводить продукты на рынок, снизить сопутствующие риски и издержки. Кроме того, DevOps-практики помогут улучшить коммуникацию и сотрудничество между различными отделами компании. В целом при внедрении новой философии повышаются гибкость и адаптивность бизнеса к изменениям на рынке.