Что такое DevOps и почему этот подход востребован

DevOps (Development Operations) — это не столько профессия, сколько философия, культура взаимодействия между разработчиками ПО и командами эксплуатации.

Сама идея сформировалась в 2007 году, когда назрела проблема эффективного сотрудничества команд разработки и эксплуатации: каждая сторона сразу обвиняла другую в различных сбоях. Грубо говоря, когда на стенде у разработчиков код запускался как надо, они с уверенностью отправляли его в работу. А когда возникали сбои, IT-команды заявляли, что проблема в коде и разбираться с ними должны разработчики.

Такое «отфутболивание» увеличивало сроки выкатывания релизов и ухудшало качество продукта. А если за один релиз выкатывалось множество изменений, то становилось трудно понять, что стало причиной возникновения проблем при эксплуатации в реальных условиях. Эти проблемы стали предпосылками для формирования нового подхода к работе с цифровыми продуктами, который впоследствии назвали DevOps. Он отражал процесс объединения двух практик — разработки и эксплуатации — в один непрерывный процесс.

DevOps философия и процесс

Почему бизнесу нужен DevOps

Внедрение DevOps будет полезно разным компаниям из разных отраслей и в разных ситуациях, особенно если они пользуются облачными решениями. Приведём несколько примеров, которые подтверждают важность практик DevOps.

Крупные мероприятия

Онлайн-олимпиады, всероссийские конкурсы и другие мероприятия, которые охватывают всю страну и требуют слаженной работы большого количества специалистов. Кроме того, нужно настроить отказоустойчивую инфраструктуру, на которой будут крутиться приложения для организаторов и пользователей, которая будет хранить и обрабатывать полученные данные. Чтобы в условные сроки всё прошло как надо, необходимо заранее арендовать в облаке Yandex Cloud нужное количество серверов, настроить сеть, ОС и системы хранения данных, установить приложения и проверить всё в условиях, приближенных к реальным, — то есть провести нагрузочное тестирование.

Подход DevOps уменьшит сроки подготовки к мероприятию, поможет сэкономить на закупке оборудования, его настройке и масштабировании. Если организовывать всё традиционным образом, придётся начинать работу намного раньше или же рисковать выполнением сроков. Кроме того, не стоит забывать про вероятность сбоев и простой дорогостоящего оборудования.

Разработка и тестирование

Во многих крупных компаниях за инфраструктуру и железо отвечает один отдел, а за ОС и приложения — другой. Соответственно, развернуть тестовый стенд становится непросто: надо писать заявку в другой отдел, проводить закупку, если нужного оборудования нет, всё согласовывать и настраивать. Получается длинная цепочка исполнителей, каждый из которых делает свою работу в отрыве от других. И если что-то пошло не так, приходится долго выяснять, где проблема.

В ситуации со стендами для нагрузочного тестирования всё обстоит ещё сложнее. Такие стенды требуют больше ресурсов (и мощностей, приближенных к реальным) на короткий промежуток времени. То есть согласование, сборка и настройка нагрузочного стенда может занять месяц, а на тестирование уйдёт день. Облачная инфраструктура Yandex Cloud позволяет за пару кликов развернуть или разобрать стенд. Подход DevOps в данной ситуации позволяет убрать лишние звенья в цепочке, максимально упрощая, ускоряя и удешевляя процесс разработки.

Протестируйте инфраструктуру Yandex Cloud. Платформа даёт новым пользователям грант на 4000 рублей. Этими деньгами можно оплатить используемые ресурсы во время пробного периода. Есть и другие программы поддержки компаний. Тестирование поможет понять, насколько платформа и облачные сервисы будут эффективны в бизнес‑процессах вашей компании.

Быстрая обкатка приложений

В бизнесе побеждает тот, кто раньше выкатит новую фичу. Поэтому важно быстро проверять новые приложения и технологии, тестировать гипотезы. А для этого нужно уметь в сжатые сроки собирать пробные сервисы. Практики DevOps предполагают, что с помощью облаков можно, словно в конструкторе, собрать нужные элементы вместе: базу данных, кеширующие сервисы, application-сервер и веб-сервер, чтобы получить рабочую систему, быстро проверить её возможности и решить, жизнеспособна ли она. А дальше можно масштабировать сервис и выкатывать его в продакшн либо разбирать ввиду непригодности.

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

