Команда Системы (System Team)

28 ноября 2023

Команда Системы

 

Что такое Команда Системы?

Команда Системы — это специализированная Agile-команда, которая помогает в создании и поддержке среды Agile разработки, включая построение и поддержку эксплуатации Конвейера Непрерывной Доставки (CDP).

Современная инфраструктура «разнообразна до невозможного». Нагрузка на Agile-команды постоянно растет. Помимо собственно разработки команды должны непрерывно тестировать, развертывать, выпускать и даже эксплуатировать решения.

Основная причина создания Команды Системы заключается в необходимости повышения скорости, качества и производительности поезда (команды команд, ART) в целом, не ставя под угрозу способность команд доставлять новые элементы решений.

Далее в статье будут описаны области ответственности, особенности организации, функционирования и развития Команд Системы в Lean-Agile организации.

Области ответственности

Рисунок 1. Области ответственности Команды Системы

1. Создание инфраструктуры разработки

Надежная техническая инфраструктура поддерживает высокую скорость Релизного Поезда (Agile Release Train, ART).

Что делает Команда Системы?

  • Создание и поддержка инструментов для обеспечения Конвейера Непрерывной Доставки (Continuous Delivery Pipeline, CDP)
    Автоматизация непрерывной интеграции, непрерывного тестирования сборок и верификации, автоматизация доставки/развертывания и инструментов для выпуска/релизов.
  • Создание платформ и сред
    Создание сред для разработки, демонстрации решений и пользовательского приемочного тестирования в облаке или локальных средах.
  • Упрощение технических аспектов совместной работы
    Команда Системы выступает в качестве связующего звена с третьими сторонами, такими как поставщики данных, услуги и хостинг-провайдеры.

2. Поддержка интеграции Решения

Комплексные Решения также требуют, чтобы Команда Системы поддерживала интеграцию элементов Решения, когда разработка ведется в тесном сотрудничестве между несколькими Релизными Поездами (Agile Release Train, ART).

Что делает Команда Системы?

  • Управление версиями
    Определение и помощь в поддержке решений и политик для контроля версий и управления ими.
  • Создание и выполнение сценариев интеграции
    Создание и выполнение сценариев сборки и интеграции на уровне Решения или ручная интеграция там, где автоматизация пока отсутствует.
  • Посещение различных мероприятий по синхронизации
    Основную работу Команда Системы получает от других Agile-команд, поэтому мероприятия по синхронизации помогают им идти в ногу с потребностями Поезда и избегать критических ситуаций. Представители Команды Системы могут дополнительно посещать следующие мероприятия: Синхронизация Владельцев Продукта (PO Sync), Синхронизация Коучей (Coach Sync), Синхронизация Архитекторов (Architecture Sync), Cинхронизация Команды (Team Sync).

3. Помощь со сквозным тестированием

Команда Системы также может выполнять некоторые обязанности по тестированию, которые поддерживают Agile-команды:

  • Создание новых автоматизированных сценариев тестирования
    У многих команд может не быть инфраструктуры или знаний для сквозного тестирования функциональности. Команды Системы обеспечивают среды, помогающие командам создавать автоматические тесты для поддержки нового или существующего функционала (фич).
  • Предоставление наборов данных
    Создание тестовых данных для повторного использования, их поддержание и контроль версий (VC).
  • Систематизация и управление тестовыми сценариями
    Систематизация тестовых сценариев, разработанных отдельными командами, в упорядоченные наборы тестов, приоритизация трудоемких тестов и улучшение инфраструктуры тестирования.
  • Выполнение ручного тестирования
    Помощь командам в выполнении ручного тестирования для сложных сценариев (например, сквозные тесты для поддержки исследований) и некоторых межсистемных Фич, автоматизация которых пока невозможна.
  • Проведение интеграционного тестирования
    Помощь команде разработчиков в верификации интеграции между различными системами (например, между программными компонентами, между программным и аппаратным обеспечением).
  • Создание тестов на общую работоспособность (smoke test)
    Помощь в создании тестов проверки сборок, которые позволяют разработчикам быстро и независимо проверять свои сборки.
  • Тестирование производительности решения
    Помощь в создании и выполнении тестов для НФТ/NFR (например, безопасности, надежности, производительности и удобства использования), а также помощь Архитекторам Систем и Решения в выявлении недостатков и узких мест системы.

4. Поддержка проведения Демонстраций Систем и Решения

В конце каждой итерации Релизный поезд (ART) проводит Демонстрацию Системы, тестируя и оценивая полное решение. Это позволяет получить обратную связь от заинтересованных лиц и протестировать решение в среде, где инфраструктура и данные максимально приближены к производственной. Аналогичным образом, Демонстрация Решения представляет результаты разработки нескольких Релизных поездов (ART) и поставщиков.

