Continuous Architecture in Practice (short summary)
hard
Архитектура ломается не только от плохих решений, но и от ложной идеи, будто все важное можно решить один раз в начале проекта. Эта глава показывает противоположный подход: архитектура живет внутри потока поставки и требует постоянной калибровки по мере изменений продукта.
Здесь особенно полезна сборка из quality attributes, delay decisions, маленьких инкрементов, governance и обратных связей, привязанная к реальному ритму поставки. Она помогает не отложить важные решения навсегда, но и не зацементировать их раньше, чем появился нужный контекст.
На интервью и в архитектурных review по этой книге удобно обсуждать процесс, а не только схему: какие решения нужно принимать рано, какие стоит задержать и как проверять архитектурные гипотезы прямо в цикле поставки.
Практическая польза главы
Continuous mindset
Переводит архитектуру из разового этапа в непрерывный процесс внутри delivery-цикла.
Quality attributes first
Помогает держать нефункциональные требования в центре решений, а не добавлять их постфактум.
Decision timing
Учит откладывать дорогие решения до достаточной информации, но не терять контроль над рисками.
Interview maturity
Показывает на интервью зрелый подход к архитектуре как к процессу, а не только к схеме.
Глава 1: Why Software Architecture is More Important Than Ever
Архитектура в мире Agile, архитектура в облаке, роль архитектора как «не добавляющего ценность». Определение Continuous Architecture и набор принципов. Описание сквозного case study.
Глава 2: Architecture in Practice — Essential Activities
Случайное условие, которое при возникновении может привести к отказу системы или её компонента.
Failure (отказ)
Ситуация, когда система отклоняется от требуемого поведения. Fault — причина, Failure — следствие.
Availability (доступность)
Измеримая характеристика: отношение времени доступности к общему времени работы системы.
Reliability (надёжность)
Вероятность безотказной работы за указанный период времени в указанном окружении.
High-Availability vs Resilience
Старый подход: High-Availability
Кластеры приложений и баз данных
Cross-site репликация данных
Hot standby для аварийного переключения
Проблемы: сложность, высокая стоимость, долгий failover, полная недоступность во время восстановления
Новый подход: Resilience
Каждая часть системы сама отвечает за устойчивость
Адаптивное поведение при сбоях
Ограничение распространения ошибок (blast radius)
Преимущества: гибкость, graceful degradation, быстрое восстановление отдельных компонентов
Ключевой инсайт: High-Availability был рассчитан на монолитные on-premise системы. Для распределённых микросервисных систем (on-premise или в облаке) Resilience — более подходящий подход.
MTBF vs MTTR
MTBF
Mean Time Between Failures
Среднее время наработки на отказ. Фокус High-Availability подхода: максимизировать время между сбоями.
MTTR
Mean Time To Recover
Среднее время восстановления. Фокус Resilience подхода: минимизировать время восстановления и blast radius.
Сдвиг парадигмы: В современных системах сбои частей происходят достаточно часто. Вместо попыток предотвратить все сбои (MTBF), важнее научиться быстро восстанавливаться (MTTR) и ограничивать влияние сбоев.
Механизмы обеспечения Resilience
Повторные запросы
Retry с exponential backoff
Автоматический перезапуск
Self-healing процессов
Circuit Breaker
Размыкание цепи при сбоях
Bulkhead
Изоляция отсеков системы
Timeout
Корректная работа с latency
Fallback
Запасные варианты ответа
Дополнительные ресурсы
Авторы создали сайт continuous-architecture.org с набором документов: