4 ключевых принципа DevOps
Эта статья – взгляд DevOps-команды «Онланты» на
материал наших зарубежных коллег о главных принципах DevOps, их особенностях и важности для команд. На что необходимо опираться и как грамотно выстраивать методологию DevOps – в этом обзоре. Поехали!
Когда к популярной методологии разработки DevOps начинают добавляться другие составляющие, такие как безопасность (DevSecOps), бизнес (BizDevOps) и прочие, то это может сбить с толку новичков. Важно фокусироваться на главном. Рассмотрим четыре ключевых принципа, которые могут улучшить процесс разработки программного обеспечения (ПО) вашей компании:
- Автоматизация жизненного цикла разработки ПО;
- Выстраивание коммуникаций и принципов сотрудничества;
- Непрерывное улучшение и сокращение ошибок;
- Постоянный фокус на потребностях пользователей с сокращением цикла сбора обратной связи.
Обзор ключевых принципов DevOps
Около 15 лет назад возникла идея объединить разработку и эксплуатацию в единое целое. В 2009 году термин DevOps был предложен Патриком Дебуа, он считается одним из главных гуру данной методологии. DevOps включает в себя многие принципы гибкой методологии разработки
Agile, но делает особый упор на устранение изолированности друг от друга разработки и эксплуатации. Популярность DevOps продолжает расти среди компаний всех уровней: от малого бизнеса до компаний уровня Enteprise с унаследованными ИТ-системами.
DevOps может адаптироваться к индивидуальным потребностям и среде, в которой обитает организация, подстраиваясь под то, что наиболее важно для бизнеса. Поэтому, можно встретить множество различных вариаций на тему реализации методологии DevOps. Однако в основе всегда лежат следующие четыре фундаментальных принципа.
Автоматизация жизненного цикла разработки ПО
Автоматизация – это путеводная звезда каждой DevOps команды – то, к чему она стремиться. До появления DevOps каждый этап в рамках процесса разработки ПО требовал большого количества ручного труда и вовлеченности специалистов (вплоть до выполнения физической передачи). Такая высокая зависимость от человеческого участия приводила к тому, что для компании считалось удачей обновить или выпустить новый код хотя бы раз в год. У кого-то выпуск релиза был раз в 18 или раз в 24 месяца.
Так вот, сегодня
«команды профессионалов DevOps» выпускают код по многу раз в день, и это стало возможным в основном благодаря автоматизации.
Чтобы понять эффективность и важность автоматизации в DevOps, остановимся подробнее на тестировании ПО. Этот этап часто недооценивают и упускают из виду, хотя именно он регулярно становится причиной задержек релиза.
Тестирование ПО имеет решающее значение, ведь без тестирования компании рискуют выпустить неработающий или даже небезопасный код. И да, тестирование – это один из самых трудоемких этапов в DevOps.
В рамках тестирования требуется:
- описать тест-кейсы,
- провести множество проверок,
- провести анализ результатов, с которыми требуется вернуться к разработчикам для внесения исправлений.
Эта детализация дана для подтверждения того, почему команды считают тестирование причиной номер один, по которой код не выпускается вовремя.
С подключением автоматизации появилась и идея о том, что самые базовые тесты ПО могут проводиться по мере написания кода. Автоматизация тестирования значительно ускоряет весь процесс и высвобождает время тестировщиков для поиска потенциально более серьезных проблем в плане качества кода.
Пусть автоматизация тестирования одна из самых ярких побед DevOps, но далеко не единственная. Процесс Continuous Integration (непрерывная интеграция) автоматизирует перенос нового кода в уже существующий, в то время как процесс Сontinuous deployment (непрерывное внедрение) помогает автоматизировать выпуск релизов. А подход Infrastructure as Code (инфраструктура как код) позволяет легко автоматизировать процесс создания среды для разработчиков.
Выстраивание коммуникаций и принципов сотрудничества
В хорошей команде DevOps присутствует автоматизация, а первоклассную команду DevOps отличает высокий уровень сотрудничества и выстроенные коммуникации. Основная идея на пути к объединению разработки и эксплуатации (а также безопасности, тестировщиков, стейкхолдеров и т.д.) - выстроить сотрудничество между командами-участниками. Но это недостижимо, если нет слаженной и регулярной коммуникации.
Да, этот принцип DevOps кажется слишком заурядным, но дьявол кроется в мелочах. Разработчики (Devs) хотят писать код и выдавать его в мир. Эксплуатация (Ops) фокусируется на инструментах, на соответствии требованиям и возможностям облачных решений. Безопасники (Sec) стремятся обеспечить безопасность кода. У команд Dev, Ops и Sec могут не совпадать приоритеты, они могут говорить на разных языках, и, вероятно, будут подходить к решению проблем с разных точек зрения. Как данность: разработчики и отдел безопасности никак не могут договориться отчасти из-за отсутствия общения и недостатка сотрудничества.
Чтобы объединить команды, требуются усилия и зачастую
нестандартное мышление. Держим в голове принцип двустороннего движения: команды налаживают коммуникацию для успешного внедрения DevOps-подхода, а внедрение DevOps-подхода ведет к выстраиванию этих коммуникаций между командами.
Непрерывное улучшение и сокращение ошибок
DevOps, как и более ранние методологии Lean и Agile, фокусируется на сокращении ошибок и непрерывном улучшении. Будь это автоматизация повторяющихся задач, таких как тестирование, где мы пытаемся выиграть время, или сокращение количества этапов в процессе релиза нового кода. Качественно функционирующая команда экспертов DevOps продолжает измерять показатели эффективности, чтобы выявить области для улучшений. Команды придут к тому, что будут постоянно улучшать время выпуска релизов, сокращать среднее время до восстановления и уменьшать количество найденных ошибок, а также улучшать ряд других показателей.
Постоянный фокус на потребностях пользователей с сокращением цикла сбора обратной связи
Последний обязательный принцип DevOps – это важность вовлечения реального пользователя в каждый этап процесса. Благодаря автоматизации, усилению коммуникации, сотрудничеству, а также непрерывному совершенствованию, команды DevOps могут сосредоточиться на потребностях конечных пользователей и на том, как их закрыть. «Залезть в голову» пользователя, бесспорно, сложно. И выстроить процессы так, чтобы добиться этого – мощный вызов для команд.
Нужно помнить о том, что, как только вы получили обратную связь от конечного пользователя, эта информация должна передаваться командам без задержек, не допуская потери времени реакции. Вот почему важны короткие циклы обработки обратной связи, команды должны прилагать усилия к еще большему их сокращению в дальнейшем.
Преимущества DevOps в теории и на практике
Что мы получаем, когда команда правильно использует DevOps? Согласно одному из опросов, 60% разработчиков отметили, что благодаря DevOps они выпускают код как минимум в два раза быстрее. Среди других преимуществ подхода DevOps – улучшение качества кода, сокращение времени выхода на рынок (time-to-market) и улучшение планирования. В качестве бонусного преимущества, участники опроса сообщают, что успешное внедрение практик DevOps делают разработчиков счастливее, а
научные данные подтверждают, что чем счастливее себя чувствует разработчик, тем выше его производительность.
Что ждет DevOps в будущем?
Благодаря пандемии внедрение и успех DevOps получили сильный рывок для развития. На этом пути команды закрыли вопрос «как нам работать вместе?» и перешли к реализации идеи «как нам внедрить правильные технологии». С использованием передовых технологий, таких как Kubernetes,
платформы DevOps, искусственный интеллект и машинное обучение, мы можем спрогнозировать, каким будет будущее DevOps. Можно с уверенностью ожидать роста автоматизации, принятия решений на основе искусственного интеллекта и машинного обучения – начиная с анализа кода и заканчивая серьезным выбором инструментов, например, дальнейшего внедрения платформ DevOps для оптимизации процесса.