TGViewer
Тимлидошная Тимлидошная @teamleadosh · 149 subscribers
Post #63 405
Техлид: Стратегия Архитектуры

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

Проходит год

В сервисе 20 новых фич, из прошлой команды осталось пару челов, код начал напоминать спагетти, при этом существует миллион тестов. Узнали? И вот что: работа не заканчивается после релиза, она только начинается. Самая идеальная архитектура как минимум обречена на деградацию

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

1️⃣Технический долг

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

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

Что с ним можно делать я подробно писал тут, но давайте вспомним основные моменты:

▫️Классифицируем - не весь долг одинаково вреден. Мы сделали это намеренно, чтобы успеть, или это просто получилось из-за спешки/неопытности? Мы понимали риски, или просто делали на шару?
▫️Обозначаем - создаем задачи на погашение, маркируем их специальным тегом (tech-debt) и складываем в бэклог. Это делает проблему видимой для всей команды и менеджмента
▫️Приоритизируем - Какой долг самый дорогой? Тот, который замедляет разработку самых важных бизнес-фич. То есть оптимизируем то, что команда трогает каждый день. И обязательно под это выделяем фиксированный процент времени в каждом спринте (например, 15-20%)

Это не про написание идеального кода, а про экономику разработки

2️⃣Легаси

Перед нами старый монолит. Он работает, приносит деньги, но каждая новая фича в нем — это боль и страдания. Каждый месяц приходят ребята с предложениями все переписать с нуля. И это очень опасная ловушка, потому что вероятность доведения до конца не 100%

Если погуглить, мы найдем понятие "эволюционная модернизация". И сразу один из самых мощных паттернов для этого - Strangler Fig Pattern.

Что делаем:

▫️Ставим прокси, чтобы ходить в старую систему через него. Изначально он просто проксирует все запросы в старую систему (фасад)
▫️Новую функциональность (или переписываемый кусок старой) мы реализуем в виде отдельного, нового сервиса
▫️В конфигурации фасада мы меняем одно правило: запросы, относящиеся к новой функциональности, теперь идут на новый сервис, а все остальные по-прежнему на старый.

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

3️⃣Связность и зацепление

В нашей зоне ответственности вся архитектура. И здесь иногда возникают моменты с гибкостью: высокое зацепление (Coupling) и низкая связность (Cohesion).

🌟Зацепление (Coupling): Насколько сильно два компонента (модуля, сервиса) зависят друг от друга. Если изменение в сервисе А постоянно требует изменений в сервисе Б - у нас высокий Coupling
🌟Связность (Cohesion): Насколько хорошо код внутри одной компоненты связан общей задачей. Если один микросервис отвечает и за профили пользователей, и за расчет доставки - у него низкий Cohesion

Что делать:

▫️Анализируем, какие сервисы чаще всего меняются вместе. И даже когда один сервис ходит в базу данных другого
▫️Определяем границы. Например, сервис "Заказы" не должен знать, как работает "Склад", их общение должно идти через четкие, публичные API.
▫️Визуализируем - строим карту зависимостей между нашими сервисами. Иногда просто по схеме можно найти архитектурные проблемы

Все понятно

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

@teamleadosh

#career
Telegram asisakov Техдолг платежом красен К метафоре, описывающей накопление недостатков во внутреннем качестве продукта, которые затрудняют его дальнейшее развитие и поддержку, можно красиво привести аналогию с финансовым долгом: берем ресурсы сейчас для быстрого достижения…
  • 👍 6
  • ❤ 3
  • 🥰 3
More from @teamleadosh
  1. Nov 12, 2025Как техлиду выйти за рамки В среднем по айти мнение такое, что техлид - это просто самый о…
  2. Oct 27, 2025Кажется пора канал переименовать из Тимлидошной в Техлидошную 😂 UPD. Если что, скоро зако…
  3. Oct 27, 2025Техлид: CI/CD Мы спроектировали систему на бумаге, научились контролировать ее качество и…
  4. Oct 13, 2025Как вам последние посты про техлида? Не слишком душно? Все понятно?
  5. Sep 30, 2025Техлид: Контроль и Ревью Мы написали идеальный Design Doc. Все согласились и разошлись по…
  6. Sep 22, 2025Техлид: Проектирование и Требования Часть 2 2️⃣Продолжаем с дизайн-доком Сюда еще можно до…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →