В этой статье мы сравним две методологии, связанные с разработкой программных продуктов - Scrum и DevOps.
Scrum
Существует классическая каскадная модель разработки продукта (Водопад — от англ. Waterfall) — линейная последовательность действий, когда продукт либо проект проходит этапы разработки концепции, составления архитектуры, планирования, внедрения, контроля, доработки и т.д. Следующий этап нельзя начать, пока не завершен предыдущий.
В противовес ей, в методологии Scrum, продукт разрабатывают не сразу полностью, а небольшими готовыми к релизу частями, каждую из которых завершают за короткую итерацию, или спринт. Это помогает устранить излишний перфекционизм и неповоротливость на современном динамически стремительном рынке.
Рисунок 1 - Схема Scrum
DevOps
По сути, это система передачи, непрерывной транспортировки и развертывания продукта в операционную среду (т.е. для реального использования). Эта система предполагает взаимодействие между подразделениями разработки продукта, к примеру - программного кода и обеспечения (development) и системой его эксплуатации (operation). Второй ключевой функцией системы DevOps является максимальная автоматизация процессов и процедур развертывания этого продукта в среде эксплуатации. Подробнее читайте в статье.
Рисунок 2 - Схема DevOps
Отличия Scrum от DevOps
Содержание и назначение систем
Scrum — набор основных элементов и правил, своего рода фрейм, на котором строится процесс разработки продукта.
DevOps - система доставки и автоматического развертывания частей продукта. Это два последовательных процесса.
Принципы и подходы
Фреймворк Scrum был создан для быстрых итерационных процессов разработки продукта.
Подход методики Devops - придерживаться определенных процедур, которые предполагаются при автоматической доставке продукта в операционную среду.
Процессы и ориентирование
Scrum изначально был создан как набор разных методов и процедур для управления работой над сложными продуктами. Т.е. он применяется в самом начале работы над новыми продуктами, захватывая даже этап итерационных исследований рынков, технологий и возможностей продуктов.
Devops ориентирован на продукты, окончательно сформировавшиеся и имеющие практическую ценность. Он задействован на финальных стадиях их циклов внедрения.
Применение и использование
Scrum применяется для разработки программного продукта, аппаратного обеспечения, микрокода, научных исследований и многого другого. Он может использоваться повсеместно в учебных заведениях, правительстве, маркетинге, в управлении компаниями. Т.к. это системный набор принципов и подходов.
Devops же - это конкретная система методов доставки и автоматического развертывания программного продукта в производственной среде.
Команда и коммуникации
Scrum-команда состоит из владельца продукта, команды разработки и Scrum-мастера. Другими словами, это самостоятельные и кросс-функциональные единицы. Автономно решают, как выполнять свою работу, а не следуют внешним указаниям.
Проектная команда Devops, в большинстве своем, не имеют подобной независимости и самокоррекции их функциональности. Фокус внимания там сконцентрирован на документации, спецификациях и инструкциях.
Автоматизация деятельности
Scrum-команда, как мы уже упоминали,не ограничена в выборе инструментов и вполне может пользоваться ручными операциями и бумажными носителями, соответствующими выбранной методике ведения проекта.
Автоматизация является инструментальной основой Devops, деплои должны быть надежными и проходить без сбоев.
Упор на качество
В Scrum обеспечение качества программного обеспечения и операций отходит на второй план, уступая место скорости и результативности.
Тогда как все инженеры в команде Devops обеспокоены качеством программного обеспечения и процесса развертывания ПО.
Scrum или DevOps?
Рассматривая в целом эти два понятия, мы можем сделать следующий вывод - они оба служат для быстрого и качественного реагирования на запросы современного рынка. И дело не в том, какая из систем лучше всего справляется со своей миссией, а в том, что их можно и нужно использовать совместно друг с другом. Ведь главное - результат и полученные выгоды.