На сайте сообщества по развитию компетенций DevOps и Agile, ассоциации DASA (DevOps Agile Skills Association), опубликован список принципов DevOps.
Авторы предваряют этот список формулировкой задачи, решение которой было бы крайне полезно.
Существует множество определений DevOps. И многие из них адекватно объясняют один или более аспектов важных для предоставления ИТ-услуг. Вместо попыток сформулировать наше собственное исчерпывающее определение, мы предпочитаем подчеркнуть шесть принципов DevOps, которые мы считаем важными для тех, кто применяет или переходит на подходы DevOps к организации работы.
Но, как видно из краткого изложения этих принципов ниже, подход к формированию списка вряд ли можно признать системным.
Например, если в первом принципе говорится об ориентации на заказчика, то зачем сюда же отнесены постоянные инновации? Возможно они [инновации] смотрелись бы более органично в пятом принципе. Принципы 3 и 4 видится зависимыми или, как минимум, пересекающимися.
Принцип 1
Деятельность должна быть ориентирована на заказчика («Customer-Centric Action»). С постоянными инвестициями в продукты и услуги, которые обеспечат максимальную удовлетворённость заказчика.
Здесь же упоминается необходимость коротких циклов обратной связи с заказчиками и конечными пользователями. А также деятельность в духе Lean-стартапов с постоянными инновациями.
Принцип 2
Ориентация на конечный результат («Create with the End in Mind»)
Отказ от водопадного подхода и процессно-ориентированных моделей, когда каждое подразделение и сотрудник выполняют только конкретную роль/функцию без понимания полной картины. Компаниям необходимо действовать как продуктовым компаниям, явно сфокусированным на создании продуктов, которые будут поставляться реальным заказчикам, и все сотрудники должны представлять эти продукты.
Принцип 3
Ответственность от начала до конца («End-To-End Responsibility»)
Команды отвечают за полный жизненный цикл продукта, от концепции до вывода из эксплуатации.
Принцип 4
Кросс-функциональные автономные команды («Cross-Functional Autonomous Teams)
Команды должны быть полностью независимыми на протяжении всего жизненного цикла. Что требует сбалансированного набора компетенций членов команд, более широких, T-образных профилей специалистов. Команды становятся очагом персонального развития и роста.
Принцип 5
Постоянное совершенствование («Continuous Improvement)
Постоянная адаптация к изменяющимся обстоятельствам (потребности заказчиков, требования законодательства, новые технологии). Сокращение потерь, оптимизация скорости, затрат, упрощение поставки и постоянное совершенствование предлагаемых продуктов/услуг. Экспериментирование, таким образом, существенная деятельность для встраивания и развития методов обучения на ошибках. Хорошее жизненное правило – делать чаще то, что получается плохо.
Принцип 6
Автоматизируйте всё, что можете («Automate Everything You Can»)
Думайте об автоматизации не только процессов разработки программного обеспечения (непрерывная поставка [continuous delivery], включая непрерывную интеграцию [continuous integration] и непрерывное развёртывание [continuous deployment]), но также всего инфраструктурного ландшафта (инфраструктура как код).
В целом список, конечно, полезный. Заставляет ещё раз проверить своё сложившееся понимание DevOps. Ну, и, как и любой подобный набор «аксиом», он может быть использован для упражнений «Какие теоремы можно доказать, основываясь на этих аксиомах?» или «Не являются ли какие-либо из приведённых аксиом теоремами?»