System Design Space

    Глава 56

    Обновлено: 15 февраля 2026 г. в 12:20

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

    Прогресс части0/14

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

    Источник

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

    Конспект доклада: инкрементальность, 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".Читать обзор