System Design Space
Граф знанийНастройки

Обновлено: 24 марта 2026 г. в 12:33

Эволюционная архитектура на практике

hard

Разбор доклада Александра Поломодова: инкрементальные изменения, fitness functions, coupling и триггеры архитектурной эволюции.

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

Ее практическая сила в том, что она связывает рост клиентов, интеграций и организационной сложности с конкретными решениями: размером шага, границами изменений, coupling, fitness functions и теми триггерами, по которым видно, что текущая структура больше не справляется.

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

Практическая польза главы

Практика внедрения

Показывает, как эволюционные подходы применяются в реальных продуктовых командах и процессах.

Границы изменений

Помогает выбирать безопасный размер архитектурного шага и планировать последовательность миграций.

Метрики прогресса

Учит фиксировать сигналы, что архитектурные изменения действительно улучшают систему.

Interview pragmatism

На интервью дает практичный язык эволюции: что менять сейчас, что откладывать и почему.

Источник

Эволюционная архитектура на практике

Разбор доклада Александра Поломодова: инкрементальность, fitness functions и coupling.

Перейти на сайт

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

Контекст: почему тема возникает

Драйверы изменений

  • Рост клиентов и продуктовых направлений увеличивает стоимость изменений.
  • Больше интеграций между продуктами → больше зависимости и организационной сложности.
  • Команды дробятся на stream-aligned, архитектура следует за оргструктурой (закон Конвея).

Ключевая мысль

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

Что такое архитектура в этой теме

Архитектура как набор важных решений

Решения, которые сложно и дорого менять, поэтому их нужно делать осознанно.

Архитектура как границы и траектория

Определяет не только текущее устройство, но и направление развития системы.

Что значит «эволюционная»

Видео

Доклад: Эволюционная архитектура на практике

Tinkoff Agile Conference 2021, Александр Поломодов.

Перейти на сайт

Инкрементальность

Маленькие шаги проще строить, тестировать и выкатывать.

Управляемость

Изменения должны оставаться в заданных границах качества.

Инкрементальность даёт профит

  • Build: маленькие изменения проще реализовать и проверить.
  • Deploy: небольшие поставки безопаснее и быстрее откатываются.
  • Product: проще маппить бизнес-фичи на архитектуру.

Три блока эволюционной архитектуры

Книга

Building Evolutionary Architectures

Fitness functions, architectural quantum и практика эволюции архитектуры.

Читать обзор

Инкрементальные изменения

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

Fitness functions

Автоматизированные проверки, удерживающие архитектуру в нужных рамках.

Appropriate coupling

Связность между компонентами позволяет им эволюционировать независимо.

Визуальная карта эволюции

Поток изменений

Инкрементальные изменения

1/3

Маленькие изменения проще делать, тестировать и выкатывать.

Fitness functions

2/3

Проверки, которые удерживают качество и ограничения.

Appropriate coupling

3/3

Компоненты меняются независимо, без эффекта домино.

Формула

Инкрементальность + управляемость

Без управляемости инкременты превращаются в спагетти.

Guardrails

Архитектурные характеристики и бюджетыАвтоматизированные проверки в CIГраницы ответственности командDecision log и контекст решенийРегулярный пересмотр coupling
Цель: сохранить скорость изменений без потери качества и устойчивости.

Инкрементальные изменения: да, но…

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

Fitness functions и архитектурные характеристики

Что это такое

Architectural fitness function — измеримая проверка, которая подтверждает, что система остаётся пригодной для изменений в заданных рамках.

Характеристики

availabilitymaintainabilityauditabilityusabilityscalabilitysecurity

Как строить рамки

  • Определить архитектурные характеристики (…ility).
  • Назначить приоритеты и допустимые бюджеты.
  • Перевести бюджеты в тесты, метрики, проверки.
  • Автоматизировать и прогонять в CI (каждый PR).

Инструменты из доклада

  • ArchUnit — правила архитектуры через unit-тесты (Java)
  • Danger — автоматизация проверок code review в CI
  • Fitv / Fitness Validator — внутренний инструмент для контроля правил и техдолга

Coupling: как компоненты «эволюционируют»

Книга

Clean Architecture

Принципы стабильности и абстрактности для эволюции компонентов.

Читать обзор

Stable Dependencies Principle (SDP)

Зависимости направлены в сторону более стабильных компонентов.

Stable Abstraction Principle (SAP)

Компонент должен быть настолько же абстрактным, насколько стабилен.

Метрики стабильности

Instability I = Ce / (Ca + Ce)
Abstraction A = Na / Nc

Ce — исходящие зависимости, Ca — входящие зависимости.

Main Sequence

Zone of Pain

Стабильные, но конкретные компоненты — больно расширять.

The Main Sequence

Баланс стабильности и абстрактности — здоровая зона.

Zone of Uselessness

Нестабильные абстракции, которые никто не использует.

Когда пора эволюционировать

Слишком большой софт для одной команды

Команда не держит контекст целиком — возрастает количество ручных договорённостей.

Проблемы со скоростью поставки

Увеличивается lead time, растёт доля блокировок между командами.

Чрезмерная когнитивная сложность

Системы и процессы требуют слишком много контекста для работы.

Изменения архитектуры и изменения команд связаны: по закону Конвея системы отражают коммуникации и структуру организации.

Что дальше

  • Сначала — зафиксировать архитектурные характеристики и бюджеты.
  • Добавить fitness functions в CI и в культуру команды.
  • Регулярно пересматривать coupling и следить за Main Sequence.
  • Для углубления: "Building Evolutionary Architectures" и "Clean Architecture".Читать обзор

Связанные главы

Чтобы отмечать прохождение, включи трекинг в Настройки