DevOps в сфере IT: что это такое и для чего необходимо
Development Operations (сокращенно DevOps) - это процесс оптимизации и систематизации процесса разработки программного обеспечения. Данное движение возникло приблизительно в 2005-2008 годах, когда стремительно начал возрастать объем IT-рынка, но при этом количество разработчиков и ИТ-менеджеров было недостаточным. Крупные компании сразу заметили, что процесс разработки и управления ПО сталкивается с трудностями из-за плохой организации работы. Для этого были сформированы принципы DevOps engineering.
История появления и развития DevOps
Принципы построения и технологию DevOps более подробно описали авторы Патрик Дюбуа, Джин Ким и Джез Хамбл в своей книге «Руководство по DevOps. Как добиться гибкости, надежности и безопасности мирового уровня в технологических компаниях». При желании более углубленного изучить DevOps инжениринг из первоисточников можно прочитать эту книгу, написанную на английском языке в 2016 году.
До появления DevOps инструментов существовали значительные разногласия между разработчиками, тестировщиками, администраторами, веб-дизайнерами, маркетологами и специалистами службы поддержки. Формально, у данных исполнителей были разные метрики оценки эффективности, разные цели и методы работы. Из-за этого ИТ-проекты часто создавались долго, их часто переделывали и конечный результат отличался от начального плана.
На основе этих проблем в сфере информационных технологий и был создан DevOps инжиниринг. Его нормы базируются на правилах Agile. На этом стоит отдельно остановиться, чтобы понимать ответственность DevOps и ее суть. Agile software development зародился в начале 2000-х годов. Это набор методик и инструментов для разработки ПО и решения других бизнес-задач (например, при работе над маркетинговыми стратегиями). Суть методик заключается в обеспечении гибкой работы команды разработчиков и прочих исполнителей.
Инструменты DevOps позволяют наладить процесс работы не только разработчиков и тестировщиков, но и управленцев, маркетологов, службу поддержки, клиентский сервис.
Процессы и объекты
Практики DevOps объединяют три основных процесса в работе ИТ-специалистов:
- Разработка;
- Тестирование;
- Эксплуатация.
Обязанности DevOps инженера заключаются в том, чтобы все процессы осуществлялись непрерывно.
Речь идет о таких этапах работы, как:
- Написание кода и его проверка;
- Создание и внедрение различных сборок;
- Непрерывное тестирование и поиск возможных ошибок;
- Выпуск обновление и их предварительная разработка;
- Развертывания конфигурация программного обеспечения;
- Мониторинг производительности приложения и исправление возможных ошибок, найденных при тестировании.
В большинстве случаев devops-разработчик должен обеспечивать непрерывность всех процессов и их взаимосвязь. Это и объясняет главные цели внедрения такого решения.
Цели внедрения инфраструктуры DevOps
Devops-инфраструктура создается для того, чтобы разработка программного обеспечения велась слаженно между разными командами исполнителей. То есть у всех отделов есть доступ к конкретному плану, целям, утвержденному техническому заданию и метрикам оценки эффективности (они стандартизированы для всех исполнителей). На выходе получается ситуация, при которой исполнители даже в удаленном режиме работы слаженно выполняют утвержденные ранее задачи. Контроль процесса обеспечивают devops-инженеры, которые и способы внедрить DevOps в компании любого масштаба.
Помимо этого, услуги DevOps необходимы для того, чтобы сократить время разработки ИТ-продукта. Это может быть приложение, веб-сервис или программа. Независимо от типа проекта, DevOps сервис способен на треть или даже четверть снизить количество издержек, уменьшить до минимума количество отказов и сбоев на начальной стадии тестирования и сократить время исправления обнаруженных ошибок. В конечном результате это может быть очень важным для нужного финансового и репутационного результата.
Системный инженер DevOps в любой компании также способствует тому, чтобы время выпуска новых обновлений сокращалось. А пользователи получали своевременную техническую поддержку.
Как работает DevOps
Разобравшись с основой Development Operations, необходимо детальнее описать инструментарий этой системы. Выше были описаны цели, но что касается способов их достижения?
Существует несколько потоковых задач, которые внедряются, исполняются и контролируются DevOps engineer непрерывно при работе с тем или иным проектом:
- Разработка концепции и технического задания на создание ПО с заказчиком и передача ТЗ всем группам исполнителей;
- Автоматизация процессов написания кода, тестирования, верстки, создания пользовательского интерфейса;
- Управление разработкой с единого центра;
- Управление изменениями.
Реализация этих задач кроется в расширенном применении Agile-подхода. Речь идет о так называемом методе CALMS, который включает в себя 5 элементов:
- Культура (Culture);
- Автоматизация (Automatization);
- Бережливость (Lean);
- Измерения (Measurement);
- Обмен (Sharing).
Для того, чтобы внедрить в бизнес-процесс DevOps с нуля можно использовать не только Agile, но и смежные подходы: Scrum, Kanban и их аналоги. Но главными остаются все же инструменты, при помощи которых и выполняются перечисленные в статье задачи организации процесса разработки.
Инструменты представляют собой специальное программное обеспечение и комплексные ИТ-системы, которые должны работать вместе. Не существует единого интерфейса управления в devops, поэтому инженеры применяют сразу несколько элементов.
- Для распределения контроля версий программного обеспечения используются такие решения, как Git, Mercurial, Subversion, CVS;
- Для контейнеризации чаще всего применяют Docker, Rocket или Kubernetes;
- Для сборки и тестирования готовой версии программного обеспечения лучше подойдут Jenkins, TeamCity или Bamboo;
- Для управления IT-инфраструктурой как кодом рационально применять Puppet, Chef, Ansible;
- Для виртуализации лучше всего подойдет Vagrant;
- В балансировке облачным ресурсов незаменимыми будут решения VMware DRS.
Как уже было написано выше, главным в этом процессе является инженер, который должен иметь специальные DevOps навыки. Они заключаются в умении подобрать и правильно настроить нужный инструментарий. После этого придется быть связующим звеном между заказчиком и исполнителями вплоть до выпуска готового ИТ-продукта и его последующей поддержки.
Формально, инженер Development Operations объединяет в себе сразу несколько профессий: менеджер в IT, разработчик, тестировщик, администратор и другие. Для работы в этой сфере нужны знания в области сетевой и облачной инфраструктуры, а также кодинга.
Доступность DevOps для компаний разного уровня
При изучении этой темы важно понимать, что цена на DevOps имеет широкий диапазон и зависит от спектра задач, штата специалистов и масштаба проектов. Крупные компании в большинстве случаев имеют в штате несколько десятков инженеров Development Operations в разных уголках планеты. Гиганты (Netflix, Walmart, Etsy, Facebook, Google, Amazon и другие тратят на это миллионы долларов в год, так как их многомиллиардная выручка зависит от стабильности, качества и скорости выхода новых продуктов, а также функциональности существуют проектов.
При работе с более мелкими проектами в малом бизнесе можно на первой стадии обойтись без этого. Но при необходимости привлекать несколько десятков ИТ-специалистов уже потребуется грамотная организация процесса. И даже без начинающего инженеры DevOps обойтись очень трудно. Для небольших компаний годовой бюджет такого решения может варьироваться от несколько десятков тысяч долларов в год до сотен тысяч.
Критика DevOps
Далеко не все представители IT-индустрии и предприниматели положительно относятся к подобной организации работы в целом. Это связано с некоторыми недостатками. В современных реалиях очень трудно найти действительно профессионального инженера, который способен с нуля наладить всю систему. Такой исполнитель должен быть программистом, тестировщиком, дизайнером и менеджером в одном лице с опытом работы в DevOps от 5 лет. Обычно наем таких специалистов возможен только для крупных компаний, а малый бизнес довольствуется лишь исполнителями с поверхностными знаниями.
Еще DevOps часто критикуют за неполноту цикла. Многие процессы оптимизируются и тестируются не вручную, а автоматизовано. Это значит, что реальные пользователи не принимают участия в исправлении ошибок и их поиске, что чревато проблемами после релиза.
Несмотря на это, сложные IT-проекты не могут обойтись без грамотного управления и оптимизации процесса разработки. Поэтому спрос на DevOps активно возрастает на российском и зарубежных рынках.