Источник
Обзор книги
Детальный разбор книги в блоге tellmeabout.tech
Software Architecture: The Hard Parts (Современный подход к программной архитектуре: сложные компромиссы)
Авторы: Neal Ford, Mark Richards, Pramod Sadalage, Zhamak Dehghani
Издательство: O'Reilly Media, 2021
Объём: 462 страниц
Декомпозиция монолита, saga patterns, orchestration vs choreography и управление данными в распределённых системах.
Оригинал
ПереводСтруктура книги
Книга разделена на две части, каждая посвящена ключевым «трудным» решениям:
Часть I: Декомпозиция
Как разбить монолит на сервисы: паттерны декомпозиции, определение границ, анализ компонентов и зависимостей.
Часть II: Данные и транзакции
Разделение БД, распределённые транзакции, saga patterns, eventual consistency и управление контрактами.
Разбор
Часть I: Декомпозиция
Детальный разбор первой части книги
Часть I: Pulling Things Apart (Декомпозиция)
Архитектурные квантыn (Architectural Quantum)
Architectural Quantum — минимальная независимо развёртываемая единица с высоким функциональным cohesion:
Ключевой инсайт: Размер кванта определяет архитектурные характеристики. Монолит = один квант (всё деплоится вместе). Микросервисы = много квантов (независимый деплой каждого).
Паттерны декомпозиции
Тактические паттерны
Драйверы декомпозиции
Разбор
Часть II: Putting Together
Разбор второй части книги: данные и транзакции
Часть II: Pulling Data Apart (Разделение данных)
Data Decomposition Drivers
Причины разделять данные
- ✓Независимое масштабирование сервисов
- ✓Изоляция сбоев (fault tolerance)
- ✓Разные требования к данным (GDPR)
- ✓Независимый выбор технологий
Причины НЕ разделять
- ✗Сложные транзакции между сервисами
- ✗Высокие требования к consistency
- ✗Частые cross-service запросы
- ✗Сложность дата-репликации
Разбор
Distributed Transactions
Разбор распределённых транзакций и саг
Distributed Transactions: Sagas
Orchestration Saga
Центральный координатор управляет всеми шагами:
Choreography Saga
Сервисы реагируют на события друг друга:
Когда что выбирать: Orchestration — для сложных бизнес-процессов с чётким workflow. Choreography — для простых событийных цепочек с минимальной зависимостью между сервисами.
Разбор
Saga State Management
Разбор паттернов управления состоянием саг
Saga State Management
Epic Saga (synchronous)
Все сервисы вызываются синхронно. Простота, но высокий coupling и latency.
Phone Tag (async point-to-point)
Асинхронные вызовы между сервисами. Меньше coupling, сложнее отслеживать.
Fairy Tale (async events)
Полная event-driven архитектура. Максимальная decoupling, сложный debugging.
Разбор
Contracts & Coupling
Разбор контрактов и связанности сервисов
Contracts & Service Coupling
Типы контрактов
Coupling Characteristics
Применение к System Design Interview
Что использовать на интервью
- •Architectural quantum: объясняйте границы деплоя и coupling
- •Saga patterns: показывайте понимание распределённых транзакций
- •Orchestration vs Choreography: обосновывайте выбор
- •Data ownership: чётко определяйте, какой сервис владеет данными
Частые ошибки
- •Игнорирование distributed transactions при разделении сервисов
- •Отсутствие compensating actions в saga
- •Shared database между «независимыми» сервисами
- •Синхронные вызовы везде (distributed monolith)
Книга
Fundamentals of Software Architecture
Рекомендуется прочитать перед этой книгой
Вердикт
Software Architecture: The Hard Parts — обязательная книга для тех, кто работает с микросервисами или готовится к senior/staff-level интервью. Концепции architectural quantum, saga patterns и data decomposition drivers напрямую применимы к System Design Interview. Читать после «Fundamentals of Software Architecture».
