ENIGMA AI
ENIGMA AI

Проектирование систем на интервью: от расчетов до выбора стека

Вопросы по технологиям

Разбор System Design интервью в 2026 году. Проектирование высоконагруженных систем, выбор БД, шардирование и расчеты нагрузки.

На System Design интервью в 2026 году фокус сместился с простых схем на детали реализации: консистентность в распределенных транзакциях, изоляцию в БД и специфику Edge Computing. Секция длится 45–60 минут, за которые нужно спроектировать систему на 10-100 млн пользователей.

Что изменилось в System Design к 2026 году

Если в 2022 году достаточно было нарисовать балансировщик и пару инстансов приложения, то сегодня интервьюеры копают вглубь. Основной акцент делается на Cost-efficiency (стоимость инфраструктуры) и Observability. Компании не хотят просто работающую систему — им нужно решение, которое не разорит их на облачных счетах.

Этап 1: Сбор требований и расчеты (Back-of-the-envelope)

Начинайте с уточнения DAU (Daily Active Users) и характера нагрузки. Например, для мессенджера на 100 млн пользователей расчеты выглядят так:

  • 100 млн DAU * 50 сообщений = 5 млрд сообщений в сутки.
  • 5 млрд / 86400 секунд ≈ 60 000 RPS (средний).
  • Пиковый RPS (в 5-10 раз выше) ≈ 300 000 - 600 000.
  • Хранение: 5 млрд * 100 байт ≈ 500 ГБ текстовых данных в сутки.

Важно сразу проговорить ограничения: Read-heavy или Write-heavy система, требования к задержкам (Latency) и доступности (Availability).

Выбор хранилища: SQL vs NoSQL в современных реалиях

В 2026 году грань между SQL и NoSQL размылась. PostgreSQL с расширениями вроде Citus или TimescaleDB закрывает 80% задач. Однако для специфических кейсов выбирайте осознанно:

  • Key-Value (Redis, Dragonfly): кэширование, сессии, счетчики в реальном времени. Dragonfly сейчас популярнее из-за лучшей многопоточности.
  • Document (MongoDB, Couchbase): профили пользователей, сложные структуры без жесткой схемы.
  • Wide-column (Cassandra, ScyllaDB): логи, история сообщений, где важна линейная масштабируемость записи.
  • NewSQL (CockroachDB, TiDB): когда нужны ACID-транзакции в глобально распределенной системе.

Масштабирование и доступность

Обсуждая масштабирование, не ограничивайтесь фразой «поднимем еще инстансов». Разберите конкретные паттерны:

Шардирование данных

Расскажите про выбор ключа шардирования (Shard Key). Если выбрать user_id, данные одного пользователя будут на одном узле, но может возникнуть проблема «горячих» шардов (например, селебрити в соцсетях). Решение — использование Consistent Hashing.

Репликация

Обсудите разницу между синхронной и асинхронной репликацией. В 2026 году часто спрашивают про Quorum-based запись в распределенных системах, чтобы гарантировать, что данные не пропадут при падении мастера.

Связь между сервисами: REST, gRPC или очереди?

Для внутренних вызовов стандартом стал gRPC из-за бинарного протокола Protobuf и строгой типизации. REST остается для внешних API. Если система должна быть отказоустойчивой, используйте событийную модель (Event-driven) с Kafka или Pulsar. В 2026 году Pulsar часто предпочитают для мультитеннантных систем из-за разделения слоев хранения и вычислений.

Кэширование и CDN

Кэшируйте не только ответы API, но и результаты тяжелых вычислений или фрагменты страниц. Важно упомянуть стратегии инвалидации кэша: Write-through (пишем сразу в кэш и БД), Write-around (в БД, потом инвалидируем кэш) или Cache-aside. Для статики и медиа — обязательное использование Edge-серверов (CDN), чтобы снизить нагрузку на бэкенд и уменьшить TTFB (Time to First Byte).

Безопасность и мониторинг

Senior-инженер обязан упомянуть Rate Limiting (алгоритмы Token Bucket или Leaky Bucket), чтобы защитить систему от DDoS и кривых скриптов. В плане мониторинга — переход от простых метрик к OpenTelemetry для сквозной трассировки запросов между микросервисами.

Часто задаваемые вопросы

Как подготовиться к System Design?

Лучшие ресурсы и разборы задач для подготовки к System Design интервью

Читать гайд