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

Обновлено: 28 марта 2026 г. в 21:24

Рекомендации по подготовке к интервью (long term)

easy

Глубокий разбор подготовки по каждому этапу интервью с рекомендациями книг и ресурсов.

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

Глава полезна как стратегия накопления сигнала: что читать, какие системы разбирать, какие design habits выращивать, как связывать архитектуру, reliability, trade-offs и письменное мышление в более зрелый профиль.

Это честный выбор в пользу compound growth: путь медленнее, чем cram-подготовка, но именно он обычно делает ответы глубже, а решения на интервью и в реальной работе заметно сильнее.

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

Roadmap портфеля

Планируйте долгий цикл навыков: фундамент, кейсы, коммуникация, лидерские сигналы.

Эффект накопления

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

Практика как система

Комбинируйте чтение, проектные разборы и мок-интервью в стабильный недельный контур.

Метрики прогресса

Отслеживайте не только количество задач, но и качество решений, скорость и ясность аргументации.

Источник

Александр Поломодов

Подход основан на наработках Александра для проведения System Design интервью в российском бигтехе

Перейти на сайт

Долгосрочная подготовка к System Design Interview — это не заучивание готовых ответов, а развитие архитектурного мышления. В этой главе мы подробно разберём, какие навыки нужны на каждом этапе интервью и какие ресурсы помогут их развить.

Ключевая идея

Пойдём по 7 этапам System Design интервью и для каждого рассмотрим: что нужно знать и уметь, какие книги и ресурсы изучить, и какие практические навыки отработать.

Этап 1: Формализация требований

На этом этапе важнее всего уметь задавать правильные вопросы, чтобы уточнить что входит в scope задачи, а что можно благополучно вынести за скобки. Нужно уметь собирать функциональные требования в виде сценариев и определять нефункциональные характеристики.

Что нужно уметь

  • Выяснять scope задачи через правильные вопросы
  • Собирать функциональные требования как сценарии использования
  • Определять нефункциональные требования (архитектурные характеристики)
  • Расставлять приоритеты между конфликтующими требованиями

Подходы к сбору требований

Use Cases (UML)

Классический подход с actors, systems и списком сценариев. Для каждого сценария фиксируется happy path и exceptional flows — что позволяет понять как должен работать сценарий.

Actor → System → Scenario (Happy + Exceptional)

User Story

Неформальный подход с точки зрения пользователя и полезной для него фичи.

"As a <role> I can <capability>, so that <receive benefit>"

Jobs to be Done (JTBD)

Фокус на результате и контексте — какую "работу" пользователь "нанимает" систему выполнить. Один и тот же продукт разные пользователи могут "нанимать" для разных целей.

Анализ нефункциональных требований

Для анализа архитектурных характеристик рекомендую изучить Architecture Tradeoff Analysis Method (ATAM). Ключевые концепции:

  • Sensitivity points — решения, влияющие только на один атрибут качества
  • Trade-off points — решения, влияющие на несколько атрибутов (улучшение одного ухудшает другой)
  • Fit for purpose — система соответствует заявленным требованиям
  • Fit for use — система удобна для реального использования

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

API Gateway

Как оформить публичный API, обеспечить безопасность и маршрутизацию запросов.

Читать главу

Этап 2: Границы системы и Public API

На этом этапе нужно определить, как внешний мир будет взаимодействовать с системой. Это включает выбор протоколов, формата данных и понимание сетевого стека.

Что нужно знать

Сетевой стек

  • TCP/IP и UDP — когда что использовать
  • HTTP/1.1, HTTP/2, HTTP/3 — эволюция и trade-offs
  • WebSocket — для real-time коммуникации
  • DNS, CDN, Load Balancers

API стили

  • REST — ресурсо-ориентированный подход
  • gRPC — эффективный RPC с protobuf
  • GraphQL — гибкие запросы от клиента
  • Messaging — асинхронная интеграция

C4 Model для визуализации

Рекомендую освоить C4 Model — подход к визуализации архитектуры на разных уровнях:

C1

Context

Система и её окружение

C2

Container

Приложения и хранилища

C3

Component

Компоненты внутри контейнера

C4

Code

Классы и функции

Этап 3: Основные потоки данных

На этом этапе проектируются основные пути данных через систему — как информация записывается и читается, какие компоненты задействованы.

Write Path

Путь данных при записи — от клиента до персистентного хранилища.

  • Валидация входных данных
  • Write-ahead logging
  • Синхронная/асинхронная запись
  • Репликация и подтверждение

Read Path

Путь данных при чтении — от запроса до ответа клиенту.

  • Кеширование (L1, L2, CDN)
  • Чтение с реплик
  • Pagination и streaming
  • Materialized views

Нотации для описания потоков

  • Sequence Diagram (UML) — последовательность сообщений между компонентами
  • Activity Diagram (UML) — бизнес-процесс с ветвлениями и параллельными потоками
  • BPMN — более формальная нотация для бизнес-процессов
  • Data Flow Diagram — движение данных между процессами и хранилищами

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

Путеводитель по базам данных

База для проектирования схем данных и выбора хранилищ.

Читать главу

Этап 4: Концептуальная схема данных

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

Stateful vs Stateless

Stateful компоненты

Хранят состояние между запросами. Сложнее масштабировать.

  • Базы данных
  • Кеши с персистентностью
  • Message brokers
  • Session stores

Stateless компоненты

Не хранят состояние. Легко масштабируются горизонтально.

  • API серверы
  • Workers
  • Load balancers
  • Gateways

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

Learning Domain-Driven Design

Практический DDD: стратегический и тактический дизайн, контексты и события.

Читать главу

Domain-Driven Design

Для проектирования сложных доменов рекомендую изучить DDD. Ключевые концепции:

  • Bounded Context — чёткие границы модели с единым языком внутри
  • Aggregate — кластер объектов, образующих единицу консистентности
  • Entity vs Value Object — объекты с идентичностью vs неизменяемые значения
  • Domain Events — события, значимые для бизнеса

Этап 5: Выбор технологий

На этом этапе концептуальная схема превращается в реальную — выбираются конкретные технологии с учётом их trade-offs и failure domains.

Категории технологий

Базы данных

PostgreSQL

ACID, сложные запросы, JSON

MySQL

надёжность, репликация

MongoDB

документы, гибкая схема

Cassandra

высокая доступность, масштаб

Кеширование

Redis

структуры данных, pub/sub, персистентность

Memcached

простой key-value, multi-threading

Очереди сообщений

Kafka

высокая пропускная способность, replay

RabbitMQ

гибкая маршрутизация, AMQP

SQS

managed, serverless

Поиск

Elasticsearch

полнотекстовый поиск, аналитика

Meilisearch

простой, typo-tolerant

Failure Domains

Важно понимать

Для каждой технологии продумайте: что произойдёт при её отказе? Какой blast radius? Как система восстановится? Это показывает зрелость инженера на интервью.

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

Когда базовая архитектура готова, нужно обсудить как система будет расти. Что произойдёт при увеличении нагрузки в 10x, 100x, 1000x?

Вертикальное масштабирование

Увеличение ресурсов одной машины (CPU, RAM, Disk).

  • ✅ Просто реализовать
  • ✅ Нет изменений в коде
  • ❌ Ограничено размером машины
  • ❌ Single point of failure

Горизонтальное масштабирование

Добавление новых инстансов системы.

  • ✅ Практически безгранично
  • ✅ Отказоустойчивость
  • ❌ Сложнее в реализации
  • ❌ Требует stateless дизайна

Техники масштабирования данных

  • Партиционирование — разделение данных по ключу (user_id, region, time)
  • Шардинг — распределение данных по нескольким независимым базам
  • Консистентное хеширование — минимизация перераспределения при добавлении нод
  • Репликация — копии данных для чтения и отказоустойчивости
  • CQRS — разделение моделей чтения и записи

Этап 7: Продвинутые темы

Если осталось время, обсудите темы долгосрочной эксплуатации системы. Это показывает, что вы думаете не только о разработке, но и о production.

Observability

  • Metrics (Prometheus, Grafana)
  • Logs (ELK, Loki)
  • Traces (Jaeger, Zipkin)
  • SLI/SLO/SLA

Deployment

  • Blue-green deployment
  • Canary releases
  • Feature flags
  • Rollback strategies

Security

  • Authentication & Authorization
  • Encryption at rest/in transit
  • API rate limiting
  • Audit logging

Disaster Recovery

  • RTO & RPO
  • Backup strategies
  • Failover automation
  • Chaos engineering

Рекомендуемая литература

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

Часть 4: Обзор источников по интервью

Полная коллекция обзоров книг по распределённым системам, архитектуре, микросервисам, DDD и SRE — с ключевыми идеями и практическими выводами

Заключение

Долгосрочная подготовка — это марафон, а не спринт. Не пытайтесь прочитать всё за месяц. Вместо этого выберите 2-3 книги из списка и глубоко их изучите. Практикуйтесь на реальных проектах и mock интервью.

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

В следующей главе рассмотрим тактики краткосрочной подготовки — что делать, если интервью уже через неделю.

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

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