Как мы строили команду Sage Observability: от хаоса к доменным командам

Как мы строили команду Sage Observability: от хаоса к доменным командам - 1

Привет, Хабр! Я Максим, руковожу разработкой систем наблюдаемости и надежности в ижевском ИТ-хабе Т-Банка. Моя статья — часть проекта «20 в 20», в котором мы рассказываем о региональных ИТ-хабах и о том, как в них растут команды и инженерные практики.

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

Так появился Sage Observability — платформа, через которую мы видим состояние всего ИТ-стека: от инфраструктуры до бизнес-метрик, клиентских приложений и инцидентов.

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

Рассказываю свою историю, добро пожаловать под кат!

С чего все началось

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

Это не выглядело как быстрый и очевидный путь. Скорее как длинный проект с высоким риском и большой ценой ошибки. Но именно из этого решения вырос Sage Observability.

В том же 2019 я пришел в Т-Банк тимлидом — заниматься тестированием производительности финансовых систем. До этого работал SDET в аутсорс-компании. Этот опыт сильно повлиял на мой подход к качеству, надежности и инженерной дисциплине.

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

Sage Observability — это не «еще один мониторинг», а система, через которую видно состояние всего: инфраструктуры, бизнеса, безопасности, клиентских приложений.

По масштабу сейчас:

  • 2000+ серверов

  • 10+ ГБ/с телеметрии

  • 11+ ПБ хранения за 2 недели

Важно, что Sage не сразу был таким. Первые несколько лет это была команда примерно из 15 человек, которая, по сути, строила систему с нуля.

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

Почему маленькая команда перестает работать на большом масштабе

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

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

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

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

Эффекты, которые мы получили:

  • стало проще принимать решения;

  • снизилась нагрузка на конкретных людей, которые раньше были точками входа по всем вопросам; 

  • команда начала расти без постоянной потери контекста.

Параллельно мы расширили стек за счет новых фичей. Детектор аномалий на телеметрии написан на Python и Scala, так как ML — это в первую очередь про Python.

Какие процессы пришлось изменить

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

  • Мы выстроили онбординг, через который проходят все новые разработчики. 

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

  • Запустили архитектурный комитет, чтобы управлять изменениями.

  • Разделили большую команду на доменные. 

  • Пересмотрели ежедневные ритуалы, ввели WIP-лимиты и добавили регулярное планирование.

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

Перераспределение ответственности за прод — один из самых чувствительных шагов. Раньше релизы требовали обязательного одобрения от SRE. Сейчас днем на проде дежурят разработчики, а в остальное время — SRE. При этом SRE по-прежнему отвечают за инфраструктуру 24/7.

Перераспределение ответственности непросто внедрять, потому что оно требует доверия и зрелости команды. Но без такой модели невозможно по-настоящему реализовать принцип you build it, you run it. Для нас это шаг к большей инженерной ответственности внутри команды разработки.

С ростом команды стало ясно, что без четкого ритма контекст начинает расползаться.

Сейчас у нас есть обязательные встречи:

  • по пятницам — планирование в командах;

  • по понедельникам — общий синк направлений;

  • раз в две недели — демо;

  • плюс архитектурные комитеты и техтолки.

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

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

  • фиксируем архитектурные решения в формате RFC и ADR;

  • разбираем спорные и сложные случаи;

  • не теряем контекст в быстро меняющейся системе.

За три года формат комитета менялся несколько раз. И это нормально: по мере роста команды и продукта меняются и сами механизмы управления.

Как работает распределенная команда

Sage Observability изначально строилась как распределенная команда: от Минска до Красноярска. Чтобы такая модель работала, нам пришлось договориться о едином рабочем окне с 10:00 до 17:00 по Москве, пересобрать встречи и регулярно синхронизироваться.

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

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

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

С 1 января 2026 года я стал отвечать за разработку системы инцидент-менеджмента — Finedog. Раньше мы развивали эти два продукта параллельно. У нас часто были проблемы на стыках перехода от обнаружения проблемы к заведению инцидента, от поиска проблемы и обратно к координации инцидента. 

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

Хаб как место силы

Для меня отдельно важна история Ижевска. Часть команды была в Москве, я сам — в Ижевске. Это не просто еще одна географическая точка, а полноценный ИТ-хаб, который рос вместе с продуктами. Здесь сильная инженерная база — во многом благодаря индустриальному прошлому города — и при этом довольно живая локальная тусовка: митапы, комьюнити, плотное общение между командами.

Когда мы начинали, в Ижевске в контуре Sage Observability был буквально один человек. Сейчас — несколько инженеров, полноценная часть продуктовой разработки с ownership своих зон. Локально команда — и за счет плотной вовлеченности в продукт — одна из самых «заряженных»: люди не просто пилят задачи, а хорошо понимают, как устроена система целиком.

Я сам почти каждый день хожу в офис — он в 400 метрах от дома. В ковид какое-то время вообще был там единственным «жителем». Параллельно я много времени вкладываю в профессиональное сообщество: участвую в конференциях, в том числе в программных комитетах. Это помогает не замыкаться только на внутреннем контексте и сверяться с индустрией.

Плюс я преподаю и регулярно выступаю — мы сотрудничаем с обоими государственными вузами города — ИжГТУ и УдГУ. А еще мои коллеги ведут курс по алгоритмам и структурам данных в ИжГТУ, участвуют в ярмарках вакансий и проводят junior-митапы.

Один из самых приятных эффектов — когда ребята сначала защищают диплом, а через пару лет приходят к нам и уже сами рассказывают про Sage.

Как мы строили команду Sage Observability: от хаоса к доменным командам - 2

Технологический стек ижевского хаба широкий: у нас работают Java-, .NET-, Go- и JS-разработчики (React и Angular), iOS- и Android-разработчики, системные и бизнес-аналитики, SRE-инженеры, а также QA-специалисты всех профилей: бэкенд, фронтенд и мобайл. Команды разрабатывают и поддерживают мобильный банк, платежные платформы, Единую лояльность, B2B Шопинг, Benefit Solution, Compensation Solution, интерфейсы экосистемы и экосистемную безопасность, Т-ЦОД, Sage и другие.

А еще у нас появилась новая традиция — кулинарные мастер-классы. Традицию запустил наш коллега, известный в команде как гурман и мастер домашней еды. На Новый год он дарил коллегам домашний зефир — такой вкусный, что все сразу спрашивали рецепт. Вместо того чтобы писать его в чат, он предложил: «А давайте сделаем мастер-класс?» 

Как мы строили команду Sage Observability: от хаоса к доменным командам - 3

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

Что дальше

Мы продолжаем развивать Sage Observability как платформу наблюдаемости с ИИ: она помогает улучшать пользовательский опыт, обеспечивает сквозное наблюдение за ИТ-стеком и доступностью сервисов.

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

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

Другие статьи проекта «20 в 20»: 

Автор: Maksimall89

Источник

Оставить комментарий