DevOps – это методология разработки программного обеспечения, объединяющая разработку (Development) и эксплуатацию (Operations) в единый процесс. Его цель – повышение скорости и качества разработки программного обеспечения, а также улучшение коммуникации и сотрудничества между разработчиками и операторами.
Методы DevOps включают в себя автоматизацию процессов, использование инструментов для непрерывной интеграции и развёртывания (CI/CD), мониторинг и откат изменений. DevOps также предполагает использование облачных технологий, микросервисной архитектуры и контейнеризации.
Основные задачи DevOps включают в себя улучшение сроков развертывания программного обеспечения, повышение его надежности и безопасности, автоматизацию процессов тестирования и развертывания, а также оптимизацию инфраструктуры и управление конфигурациями. В целом, DevOps направлен на улучшение командной работы и достижение высокой производительности разработки и эксплуатации программного обеспечения.Методология предполагает активное взаимодействие специалистов по разработке со специалистами по информационно-технологическому обслуживанию и взаимную интеграцию их технологических процессов друг в друга для обеспечения высокого качества программного продукта. Предназначена для эффективной организации создания и обновления программных продуктов и услуг. Основана на идее тесной взаимозависимости создания продукта и эксплуатации программного обеспечения, которая прививается команде как культура создания продукта.
Методология фокусируется на стандартизации окружений разработки с целью быстрого переноса программного обеспечения через стадии жизненного цикла ПО, способствуя быстрому выпуску версий программного продукта. В идеале, системы автоматизации сборки и выпуска должны быть доступны всем разработчикам в любом окружении, и у разработчиков должен быть контроль над окружением разработки, а информационно-технологическая инфраструктура должна становиться более сфокусированной на приложении.
Задача инженеров автоматизации технологических процессов сборки, настройки и развёртывания программного обеспечения (DevOps engineers) — сделать процессы разработки и поставки программного обеспечения согласованным с эксплуатацией, объединив их в единое целое с помощью инструментов автоматизации.
Промышленная автоматика, АСУП и АСУТП, в частности – программирование ПЛК, SCADA и HMI, является одним из направлений применения методики DevOps.
Движение за автоматизацию технологических процессов сборки, настройки и развёртывания программного обеспечения (DevOps-движение) возникло в 2009 году и было призвано решить проблемы взаимодействия команд разработки и эксплуатации программных продуктов.
Поскольку DevOps — это всегда командная работа (между сотрудниками, занимающимися разработкой, операциями и тестированием), нет единого инструмента «DevOps»: это скорее набор (или «инструментальная цепочка DevOps»), состоящий из множества взаимодополняющих друг друга инструментов. Почти всегда инструменты DevOps вписываются в одну или одновременно в несколько из этих категорий, что отражает ключевые аспекты разработки и доставки программного обеспечения:
- Кодирование — разработка и анализ кода, инструменты контроля версий, слияние кода;
- Сборка — инструменты непрерывной интеграции, статус сборки;
- Тестирование — инструменты непрерывного тестирования, обеспечивающие быструю и своевременную оценку бизнес-рисков;
- Упаковка — репозиторий артефактов, предварительная установка приложения;
- Релиз — управление изменениями, официальное утверждение выпуска, автоматизация выпуска;
- Настройка — конфигурация и управление инфраструктурой, Инфраструктура как инструменты кода;
- Мониторинг — измерение производительности приложений, взаимодействие с конечным пользователем;
- Непрерывная поставка;
- Непрерывная интеграция.
Несмотря на то, что доступно огромное множество инструментов, некоторые категории из них имеют особо важное значение в настройке инструментальных средств DevOps для использования в организации. Некоторые попытки классифицировать и идентифицировать эти основные инструменты можно найти в существующей литературе.
Такие инструменты, как управление контейнеризацией (Docker, Kubernetes), непрерывной интеграцией (Jenkins, GitLab), развёртывания сред по шаблону (Puppet, Ansible, Terraform) и многие другие — часто используются и часто упоминаются в дискуссиях по инструментам DevOps.
Понятие DevOps (как и MLops) никоим образом не ограничивается применяемым аппаратным и программным обеспечением, и является, скорее подходом к разработке программного обеспечения.
Компании, которые используют DevOps, сообщили о значительных преимуществах, в том числе: значительном сокращении времени выхода на рынок, улучшении удовлетворенности клиентов, улучшении качества продукции, более надежных выпусках, повышении производительности и эффективности, а также увеличении способности создавать наиболее правильный и удовлетворяющий потребности клиентов продукт путем быстрого экспериментирования.