05 · Framework
Fitness Functions Matrix
Atomic ↔ Holistic × Triggered ↔ Continuous
Atomic×Triggered
Точечные проверки в CI
- ArchUnit — нет циклов в модуле
- Линтер-правила на сервис
- Контрактные тесты сервиса
Holistic×Triggered
Системные проверки по событию
- Нагрузочный тест end-to-end флоу
- Chaos game-day по домену
- Pentest на релиз
Atomic×Continuous
Постоянные сигналы на сервисе
- SLO + error budget сервиса
- Алерты по p99 latency
- Crash-free sessions мобильного приложения
Holistic×Continuous
Постоянные системные сигналы
- End-to-end бизнес-SLO
- Доменные дашборды и алерты
- Бюджеты ресурсов и стоимости
Atomic
один сервис / модуль
Holistic
вся система целиком
Triggered
по событию / в CI
Точечные проверки в CI
- ArchUnit — нет циклов в модуле
- Линтер-правила на сервис
- Контрактные тесты сервиса
Системные проверки по событию
- Нагрузочный тест end-to-end флоу
- Chaos game-day по домену
- Pentest на релиз
Continuous
постоянно в проде
Постоянные сигналы на сервисе
- SLO + error budget сервиса
- Алерты по p99 latency
- Crash-free sessions мобильного приложения
Постоянные системные сигналы
- End-to-end бизнес-SLO
- Доменные дашборды и алерты
- Бюджеты ресурсов и стоимости
Fitness functions из эволюционной архитектуры — это автоматические проверки, что система держит важные характеристики во времени. Матрица 2×2 раскладывает их по двум осям.
По горизонтали — atomic (один сервис) vs holistic (вся система). По вертикали — triggered (по событию, в CI) vs continuous (всегда в проде, через SLO и бюджеты).
Матрица помогает ответить, где у вас уже есть автоматические гарантии, а где архитектурные свойства держатся только на «надо помнить» — и какую клетку усиливать дальше.
Как использовать модель
01
Выпишите архитектурные свойства, которые система не должна потерять.
02
Положите каждую проверку в одну из четырёх клеток матрицы.
03
Выберите пустую или слабую клетку, которую нужно усилить следующей.
Источник в докладах