Close

Топологии команд

Как четыре фундаментальные топологии влияют на внедрение DevOps.

Иэн Бьюкэнэн

Главный разработчик решений

Редакционная статья: Шана Ву

Изучите преимущества команд, ориентированных на потоки, а также узнайте о том, как они работают с командами разработки платформ и подсистем и дают командам возможность поставлять ценность клиентам.

Введение в топологии команд


Командам разработчиков нужно действовать как никогда быстро, чтобы поставлять ценность клиентам. Рост числа облачных решений, SaaS-продуктов и постоянно активных сервисов свидетельствует о том, что клиентам нужны новые функции, снижение числа ошибок и безотказная работа в течение 99,99 % времени (или более).

Чтобы удовлетворить эти потребности, организации внедрили методики Agile (а с недавнего времени — и DevOps), которые обещают сократить время выхода на рынок и время выполнения, повысить частоту развертываний, развить культуру команд и расширить сотрудничество между командами и отделами.

На деле внедрение методов DevOps — непростая задача, однако в книге Team Topologies (Топологии команд) содержатся продуманные способы внедрения DevOps в организациях и сведения о том, какие команды могут принести максимум пользы. Эта книга дает представление о том, как в компании Atlassian рассматривают команды. Вместо того чтобы повторять эти выводы, мы хотим поделиться собственным взглядом на типы команд.

Первый шаг на пути к DevOps — определение существующей организационной структуры. Однако сегодня в компаниях есть множество различных типов команд, а в некоторых случаях отдельные команды берут на себя несколько ролей и обязанностей. Когда границы размыты, руководителям трудно представить общую организационную структуру и ответить на вопросы.

См. решение

Инструменты DevOps для всей команды

Связанные материалы

Создание культуры DevOps

  • Сформированы ли все необходимые команды?
  • Имеются ли области, в которых не хватает возможностей и которыми не занимается ни одна команда?
  • Соблюдается ли в командах необходимый баланс между автономностью и поддержкой со стороны других команд?

Руководители команд по разработке и эксплуатации смогут лучше понять, имеются ли у них нужные команды, взглянув на свою организацию через призму топологии команд. Рекомендуется сократить число вариантов команд до четырех основных топологий, которые предельно понятны руководителям высшего звена и самим участникам команд:

  • Команда, ориентированная на поток
  • Команда разработки платформы
  • Команда разработки сложных подсистем
  • Команда поддержки

Имейте в виду, что эти типы команд могут принимать различные формы с учетом размера и зрелости компании. На практике чаще всего лучше скомбинировать несколько типов команд или преобразовать одну команду в другую.

1. Команда, ориентированная на поток


Команды, ориентированные на поток, концентрируются на одном важном потоке работы. Это может быть отдельный продукт или услуга, набор функций, путь пользователя или тип пользователя. Команда может максимально быстро, безопасно и независимо создавать и поставлять ценность клиентам или пользователям, не передавая части работы другим командам.

Команды, ориентированные на поток, работают над полным спектром поставок, поэтому им нужно быть ближе к клиенту. Кроме того, обычно они сразу работают по методике agile. Такая команда учитывает отзывы клиентов в циклах разработки и одновременно сопровождает программное обеспечение в рабочей среде.

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

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

2. Команда разработки платформы


Команды разработки платформы позволяют командам, ориентированным на поток, автономно выполнять достаточный объем работы. Команда, ориентированная на поток, несет полную ответственность за создание, запуск и исправление проблем приложения в рабочей среде, а команда разработки платформы предоставляет ей внутренние сервисы для работы.

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

В Atlassian команды разработки платформы создают сервисы, которые используются во всех продуктах компании (например, в системе управления учетными данными). Кроме того, они должны предоставлять документацию, оказывать поддержку и давать пояснения командам, ориентированным на поток.

3. Команда разработки сложных подсистем


Команда разработки сложных подсистем отвечает за создание и обслуживание сектора системы, в работе с которым нужны специальные навыки и знания. Большинство участников команды должны быть специалистами в определенной области знаний, чтобы разбираться в работе подсистемы и вносить в нее изменения.

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

Распространенная ошибка заключается в том, чтобы включить специалистов в каждую команду, ориентированную на поток, которая использует подсистему. Это решение может показаться эффективным, но в конечном счете оно не приносит экономической выгоды и находится вне области задач команды, ориентированной на поток.

4. Команда поддержки


Командам, ориентированным на поток, всегда нужно быть готовыми к быстрой поставке и оперативно реагировать на изменения, поэтому им трудно найти время для исследования, изучения и освоения новых навыков.

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

Благодаря этому у команд, ориентированных на поток, появляется время для приобретения и развития возможностей без ущерба для основных задач. Команда поддержки стремится прежде всего повысить автономность команд, ориентированных на поток, путем расширения их возможностей с акцентом на проблемах, а не на решениях.

Если команда поддержки хорошо справляется со своей работой, уже через несколько недель коллеги, которым она помогает, перестают нуждаться в помощи. Для команды поддержки не должно существовать постоянной зависимости.

Ориентирована ли ваша команда на поток?


Заключение


DevOps — это не пункт назначения, а путь постоянного совершенствования инструментов, культуры команды и методов. Если вы новичок в DevOps, сначала направьте цели на поставку ценности клиентам. Накопив опыт, снабдите инструменты и процессы автоматизацией. И наконец, когда участники команды станут опытными специалистами, добавьте средства наблюдения, чтобы отслеживать, измерять и улучшать нужные показатели.

Если вы только начинаете свой путь к DevOps, изучите рекомендации из нашего руководства по DevOps для начинающих. Для применения DevOps на практике рекомендуем попробовать пакет Open DevOps, который предоставляет командам все необходимое для разработки и эксплуатации программного обеспечения. Они могут создать нужный им пакет инструментов DevOps благодаря интеграциям с ведущими поставщиками и приложениями из Marketplace. Попробуйте прямо сейчас.

Ian Buchanan
Ian Buchanan

Иэн Бьюкенен занимает должность главного разработчика решений для DevOps в компании Atlassian; сфера его интересов — развивающееся сообщество DevOps и совершенствование непрерывной интеграции и непрерывной поставки с помощью Jira, Bitbucket и Bamboo. У Иэна большой опыт разработки на Java и .NET, но гораздо больше он известен как специалист по применению agile-методик и бережливого подхода в крупных корпорациях.

В течение своей карьеры он с успехом управлял корпоративными инструментами разработки ПО на всех этапах их жизненного цикла, от зарождения до устаревания. Иэн руководил на корпоративном уровне модернизацией процессов, которая приводила к улучшению производительности, качества и повышению удовлетворенности клиентов. Он создал международные команды, следующие принципам agile, саморегуляции и самоорганизации. Когда Иэн не выступает и не пишет код, он посвящает время своим любимым занятиям: создает парсеры, экспериментирует с метапрограммированием и предметно-ориентированными языками.


Поделитесь этой статьей
Следующая тема

Рекомендуемые статьи

Добавьте эти ресурсы в закладки, чтобы изучить типы команд DevOps или получать регулярные обновления по DevOps в Atlassian.

Рисунок: DevOps

Сообщество DevOps

Рисунок: DevOps

Образовательные программы DevOps

Рисунок схемы

Начните работу бесплатно

Подпишитесь на информационную рассылку по DevOps

Thank you for signing up