Когда команда владеет всем путем: Stream-Aligned Teams и доставка
Представьте: ваша команда хочет добавить новый фильтр в поиск на вашем e-commerce приложении. Дизайн готов, код написан, тесты проходят локально. Но вы не можете выкатить это в продакшен. Вам нужна другая команда, чтобы развернуть изменения. Инфраструктурой управляет кто-то другой. Изменения в базе данных делает третья команда. А график релизов контролирует группа, которая собирается раз в неделю.
Это реальность для многих инженерных команд. Работа по доставке одной фичи включает передачи между несколькими командами. Каждая передача добавляет время ожидания, переключение контекста и накладные расходы на координацию. Фича, на разработку которой ушло три дня, может добираться до пользователей две недели.
Есть способ лучше. Он называется stream-aligned team, и это основополагающий паттерн в модели Team Topologies.
Что делает команду stream-aligned
Stream-aligned team владеет полным value stream — от идеи до пользователя. Команда не зависит от других команд, чтобы выкатывать фичи, исправлять баги или деплоить в продакшен. У них есть всё необходимое, чтобы провести изменение от коммита до реального использования.
Рассмотрим команду, которая отвечает за поиск в e-commerce приложении. В эту команду входят бэкенд-разработчики, работающие с индексами и запросами, фронтенд-разработчики, создающие страницу результатов поиска, QA-инженеры, тестирующие сценарии поиска, и кто-то, кто управляет деплоем в продакшен. Когда эта команда хочет добавить новый фильтр, они делают это сами: проектируют изменение, пишут код, тестируют и деплоят. Никакого ожидания, пока другая команда закончит свою работу.
Вот сравнение двух путей доставки:
Именно это означает иметь собственный value stream. Value stream — это последовательность шагов, которая превращает идею в ценность, которую пользователи могут реально использовать. В терминах CI/CD value stream охватывает всё: от коммита кода через сборку, тестирование, деплой и до того момента, когда фича становится доступна пользователям. Stream-aligned team владеет всеми этими этапами.
Как это меняет CI/CD
Когда команда владеет своим value stream, CI/CD-пайплайн меняется кардинально. Команда проектирует свой пайплайн под свои нужды. Они решают, когда запускать интеграционные тесты, какую стратегию деплоя использовать для своей фичи и когда делать откат. Им не нужно согласовывать свой график релизов с другими командами.
Этот паттерн меняет то, как мы думаем о владении. В традиционных подходах часто наблюдается разделение: команда A создает фичи, команда B занимается деплоем, команда C управляет инфраструктурой. Каждый раз, когда что-то идет не так, команда A ждет команду B или C. В stream-aligned team владение сквозное. Команда, которая создает фичу, также и запускает её в продакшене.
Практическое влияние на дизайн вашего пайплайна огромно. Вместо одного гигантского пайплайна, через который должна проходить каждая команда, каждая команда может иметь свой собственный пайплайн. Бэкенд-команда может иметь пайплайн с тяжелыми интеграционными тестами. Фронтенд-команда может сосредоточиться на визуальных регрессионных тестах. Каждый пайплайн работает независимо, в своем темпе.
Коммуникационные узлы исчезают
Одно из самых больших преимуществ stream-aligned teams — это сокращение коммуникационных узлов. Вашей команде не нужно проводить координационное совещание только для того, чтобы задеплоить на стейджинг. Вы не ждете слота для релиза. Вы двигаетесь с собственной скоростью, в рамках согласованных с другими командами границ.
Вспомните последний раз, когда у вашей команды была проблема на продакшене. Если бы вы были stream-aligned team, вы бы исправили её немедленно, потому что вы владеете и кодом, и деплоем. Вам не нужно было бы создавать тикет, ждать, пока команда инфраструктуры предоставит доступ, или объяснять проблему другой команде, которая не знает вашу кодовую базу.
Не каждая команда может быть stream-aligned
Stream-aligned teams не появляются в одночасье. В небольшой организации одна команда может обрабатывать всё приложение. В крупной организации одна команда может заниматься одной областью продукта, такой как поиск, рекомендации или платежи. Ключевой момент в том, что у каждой команды есть четкие границы того, чем они владеют и что принадлежит другим командам.
Этот паттерн также не означает, что команды работают в изоляции. Stream-aligned teams по-прежнему нуждаются в инструментах, окружениях и инфраструктуре для работы. Им нужна платформа, на которой можно строить. Здесь в игру вступают другие паттерны команд, такие как platform teams, которые предоставляют основу, чтобы stream-aligned teams могли двигаться быстро, не создавая всё с нуля.
Практический чеклист для перехода к stream-aligned teams
Если вы хотите начать двигать свои команды в сторону этой модели, вот практический чеклист для проработки:
- Нанесите на карту ваш текущий value stream. Запишите каждый шаг от идеи до продакшена. Отметьте, какие команды участвуют на каждом этапе. Подсчитайте количество передач.
- Выберите одну ограниченную область. Выберите фичу или сервис с четкими границами. Это может быть поиск, платежи, уведомления или профили пользователей. Начните с одной области, а не со всей системы.
- Дайте команде сквозное владение. Позвольте им владеть кодом, тестами, деплоем и мониторингом продакшена для этой области. Устраните зависимости от других команд в рамках этой области.
- Позвольте им спроектировать свой собственный пайплайн. Не заставляйте их использовать общеорганизационный шаблон пайплайна. Позвольте им выбрать свою стратегию тестирования, частоту деплоя и подход к откату.
- Предоставьте платформу, а не шлюз. Создайте общую инфраструктуру и инструменты, которые команды могут использовать, но не заставляйте их ждать утверждений или стоять в очереди за слотами для релиза.
- Установите четкие границы. Определите, чем владеет эта команда, а чем — другие. Документируйте интерфейсы между командами. Убедитесь, что все знают, где заканчивается ответственность одной команды и начинается другой.
Главный вывод
Stream-aligned teams меняют опыт доставки с ожидания и координации на движение и выкат. Когда команда владеет своим value stream, трение от передач исчезает. CI/CD-пайплайн становится инструментом, которым команда управляет, а не процессом, которому команда подчиняется. Команда может немедленно реагировать на проблемы в продакшене, выкатывать фичи в своем темпе и сосредотачиваться на создании ценности, а не на преодолении организационных зависимостей.
Начните с малого. Выберите одну ограниченную область, дайте команде полное владение и посмотрите, как изменится их скорость доставки. Разница между ожиданием разрешения и владением всем путем больше, чем ожидает большинство команд.