Все статьи

DevOps: что за методология и кому она подойдет

4 ноя 2021474

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

Существенно сократить time-to market позволяют не только современные инструменты для разработки, включая облачные решения, но и эффективные методологии. Рассказываем простыми словами, что такое DevOps и как этот подход помогает компаниям автоматизировать создание приложений.

Что такое DevOps

До появления DevOps процесс разработки строился по принципу каскада, в котором все этапы были четко зафиксированы. На старте определялись требования к продукту, затем наступал черед проектирования, после него — написание и сборка кода, тестирование и запуск.

DevOps.png

В современном мире каскадная модель уже потеряла свою эффективность.

  • Низкая скорость разработки
  • Перейти на следующий этап можно только по завершении предыдущего. Любая ошибка — и все заново.

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

  • Высокий уровень зависимости отделов друг от друга
  • Нередко возникают ситуации, когда одна команда вынуждена сидеть без работы, так как другая еще не закрыла свои задачи. Например, пока разработчикам не передадут обновленные требования пользователей, они не могут работать над новой версией продукта. Пока они не выпустят новый релиз — нечего тестировать администраторам.

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

Методология DevOps

Почему DevOps — это удобно

При каскадной модели команды неизбежно участвовали в цепочке "разработка новых фич — тестирование — устранение багов". Обновление приложения занимало очень много времени, и команды просто не успевали своевременно реагировать на запросы пользователей и потребности рынка. Методология DevOps позволяет создавать цифровые продукты в разы быстрее. Все шесть этапов идут параллельно друг с другом.

Этапы методологии DevOps
  1. Проектирование
  2. Владелец продукта указывает требования к приложению, а команда разработки определяет, какой должна быть его структура. Каждое подразделение фиксирует этапы, в которых принимает участие, и время, которое на них будет затрачено.

  3. Разработка
  4. Под руководством DevOps-инженера (которого нередко называют просто «девопс») команда создает окружение и конвейер непрерывной разработки и доставки (CI/CD), где и будет идти разработка продукта. Пишутся скрипты и части кода. Отдел эксплуатации и тестировщики настраивают отдельные кластеры для разработки, тестов и продакшна.

  5. Запуск конвейера CI/CD
  6. На этом этапе запускают в работу скрипты, которые автоматизируют все рутинные задачи и работу с инфраструктурой: компиляцию кода, его передачу на тестирование и многое другое.

  7. Тестирование
  8. Процесс полностью автоматизирован и идет непрерывно. После успешного прохождения автотестов приложение отправляется на продакшн-сервер.

  9. Развертывание
  10. Как и тестирование, происходит непрерывно. Конфигурации, успешно прошедшие тесты, автоматически или полуавтоматически (в зависимости от подхода) отправляются на продуктив. Благодаря тому, что все этапы заскриптованы, развертывание может происходить несколько раз в день без ручного вмешательства команды.

  11. Непрерывный мониторинг
  12. Когда приложение попадает в продакшн-среду, к нему подключаются выбранные системы мониторинга. Они круглосуточно отслеживают работоспособность продукта, а если что-то идет не так — оповещают разработчиков.

Чем занимается DevOps-инженер

Ключевую роль во внедрении методологии DevOps и обеспечении ее работы играет DevOps-инженер. В его задачи входит:

  • участие в определении инфраструктуры приложения, выборе системы оркестрации и принципов его масштабирования;
  • настройка серверов, проверка среды, автоматизация передачи кода;
  • автоматизация процесса тестирования и деплоя.

Кроме всего этого DevOps-инженер берет на себя десяток (а то и несколько десятков) задач, которые помогают разработчикам, тестировщикам и администратором эффективно работать сообща.

Какие инструменты помогают внедрить методологию DevOps и результативно придерживаться ее

DevOps-инженер должен быть во всеоружии. Для организации эффективного процесса разработки приложения ему понадобится множество инструментов:

  • облачные сервисы: IaaS — инфраструктура как сервис, PaaS — платформенные решения;
  • системы версионирования: инструменты наподобие Git позволяют отслеживать ход разработки и все версии кода — это позволяет быстро откатиться до стабильной версии, если была допущена ошибка;
  • инструменты CI/CD: например, GitLab, Jenkins, Bamboo для скриптов автоматизации, тестирования и быстрой доставки различных модулей приложения разным отделам и командам;
  • инструменты для управления инфраструктурой как кодом: Terraform, Ansible упрощают развертывание инфраструктуры и управление ею;
  • системы оркестрации: K8s, Docker Swarm, а также облачные сервисы — например, Containerum Managed Kubernetes от #CloudMTS.

Почему все больше компаний переходят на DevOps

Мир не стоит на месте, а ИТ — тем более. Компании стремятся все быстрее реагировать на изменения рынка и новые потребности клиентов. И DevOps — верный путь к этой цели.

Преимущества методологии DevOps:

  • Сокращение time-to-market.
  • DevOps оптимизирует доставку приложений и позволяет быстрее выпускать готовые продукты на рынок.

  • Концентрация на продукте.
  • Автоматизация процессов снимает с плеч разработчиков, тестировщиков и администраторов рутинные задачи и позволяет полностью сконцентрироваться на профильных задачах.

  • Экономия.
  • Внедрение методологии значительно сокращает расходы на создание цифровых продуктов.

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

  • Простота воспроизведения.
  • Использование инструментов контроля версий помогает в случае ошибки быстро и без последствий откатиться до стабильного релиза.

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

Кому будет полезно

DevOps упрощает жизнь всех участников процесса разработки цифрового продукта.

  • Разработчик может целиком сконцентрироваться на написании кода и внедрении новых функций, не отвлекаясь на настройку инфраструктуры.
  • Тестировщик получит больше возможностей при проверке приложения на различных конфигурациях и не будет тратить время на автотесты — они уже автоматизированы.
  • С администраторов снимаются непрофильные задачи по развертыванию приложения и мониторингу его работоспособности.
  • Бизнес сократит затраты на разработку и сможет эффективнее использовать бюджет, например, перенаправить его на маркетинг и продвижение продукта.