DevOps – это распиаренный бренд, методология разработки, философия или же часть корпоративной культуры? Разбираемся вместе.
Методология начала развиваться с первой конференции DevOpsDays 2008 года. Суть DevOps состоит в объединении сообществ разработки, тестирования и обслуживания в единое целое.
Development Operations охватывает несколько дисциплин. Это очень практичная область, которая требует понимания технических основ и культурных аспектов.
Слово «DevOps» – это сочетание «development» и «operations» (разработка и операции). Игра слов отражает основную идею, заложенную в DevOps – сотрудничество между различными дисциплинами разработки.
Своими корнями DevOps уходит в принципы «гибкой» разработки. Манифест Agile был написан в 2001 году несколькими людьми. Они хотели улучшить положение дел в разработке систем и найти новые способы работы в IT-индустрии.
Вот выдержки из манифеста Agile:
- Люди и взаимодействие важнее процессов и инструментов.
- Работающий продукт важнее исчерпывающей документации.
- Сотрудничество с заказчиком важнее согласования условий контракта.
- Готовность к изменениям важнее следования первоначальному плану.
- То есть, не отрицая важности того, что справа, мы всё-таки больше ценим то, что слева.
Принципы
DevOps относится к первому принципу: «Люди и взаимодействие важнее процессов и инструментов».
Если вы работали в крупной организации, вы знаете, что вместо этого правила действует противоположный принцип. Стены между отделами возводятся даже в небольших компаниях, где на первый взгляд кажется, что такие стены сформировать невозможно.
Какова же концепция Development Operations?
DevOps подчёркивает важность взаимодействия между людьми. Технологии служат триггерами общения и помогают разрушить барьеры внутри организаций. Главное – правильное использование и выбор инструментов.
Вот пример: выбор систем для баг-репортов.
Дело в том, что разработчики и QA используют разные системы для обработки задач и багов. Разные инструменты создают ненужные трения между командами и ещё больше разделяют их, когда коллективы должны сосредоточиться на совместной работе. Сисадмины могут использовать третью систему для обработки запросов деплоя на серверы организации.
DevOps инженер сразу поймёт, что все три системы нужны для управления рабочим процессом с похожими свойствами.
Так зачем разделять?
Все три команды должны использовать одну и ту же систему. Её можно настроить под все роли. Главное преимущество – меньшие затраты на обслуживание, поскольку три системы заменяются одной.
Другая задача Development Operations – автоматизация и непрерывная доставка (CD). Автоматизация рутинных задач оставляет больше времени для взаимодействия с человеком, откуда можно извлечь больше пользы.
Насколько это быстро?
Процессы в DevOps должны быть быстрыми. Нужно рассматривать время выхода на рынок в большой и сосредотачиваться на задачах в меньшей перспективах. Такую же линию поддерживает инженерный подход непрерывной доставки (Continuous Delivery).
Многие идеи в DevOps и Continuous Delivery являются разными названиями одних концепций. Между двумя понятиями нет разногласий. Они – две стороны одной медали.
Инженеры DevOps работают над ускорением, эффективностью и надёжностью корпоративных процессов. Повторяющийся ручной труд, который подвержен ошибкам, удаляется при любой возможности.
Но при работе с реализациями Development Operations легко потерять цель. Никому не принесёт пользу быстрое выполнение ненужных задач. Вместо этого стоит следить за увеличением стоимости бизнеса.
Например, ценность налаженной коммуникации между разными ролями в организации очевидна. Владелец продукта может заинтересоваться процессом разработки. В этой ситуации полезна возможность быстро и эффективно внедрять постепенные улучшения кода в тестовую среду выполнения. В тестовых средах владельцы продуктов и QA могут следить за ходом разработки.
DevOps как часть Agile
В Agile несколько уровней разработки: от уровня Portfolio, циклов Scrum и Kanban до цикла непрерывной интеграции (CI).
Акценты и приоритеты в Agile различаются и зависят от конкретной среды разработки. В Kanban принят 24-часовой цикл, который используют операционные команды. Циклы Scrum длятся от двух до четырёх недель, и часто используются командами разработчиков.
DevOps должен поддерживать все циклы исходя из сотрудничества между дисциплинами в Agile.
Методология даёт ощутимые преимущества в коротких циклах, которые, в свою очередь, делают эффективными длинные циклы. Копейка рубль бережёт, как гласит старая поговорка :)
Вот несколько примеров, когда DevOps может принести пользу Agile:
-
- Системы деплоя, поддерживаемые DevOps-инженерами, ускоряют доставку в конце цикла Scrum до 2-4 недель. Ручной деплой в организациях может занимать несколько дней. Такие организации получат большую выгоду от методологии DevOps, устранив неэффективные процессы деплоя.
- Цикл Kanban составляет 24 часа, поэтому деплой должен быть быстрее. Хорошо спроектированный CD-конвейер может деплоить код из коммита в продакшн за несколько минут, в зависимости от объёмов изменений.
Во избежание культа
Люди не работают в манере, ориентированной на Agile или Development Operations хотя бы потому, что с утра мы пьём кофе и беседуем о погоде. Реализация Puppet, о которой знает только операционная команда, ещё не даёт нам конвейер DevOps.
А делаем ли мы правильные вещи? На правильном ли мы пути? На практике легко оказаться в самообмане.
Например, при создании деплой-конвейеров следует помнить о цели, которая состоит в облегчении и ускорении взаимодействия людей с новыми системами. Такие конвейеры помогают людям с разными ролями взаимодействовать друг с другом эффективно и оперативно.
С другой стороны, если мы создаём конвейер, который помогает только одной группе людей, например, операционному персоналу, то это противоречит основной задаче Development Operations.
Решения подобных ситуаций имеются в циклах Agile. В Scrum это называется ретроспективой спринта, когда команда собирается и обсуждает, что прошло хорошо, а что могло быть лучше во время спринта.
Распространённая проблема – невозможность использования выходных данных ретроспективы спринта. Их нельзя применить в том случае, когда выявленные проблемы вызваны другой частью организации, с которой отсутствует коммуникация. Как итог – проблемы возникают снова и никогда не устраняются.
Все выиграют от подхода DevOps, так как он делает акцент на сотрудничество между разными командами в организации.
DevOps инженер
Хороший DevOps инженер продвинет компанию вперёд, изменит принятые правила и сценарии любого существующего бизнеса. Он обеспечит бесперебойную работу систем и постоянный мониторинг всей платформы для разрешения проблем при их возникновении.
DevOps инженер отвечает за обновление кода и серверной инфраструктуры после новых коммитов. А также за автоматизацию рутинных задач при увеличении времени сборки и роста компании. Этим он освобождает программистов, которые могут сосредоточиться на создании логики приложения.
Такой специалист отвечает за:
- Использование широкого диапазона инструментов, технологий, языков open source и платных (AWS, Red Hat, Google).
- Навыки программирования и скриптинга.
- Управление серверами: мониторинг, операции, настройка и обновление инфраструктуры.
- Деплой и автоматизацию с помощью скриптов, регулярные тесты, проверку совместимости и устранение проблем.
- Навыки автоматизации скриптами или специальным софтом.
- Эффективное управление распределением памяти и данных.
- Проектирование структуры для максимально эффективного использования сервера и кода.
- Общение и сотрудничество.
DevOps инструменты
- планирование и оценка – JIRA
- контроль версий – Github и Git
- поддержка и отражение слияния кода – SVN
- cборка – Maven, Gridle
- тестирование – Selenium, JUNIT, Jenkins
- деплой – Chef, Puppet и Ansible
- операции – Salt, Red Hat Ansible
- мониторинг – Nagios, Sensu и New Relic, Pagerduty, Cloudmap
Заключение
DevOps – не просто хайп. Он видит проект в перспективе. Для этого нужны широкие знания от концепций операционных систем и программирования до виртуализации и облачных технологий. Кроме технических знаний, нужно отвечать за внедрение Development Operations и создавать то взаимодействие между дисциплинами, которое заложено в идее методологии.
Сертификаты
DevOps инженер – востребованная специальность в IT. Чтобы убедиться в этом, взгляните на компании, которые предлагают DevOps обучение:
- AWS Certified DevOps Engineer – Professional
- Azure certifications | Microsoft
- Google Cloud Certifications
- Chef Certification
- Certification – SaltStack
- Puppet certification
- Jenkins Certification
- NGINX University
- Red Hat Certificate of Expertise in Ansible Automation
- Docker – Certification
- Splunk | Education Programs
- Certifications | AppDynamics
- Kubernetes Certified Administrator
- Kubernetes Certified Application Developer
Комментарии