Подробнее об использовании практик DevOps в этом видео:

Преимущества DevOps

  • Предсказуемость. DevOps значительно снижает частоту отказов при выпуске новых релизов.

  • Скорость. Команды, которые работают по принципам DevOps, выкатывают качественные и стабильные релизы в 208 раз чаще и в 106 раз быстрее.

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

  • Качество. Синергия команд разработки и тестирования обеспечивает более высокую стабильность продукта, а использование облачных решений повышает качество разработки программного обеспечения.

  • Конкурентоспособность. Оптимизация доставки ПО вдвое уменьшает время выхода на рынок. Это может стать конкурентным преимуществом.

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

  • Надёжность. Практика CI/CD повышает качество продукта, делая изменения безопасными и эффективными.

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

Ключевые идеи и практики DevOps

Непрерывная интеграция и доставка ПО (CI/CD). Практика фактически реализует идею DevOps, так как предполагает постоянное изменение кода в центральном репозитории (например, Yandex Managed Service for GitLab), где автоматически выполняется сборка, тестирование и запуск. Можно сказать, что CI/CD — это автоматизация тестирования и доставки новых компонентов разрабатываемого продукта всем участникам проекта. Такой подход к разработке ускоряет поиск и исправление ошибок, повышает качество ПО и уменьшает срок проверки и выпуска новых фич. Благодаря CI/CD удобнее поддерживать согласованность ПО на разных платформах.

Непрерывное тестирование. Прогон кода через тесты — это самая надёжная защита от неприятных ошибок при эксплуатации. Разработчики закладывают метрики качества в код и собирают результаты тестов. Тестирование может быть и ручным, но обычно оно автоматизированное — так удобнее отслеживать изменения в коде и контролировать качество. Для DevOps-инженера это важно.

Мониторинг и автоматизация. Автоматизировано должно быть всё, что можно. Это связано с важным для DevOps повышением уровня контроля. Среды, которые необходимы для работы конвейера развёртывания, создаются и уничтожаются автоматически с помощью скриптов. Ручные тесты остаются как запасной вариант. Развёртывание и тиражирование выполняются автоматически, с подстройкой средств мониторинга систем и приложений. Мониторинг важен, так как позволяет получать быструю обратную связь по только что выпущенным релизам. И если система мониторинга фиксирует сбой, который не удалось предотвратить до выпуска кода в продакшн, система может запустить автоматический откат изменений для обеспечения стабильности работы продукта.

Постоянное улучшение. Существует правило, которое можно сформулировать следующим образом: «любые обнаруженные недостатки должны быть немедленно устранены». Рекомендуется повторять как можно чаще проблемные шаги, чтобы понять, что следует изменить или исправить, чтобы всё работало как надо.

Устранение сбоев не означает появление очередей. Если в инфраструктуре что-то засбоило, проблемный элемент отключается и вместо него создаётся новый компонент на базе тех скриптов, которые уже проверены ранее и с помощью которых этот участок успешно создавался ранее. Это эффективно, когда IT-отдел управляет большим объёмом оборудования, например сотнями или тысячами серверов.

IaC (инфраструктура как код). Суть идеи в том, что инфраструктура настраивается согласно тем же принципам, что и приложения. Здесь активно используются облачные решения и такие ресурсы, как виртуальные машины, сети, балансировщики, базы данных и т. д. Фактически эта DevOps-практика даёт возможность запускать не сотню различных файлов конфигурации, а только скрипт, который ежедневно включает нужное количество дополнительных машин, а вечером автоматически сокращает инфраструктуру в рамках лимита.

Микросервисы. Принцип разработки приложений, который предполагает создание набора небольших служб, независимых друг от друга. Каждую из служб можно развёртывать и эксплуатировать отдельно, а друг с другом они взаимодействуют через интерфейс. За счёт разделения задач и независимого функционирования компонентов приложения удобнее использовать методики DevOps, например CI/CD.

