Каждый день на рынке появляется огромное количество новых цифровых продуктов. Выпускаются они практически со скоростью горячих пирожков, потому что не сделаешь ты — сделает конкурент.
Существенно сократить time-to market позволяют не только современные инструменты для разработки, включая облачные решения, но и эффективные методологии. Рассказываем простыми словами, что такое DevOps и как этот подход помогает компаниям автоматизировать создание приложений.
Что такое DevOps
До появления DevOps процесс разработки строился по принципу каскада, в котором все этапы были четко зафиксированы. На старте определялись требования к продукту, затем наступал черед проектирования, после него — написание и сборка кода, тестирование и запуск.
В современном мире каскадная модель уже потеряла свою эффективность.
- Низкая скорость разработки
- Неэффективное взаимодействие между разработчиками, тестировщиками и администраторами
- Высокий уровень зависимости отделов друг от друга
Перейти на следующий этап можно только по завершении предыдущего. Любая ошибка — и все заново.
При каскадном подходе программисты могут вообще не знать, что происходит с их кодом после сборки. Тестировщики далеко не всегда уверены, что они работают с актуальной версией приложения. А сисадминам и эксплуатации зачастую не хватает четких данных по требованиям к конфигурации серверов.
Нередко возникают ситуации, когда одна команда вынуждена сидеть без работы, так как другая еще не закрыла свои задачи. Например, пока разработчикам не передадут обновленные требования пользователей, они не могут работать над новой версией продукта. Пока они не выпустят новый релиз — нечего тестировать администраторам.
Решить эти проблемы и повысить эффективность процесса разработки призвана методология DevOps. В ее основе лежит идея, что разработка, тестирование и эксплуатация продукта — отнюдь не разрозненные этапы, а единый циклический процесс.
Почему DevOps — это удобно
При каскадной модели команды неизбежно участвовали в цепочке "разработка новых фич — тестирование — устранение багов". Обновление приложения занимало очень много времени, и команды просто не успевали своевременно реагировать на запросы пользователей и потребности рынка. Методология DevOps позволяет создавать цифровые продукты в разы быстрее. Все шесть этапов идут параллельно друг с другом.
- Проектирование
- Разработка
- Запуск конвейера CI/CD
- Тестирование
- Развертывание
- Непрерывный мониторинг
Владелец продукта указывает требования к приложению, а команда разработки определяет, какой должна быть его структура. Каждое подразделение фиксирует этапы, в которых принимает участие, и время, которое на них будет затрачено.
Под руководством DevOps-инженера (которого нередко называют просто «девопс») команда создает окружение и конвейер непрерывной разработки и доставки (CI/CD), где и будет идти разработка продукта. Пишутся скрипты и части кода. Отдел эксплуатации и тестировщики настраивают отдельные кластеры для разработки, тестов и продакшна.
На этом этапе запускают в работу скрипты, которые автоматизируют все рутинные задачи и работу с инфраструктурой: компиляцию кода, его передачу на тестирование и многое другое.
Процесс полностью автоматизирован и идет непрерывно. После успешного прохождения автотестов приложение отправляется на продакшн-сервер.
Как и тестирование, происходит непрерывно. Конфигурации, успешно прошедшие тесты, автоматически или полуавтоматически (в зависимости от подхода) отправляются на продуктив. Благодаря тому, что все этапы заскриптованы, развертывание может происходить несколько раз в день без ручного вмешательства команды.
Когда приложение попадает в продакшн-среду, к нему подключаются выбранные системы мониторинга. Они круглосуточно отслеживают работоспособность продукта, а если что-то идет не так — оповещают разработчиков.
Чем занимается 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 упрощает жизнь всех участников процесса разработки цифрового продукта.
- Разработчик может целиком сконцентрироваться на написании кода и внедрении новых функций, не отвлекаясь на настройку инфраструктуры.
- Тестировщик получит больше возможностей при проверке приложения на различных конфигурациях и не будет тратить время на автотесты — они уже автоматизированы.
- С администраторов снимаются непрофильные задачи по развертыванию приложения и мониторингу его работоспособности.
- Бизнес сократит затраты на разработку и сможет эффективнее использовать бюджет, например, перенаправить его на маркетинг и продвижение продукта.