System Design Space

    Глава 118

    Обновлено: 16 февраля 2026 г. в 03:00

    Building Microservices (short summary)

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

    Companion Book

    От монолита к микросервисам

    Практическое руководство по миграции с монолита — как применить теорию из этой книги на практике.

    Читать обзор

    Building Microservices, 2nd Edition (Микросервисы и интеграция)

    Авторы: Sam Newman
    Издательство: O'Reilly Media, 2021 (2nd Edition)
    Объём: 612 страниц

    Разбор книги Sam Newman: декомпозиция, коммуникация, deployment, тестирование и организационные паттерны.

    Building Microservices, 2nd Edition — оригинальная обложкаОригинал
    Микросервисы и интеграция — переводПеревод

    Структура книги

    Книга разделена на три логические части, охватывающие весь путь от основ до продвинутых тем:

    Часть I: Основы

    Что такое микросервисы, как их моделировать, декомпозиция монолита и паттерны разбиения.

    Часть II: Реализация

    Коммуникация между сервисами, workflow, build/deploy, тестирование, observability.

    Часть III: Люди

    Организационные структуры, безопасность, resilience и масштабирование.

    Часть I: Основы микросервисов

    Глава 1: Что такое микросервисы?

    Ключевые характеристики:

    • Independent deployability — главный критерий
    • Моделирование вокруг бизнес-домена
    • Владение своими данными
    • Технологическая гибкость

    Когда НЕ использовать:

    • Маленькая команда (до 5-10 человек)
    • Непонятный домен — сначала монолит
    • Стартап на ранней стадии
    • Нет опыта в distributed systems

    Связанная книга

    Learning Domain-Driven Design

    Глубокое погружение в DDD: strategic и tactical design, bounded contexts, context maps.

    Читать обзор

    Глава 2: Как моделировать микросервисы

    Domain-Driven Design как основа декомпозиции:

    Bounded Context

    • Чёткие границы домена
    • Собственный ubiquitous language
    • Один контекст = один (или несколько) сервисов

    Context Maps

    • Customer-Supplier
    • Conformist
    • Anticorruption Layer
    • Open Host Service

    Глава 3: Разбиение монолита

    Практические паттерны миграции от монолита к микросервисам:

    Strangler Fig

    Постепенная замена функционала новыми сервисами

    Branch by Abstraction

    Абстракция → новая реализация → переключение

    Parallel Run

    Запуск старой и новой версии параллельно

    Глава 4: Разбиение базы данных

    Паттерны разделения данных:

    • Database per Service — идеал
    • Shared Database — временный компромисс
    • Database View — readonly доступ
    • Database Wrapping Service

    Работа с данными:

    • Change Data Capture (Debezium)
    • Saga pattern для транзакций
    • Eventual consistency
    • Outbox pattern

    Часть II: Реализация

    Связанный кейс

    API Gateway

    Централизация коммуникации: routing, authentication, rate limiting и BFF pattern.

    Читать кейс

    Глава 5: Коммуникация между сервисами

    Синхронная коммуникация:

    REST

    Простота, широкая поддержка, OpenAPI

    gRPC

    Производительность, типизация, streaming

    GraphQL

    Гибкость запросов, federation

    Асинхронная коммуникация:

    Message Brokers

    Kafka, RabbitMQ, AWS SQS

    Event-Driven

    Loose coupling, eventual consistency

    Request-Response async

    Correlation IDs, reply queues

    Глава 6: Workflow

    Как реализовать бизнес-процессы, охватывающие несколько сервисов:

    Orchestration

    • Центральный координатор
    • Saga Execution Coordinator
    • Temporal, Camunda, AWS Step Functions
    • Проще отслеживать, сложнее масштабировать

    Choreography

    • Каждый сервис реагирует на события
    • Loose coupling
    • Сложнее отлаживать
    • Implicit workflow через event sourcing

    Глава 7: Build и Deploy

    Continuous Delivery как основа успешных микросервисов:

    Containers

    Docker, образы, registry

    Kubernetes

    Оркестрация, service discovery

    GitOps

    ArgoCD, Flux, declarative deployment

    Глава 8: Тестирование

    Стратегия тестирования в мире микросервисов:

    Тип тестовЧто тестируетИнструменты
    UnitБизнес-логика внутри сервисаJUnit, pytest, Jest
    IntegrationВзаимодействие с БД, внешними APITestcontainers, WireMock
    ContractAPI контракты между сервисамиPact, Spring Cloud Contract
    E2EПолный user journeyCypress, Playwright

    Главы 9-10: Observability и Security

    Three Pillars of Observability:

    • Logs — структурированные, агрегированные (ELK)
    • Metrics — Prometheus, Grafana
    • Traces — Jaeger, Zipkin, OpenTelemetry

    Security:

    • mTLS — service mesh (Istio, Linkerd)
    • API Gateway — authentication, rate limiting
    • Zero Trust — verify everything
    • Secrets Management — Vault, AWS Secrets

    Часть III: Люди и организация

    Главы 11-12: Resilience и Масштабирование

    Паттерны устойчивости:

    • Circuit Breaker — изоляция сбоев
    • Bulkhead — ограничение blast radius
    • Timeout — не ждать вечно
    • Retry с backoff — умные повторы

    Масштабирование:

    • Horizontal scaling — больше инстансов
    • Auto-scaling — по метрикам
    • Caching — Redis, CDN
    • CQRS — разделение чтения/записи

    Глава 13-14: Организационные структуры

    "Organizations which design systems are constrained to produce designs which are copies of the communication structures of these organizations."

    — Conway's Law

    Team Topologies:

    • Stream-aligned teams — по бизнес-потоку
    • Platform teams — внутренняя платформа
    • Enabling teams — помощь другим командам
    • Complicated-subsystem teams — специалисты

    Практики:

    • Two-Pizza Teams — 6-8 человек
    • You Build It, You Run It
    • Internal Open Source
    • Inverse Conway Maneuver

    Ключевые выводы

    Do:

    • Начинать с монолита, если домен непонятен
    • Independent deployability — главный критерий
    • Database per service с eventual consistency
    • Инвестировать в observability с первого дня

    Don't:

    • Микросервисы ради микросервисов
    • Distributed monolith — худшее из двух миров
    • Shared database между сервисами надолго
    • Игнорировать организационную структуру

    Для кого эта книга?

    Идеально подходит:

    • Архитекторам, планирующим миграцию на микросервисы
    • Tech leads, принимающим архитектурные решения
    • Разработчикам в растущих командах
    • Всем, готовящимся к System Design интервью

    Предварительные знания:

    • Опыт работы с веб-приложениями
    • Базовое понимание distributed systems
    • Знакомство с Docker/Kubernetes (желательно)

    Совет: Читайте вместе с DDIA — Kleppmann даёт глубокую теорию распределённых систем, а Newman — практические паттерны их организации в production.

    Где найти книгу