Узнайте, как внедрять DevOps и работать с облачной инфраструктурой:

Managed Service for GitLab

DevOps и облака

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

Но облачная инфраструктура — это не только новые возможности, но и новые требования к опыту. Для разработки небольшого и некритичного приложения может хватить одной виртуальной машины с веб-сервером и нескольких обычных разработчиков. Для сложного, постоянно меняющегося продукта необходимо привлекать DevOps-инженера с опытом работы в облаке. Сложность архитектуры и взаимосвязей между её компонентами требует более глубоких компетенций, чем у простого разработчика.

Курс: Создание динамических сред для разработки

Чтобы эффективно управлять разработкой на облачной платформе, нужно освоить работу с управляемыми базами данных, изучить основы организации отказоустойчивых систем и cloud-native-разработку. Можно попытаться сделать это самостоятельно путём проб и ошибок в собственной виртуальной инфраструктуре. Есть и более эффективный вариант: бесплатные курсы для DevOps-инженеров от Yandex Cloud. Пройдя курсы вы научитесь разворачивать микросервисы в облаке, использовать бессерверные вычисления, работать с Docker-контейнерами в облаке и использовать Kubernetes, можно браться за более сложные задачи и продолжать развитие в сфере облачной разработки. Каждый курс включает в себя модули с теорией и практикой и будут полезны практикующим DevOps‑инженерам Middle‑ или Senior‑уровня.

DevOps инструменты

У каждого DevOps‑инженера есть свой список инструментов и сервисов, которыми он предпочитает пользоваться. Но из‑за того, что отрасль DevOps стремительно развивается, технологии и подходы к работе часто меняются. А вместе с ними меняются и рабочие инструменты. Мы предлагаем перечень сервисов, которые помогут эффективнее использовать возможности облачной платформы Yandex Cloud. Мониторинг, доставка трафика, отказоустойчивая архитектура и масштабирование, автоматизация управления жизненным циклом — с этими инструментами вы сможете построить эффективную и удобную экосистему для разработки и эксплуатации приложений.

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

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

  • Application Load Balancer — балансировщик нагрузки уровня приложения. Отвечает за распределение входящего трафика между разными компонентами веб-приложения.

  • Certificate Manager — сервис для управления сертификатами TLS. Позволяет использовать сертификаты самостоятельно или в интегрированных сервисах Yandex Cloud.

  • Cloud CDN — организация сети распространения контента. Отвечает за быструю доставку пользователям статического контента за счёт его кеширования на географически распределённых CDN-серверах.

  • Cloud Logging — сервис, который агрегирует данные о работе пользовательских приложений и ресурсов Yandex Cloud в лог-группу. Данные каждой лог-группы хранятся отдельно.

  • Container Registry — сервис для управления Docker-образами, которые размещаются в отказоустойчивом хранилище с настроенной автоматической репликацией.

  • Key Management Service — сервис для управления криптографическими ключами. Позволяет защитить секреты и любую ценную информацию, которая хранится в облаке.

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

  • Lockbox — сервис для управления секретами в инфраструктуре Yandex Cloud с  помощью консоли управления или API.

  • Managed Service for GitLab — сервис для работы с DevOps-платформой GitLab в  инфраструктуре Yandex Cloud. Вы можете хранить код, проводить код-ревью, строить процессы разработки и релиза приложений в Yandex Cloud.

  • Managed Service for Kubernetes — сервис для управления кластерами Kubernetes. Позволяет подключаться к репозиторию в Yandex Container Registry, а также использовать в качестве узлов кластера Kubernetes серверы, расположенные вне Yandex Cloud.

  • OPA Gatekeeper — приложение для создания настраиваемых политик управления ресурсами в кластере Kubernetes. Есть библиотека готовых политик, которая упрощает настройку конфигураций служб безопасности.

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

Курс: Деплой инфраструктуры по модели GitOps

Напишите нам

Начать пользоваться Yandex Cloud

Тарифы

Узнать цены и рассчитать стоимость

Мероприятия

Календарь событий Yandex Cloud
Что такое DevOps и почему этот подход востребован
Войдите, чтобы сохранить пост