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

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

Designing Distributed Systems (short summary)

medium

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

Для реальных проектных решений глава помогает увидеть, как sidecar, ambassador, scatter/gather, work queues и batch-подходы собираются в прикладные workflow и какие требования к идемпотентности, retry safety и observability они сразу приносят.

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

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

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

Используйте composable паттерны для построения распределенных workflow из независимых компонентов.

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

Проверяйте паттерны на idempotency, retry safety и observability в сложных цепочках обработки.

Interview articulation

Показывайте зрелый design language: sidecar, ambassador, adapter, queue-driven fan-out.

Trade-off framing

Проговаривайте, когда паттерны реально сокращают сложность, а когда скрывают системные проблемы.

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

Kubernetes Patterns

Детальный каталог паттернов для production deployments в K8s.

Читать обзор

Designing Distributed Systems (Распределенные системы. Паттерны проектирования)

Авторы: Brendan Burns
Издательство: O'Reilly Media, 2018
Объём: 162 страниц

Паттерны от Brendan Burns: sidecar, ambassador, scatter/gather, work queues и batch processing.

Оригинал
Перевод

Документальные фильмы

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

Single-Node Patterns

Паттерны для одного узла: sidecar, ambassador, adapter. Композиция контейнеров в рамках Pod.

Multi-Node Patterns

Serving patterns: replicated, sharded, scatter/gather. Масштабирование и отказоустойчивость.

Batch Patterns

Work queues, event-driven batch, coordinated processing. Паттерны для обработки данных.

Single-Node Patterns

Паттерны для организации нескольких контейнеров на одном узле (в одном Pod). Основаны на принципе разделения ответственности.

Sidecar Pattern

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

Примеры использования:

  • Log shipping (Fluentd, Filebeat)
  • Configuration sync (git-sync)
  • SSL termination

Pod

App
Sidecar
Log Service

Ambassador Pattern

Proxy-контейнер упрощает доступ к внешним сервисам, скрывая сложность подключения.

Примеры использования:

  • Database connection pooling
  • Service mesh proxy (Envoy)
  • Circuit breaker
App
Ambassador
External DB

Proxy скрывает детали подключения

Adapter Pattern

Контейнер-адаптер преобразует вывод приложения в стандартный формат.

Примеры использования:

  • Prometheus exporter
  • Log format normalization
  • Legacy API wrapper
Legacy App
Adapter
Prometheus

Нормализация форматов и метрик

Multi-Node Serving Patterns

Глубокое погружение

Designing Data-Intensive Applications

Kleppmann о репликации, партиционировании и consistency.

Читать обзор

Replicated Load-Balanced Services

Идентичные реплики за load balancer. Простейший паттерн масштабирования для stateless сервисов.

Horizontal scalingHigh availabilityRolling updates
Load Balancer
Replica A
Replica B
Replica C

Sharded Services

Данные разделены между узлами по ключу. Каждый shard обрабатывает свой subset данных.

Sharding strategies:

  • Hash-based (consistent hashing)
  • Range-based (geographic, time)
  • Directory-based (lookup table)

Challenges:

  • Hot spots
  • Rebalancing
  • Cross-shard queries
Router
Shard A
A–F
Shard B
G–N
Shard C
O–Z

Scatter/Gather Pattern

Запрос распределяется на все узлы параллельно, результаты агрегируются.

Coordinator
Leaf 1
Leaf 2
Leaf 3
Aggregator

Используется в search engines, distributed databases, analytics.

Batch Computational Patterns

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

Building Microservices

Sam Newman о workflow orchestration и choreography.

Читать обзор

Work Queue Systems

Producer-consumer паттерн для параллельной обработки задач.

Source

Генерирует work items

Queue

Buffer между stages

Workers

Parallel processing

Source
Queue
Worker 1
Worker 2
Worker 3

Event-Driven Batch Processing

Обработка запускается событиями (новый файл, сообщение в очереди, webhook).

Serverless functionsKubernetes JobsEvent sourcing
Event
Trigger
Batch Job

File upload / webhook / message queue

Coordinated Batch Processing

Многоэтапные pipelines с зависимостями между stages.

Extract
Transform
Load
Merge / Join

Реализуется через workflow engines: Airflow, Argo Workflows, Temporal.

Ownership и Functions as a Service

Hands-Off Table

Матрица ответственности: кто владеет каким компонентом системы. Критично для incident response и maintenance.

Team A
Team B
API Gateway
Owner
Support
Payments
Support
Owner
Data Lake
Owner
-

FaaS Decorator Pattern

Functions как decorators для добавления cross-cutting concerns: authentication, logging, rate limiting.

Function
Auth
Logging
Rate Limit

Декораторы добавляют cross-cutting concerns

Применение на System Design интервью

Полезные концепции

  • Sidecar для cross-cutting concerns
  • Ambassador для service mesh
  • Sharded services для scale
  • Scatter/Gather для search
  • Work queues для batch processing

Вопросы, где пригодится

  • «Как добавить logging без изменения кода?»
  • «Как масштабировать stateful сервис?»
  • «Как реализовать distributed search?»
  • «Как обработать миллионы событий?»

Главные выводы

Single-node паттерны — основа container composition
Replicated services — простейший путь к масштабированию
Sharding необходим для больших datasets
Scatter/Gather — ключ к distributed queries
Work queues обеспечивают reliability batch processing
Паттерны переиспользуемы между проектами и командами

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

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

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