System Design Space
Граф знанийНастройки

Обновлено: 25 марта 2026 г. в 01:00

Зачем нужны микросервисы и интеграция

easy

Вводная глава: интеграция сервисов, DDD, API и архитектурные границы.

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

Для реального проектирования глава помогает увидеть, что выбор между монолитом, modular monolith и сервисами начинается с границ, контрактов, задержек и цены интеграции, а не с выбора транспорта или платформы.

Для интервью и инженерных разборов она полезна тем, что задает правильный язык для разговора о coupling, blast radius, деградации и schema drift еще до первых RPC-вызовов.

Практическая польза главы

Практика проектирования

Фиксируйте boundaries сервисов и ownership интерфейсов до выбора конкретного стека.

Качество решений

Сравнивайте интеграционные варианты по coupling, latency, blast radius и стоимости сопровождения.

Interview articulation

Показывайте reasoning-цепочку: контекст, контракт, риски отказов и путь эволюции.

Failure framing

Заранее проектируйте деградацию при network split, timeout cascades и schema drift.

Контекст

Building Microservices

Базовый практический источник по границам сервисов, интеграции и эволюции архитектуры.

Читать обзор

Раздел «Микросервисы и интеграция» нужен, чтобы проектировать распределенную систему как согласованный набор сервисов, а не как случайный граф зависимостей. На практике успех микросервисной архитектуры определяется не количеством сервисов, а качеством границ, контрактов и интеграционных решений.

Эта глава связывает System Design с реальными операционными последствиями: как выбрать модель взаимодействия, как управлять API lifecycle и как снижать риск каскадных отказов в production.

Почему эта часть важна

Интеграция формирует реальную сложность системы

В распределенной архитектуре основные инциденты происходят на стыках сервисов: контракты, ретраи, таймауты и совместимость изменений.

Микросервисы работают только при четких границах

Без bounded context и ownership-модели микросервисы быстро превращаются в распределенный монолит с высокой связанностью.

Коммуникационная модель определяет trade-offs

Выбор между sync и async влияет на latency, консистентность, сложность отладки и стоимость эксплуатации.

API-контракты задают скорость delivery

Версионирование, backward compatibility и lifecycle API критичны для независимого релиза команд.

Эта компетенция обязательна для Senior System Design

На интервью и в production ожидают, что инженер умеет обосновать границы сервисов и интеграционные решения через риски и ограничения.

Как проходить микросервисы и интеграцию по шагам

Шаг 1

Определить доменные границы и ownership

Начните с бизнес-контекста: bounded context, data ownership, ответственность команд и границы изменений.

Шаг 2

Выбрать модель взаимодействия для каждого потока

Разделите сценарии на sync и async, учитывая требования к latency, консистентности и допустимой деградации.

Шаг 3

Зафиксировать API-контракты и правила эволюции

Опишите schema/versioning policy, backward compatibility, idempotency и поведение при частичных отказах.

Шаг 4

Встроить надежность в интеграционный контур

Используйте timeout, retry, circuit breaker, DLQ и observability-сигналы как обязательную часть интеграционного дизайна.

Шаг 5

Ввести governance и feedback loop

Наладьте API review, contract testing, changelog discipline и метрики качества интеграции между командами.

Ключевые integration trade-offs

Sync простота vs async устойчивость

Синхронные вызовы проще читать, но они чувствительнее к сетевым сбоям; async-модель устойчивее, но сложнее в диагностике.

Общая БД vs автономия сервисов

Shared database ускоряет старт, но усиливает связанность; раздельное владение данными дает независимость ценой интеграционной сложности.

Строгая консистентность vs доступность и скорость

Чем строже требования к согласованности, тем выше стоимость latency и ниже гибкость масштабирования.

Централизованная интеграционная платформа vs автономия команд

Общая платформа снижает хаос, но требует зрелого self-service, прозрачных SLA и понятных контрактов взаимодействия.

Что входит в раздел

Service boundaries and decomposition

Декомпозиция, DDD и миграция из монолита в микросервисную архитектуру.

Integration and API operations

Паттерны коммуникации, API lifecycle и практики устойчивой интеграции между сервисами.

Как применять это на практике

Частые ошибки

Начинать декомпозицию по техническим слоям, а не по бизнес-возможностям и bounded context.
Выбирать только sync-коммуникацию и не закладывать retry/timeout/circuit breaker на границах сервисов.
Игнорировать API lifecycle: версионирование, обратную совместимость и контрактные тесты.
Держать shared database как постоянное решение, а не как временный этап миграции.

Рекомендации

Определять границы сервисов через домен, ownership и частоту изменений, а не через org chart или модули кода.
Явно разделять sync и async use-cases и документировать ожидаемое поведение при деградации зависимостей.
Встраивать contract testing, schema governance и changelog discipline в CI/CD процесс команд.
Фиксировать интеграционные trade-offs в ADR: консистентность, latency, сложность сопровождения и стоимость платформы.

Материалы раздела

Куда двигаться дальше

Соберите границы и контракты

Начните со Стратегий декомпозиции и Learning DDD, затем переходите к Building Microservices, чтобы зафиксировать устойчивую модель сервисных границ.

Усильте интеграционный delivery-контур

Для зрелой интеграции идите в Inter-service Communication Patterns, EIP и Continuous API Management, чтобы системно управлять эволюцией API и надежностью взаимодействий.

Связанные главы

Чтобы отмечать прохождение, включи трекинг в Настройки