Команда Системы поддерживает Релизные Поезда (ART) или Поезда Решений во время планирования, подготовки и проведения Демонстраций Систем и Решения:

  • Планирование демонстраций
    Взаимодействие с Agile-командами, чтобы определить, что они будут демонстрировать в конце каждой итерации, а также подготовка необходимых сред и инфраструктуры.
  • Интеграция ресурсов
    Поддержка интеграции ресурсов и артефактов Agile команд.
  • Проведение демонстраций сквозного решения
    Помощь Менеджерам Продукта, Владельцам Продукта и другим лицам в проведении демонстраций, преимущественно сквозных сценариев.
  • Настройка и тестирование среды для демонстрации
    Подготовка технических сред, необходимых для надежной демонстрации новой функциональности Решения. Кроме того, каждый инкремент нового решения может потребовать от Команды Системы расширять демонстрационную среду, добавляя новые интерфейсы, сторонние компоненты, инструменты моделирования и другие ресурсы среды.

Команда Системы часто помогает поездам делать необходимые технологические инвестиции (в DevOps, CDP и т.д.), чтобы обеспечить своевременное и регулярное проведение демонстраций систем.

5. Фасилитация Выпусков (Релизов)

Команда Системы поддерживает Релизные Поезда (ART) и Поезда Решений в рамках планирования, подготовки, развертывания и выпуска решений. Мероприятия могут включать в себя следующее:

  • Управление выпусками
    Помощь заинтересованным лицам ART в планировании, управлении и надзоре над выпусками решений. Команда Системы также помогает Agile-командам обеспечить соответствие нормативным, отраслевым или другим применимым стандартам.
  • Подготовка к релизам
    Упаковка и развертывание решений в рамках деятельности DevOps и CDP. Это включает в себя использование различных техник, таких как «переключатели функциональности» (feature toggles) для включения и выключения фич.
  • Выпуск решений
    Помощь поезду в выпуске решения для конечных пользователей единомоментно, инкрементально или для разных сегментов клиентов (географии).
  • Стабилизация и эксплуатация
    Взаимодействие с операционными отделами, чтобы обеспечить работу решения с точки зрения функциональных и нефункциональных требований (NFR).
  • Измерение
    Команда Системы помогает поезду реализовать и количественно оценить, обеспечивает ли выпущенная функциональность ожидаемую ценность, а также оценить работоспособность и эффективность всего Конвейера Непрерывной Доставки (CDP).
  • Обучение (получение знаний)
    Помощь в сборе обратной связи из различных источников и подготовке к следующему циклу через CDP.

Команда Системы в Поездах Решений

Для крупных Разработческих Потоков Ценности с несколькими Релизными Поездами (ART), которые вместе организуются в Поезд Решения, Команды Системы играют важную роль в поддержке более масштабных задач интеграции и выпуска.

В зависимости от масштаба и сложности разработческого потока ценности, существует три основных шаблона структурирования Команды Системы:

  1. Одна Команда Системы на один системный (платформенный) ART, который в свою очередь координирует интеграцию и валидацию всего Решения.
  2. Отдельная Команда Системы на уровне Поезда Решения и свои отдельные Команды Системы для каждого Релизного Поезда (ART).
  3. Единая Команда Системы на уровне Поезда Решения, которая также выполняет эти обязанности для всех ART внутри Поезда Решения

Решение о том, какой организационный шаблон использовать, зависит от контекста. К таким факторам относятся структура ART внутри Разработческого Потока Ценности, архитектура решения, политики ветвления и интеграции, тестируемость системы и инфраструктура разработки.

Баланс между Интеграцией Решения и усилиями по тестированию

Команда Системы никогда не может полностью решить проблемы, связанные с инструментами, инфраструктурой и интеграцией в рамках Конвейера Непрерывной Доставки (CDP).

Для внедрения DevOps и CDP Команде Системы необходимо сотрудничать с другими Agile-командами, которые выравнены в соответствии с единым видением. Эффективная разработка решений требует обмена знаниями, лучшими практиками, а также общей инфраструктурой и инструментами, которые помогают снизить сложность.

Максимизация скорости ART включает в себя создание оптимального баланса между Agile-командами и Командами Системы. По мере развития и автоматизации оптимальная точка ответственности за интеграцию смещается влево, где Agile-команды могут достичь более высокой степени автономии и ответственности, «забирая» себе технологическую составляющую разработки.

Рисунок 2. Оптимальный баланс усилий по интеграции

Статья подготовлена по материалам Scaled Agile, Inc. и не является официальным переводом статьи «System Team».

Другие статьи в блоге

Беклог Портфеля (Portfolio Backlog)
В статье рассматриваются все шаги Канбан системы Портфеля, которые одновременно являются шагами жизненного цикла для Эпиков в Lean-Agile организации.
Поток Команды
Поток Команды - это состояние, когда Agile команды обеспечивают непрерывный поток доставки ценности для клиента. Как построить и поддерживать постоянный поток команды? Как применять ускорители потока SAFe на уровне команды?
Agile Контракты
В статье рассматриваются различные подходы к заключению договоров: от традиционных (договоры с фиксированной ценой и контракты Time & Materials) до рекомендуемых к применению в Lean-Agile организациях.