Этот вопрос проверяет умение выделять основные компоненты распределённой системы и представлять архитектуру в виде диаграммы высокого уровня.
На базовом уровне System Design должен включать: клиентов, API-шлюз или load balancer, backend-сервисы, базы данных, кеши, очереди сообщений, систему логирования и мониторинга. Также показывают потоки данных, основные взаимодействия и границы сервисов. Такая схема помогает понять общую архитектуру, без излишних деталей реализации.
Цель базового уровня — показать ключевые блоки и взаимодействия.
Web, мобильные приложения, третьи стороны.
Типы интерфейсов: REST, GraphQL, gRPC.
Load balancer — балансировка нагрузки.
API Gateway — маршрутизация, auth, rate limit, кеширование.
бизнес-логика;
сервисы могут быть монолитом или микросервисами.
реляционные БД (Postgres, MySQL);
NoSQL (MongoDB, Redis, Cassandra);
blob storage (S3, MinIO).
На архитектуре должны быть отмечены:
master/replica;
кеши;
индексы.
Redis/Memcached для ускорения ответов;
CDN — для статики.
Kafka, RabbitMQ, SQS;
асинхронные процессы, фоновые работы.
логирование (ELK, Loki);
метрики (Prometheus);
трассировка (Jaeger).
платежи;
сторонние API;
системы уведомлений.
В базовой схеме обязательно показать:
что откуда куда идёт;
последовательность: клиент → API → сервис → БД → ответ;
асинхронные ветки: сервис → очередь → воркеры.
Базовый System Design описывает ключевые элементы системы: точки входа, сервисы, БД, кеши, очереди и observability. Он показывает связи между компонентами и главные потоки данных.