Собеседование по проектированию систем: спроектируйте Netflix

«Спроектируйте Netflix» — это задача с преобладанием чтения, определяемая одним фактом: обслуживание видео в глобальном масштабе — это гораздо больше проблема доставки контента и хранения, чем вычислений. Интервьюер хочет увидеть, как вы отделяете плоскость управления (просмотр каталога, поиск, рекомендации) от плоскости данных (фактическая передача байтов) и рассуждаете о доставке петабайтов данных близко к пользователям.

Разбирайте задачу по порядку: уточните требования, оцените масштаб, спроектируйте конвейер загрузки/транскодирования, затем путь воспроизведения через CDN, и завершите адаптивным битрейтом и компромиссами. Разбор ниже следует этой структуре, чтобы вы тренировали рассуждение, а не запоминали архитектуру.

1. Уточнение требований

Разделите функциональные и нефункциональные требования и строго ограничьте объём задачи. Основа: пользователи просматривают каталог и смотрят видео плавно на разных устройствах и при разных сетевых условиях.

  • Функциональные: просмотр/поиск по каталогу, запуск воспроизведения, адаптивное качество, продолжение с места остановки, несколько устройств.
  • Нефункциональные: очень высокая доступность, низкая задержка запуска, плавное воспроизведение (без буферизации), глобальный охват.
  • Вне рамок (явно скажите об этом): внутренние детали ML для рекомендаций, биллинг, детали DRM — упомяните и отложите.

2. Оценка масштаба

Цифры обосновывают дизайн, ориентированный на CDN. Предположим сотни миллионов подписчиков и многие миллионы одновременных потоков в пике. Один поток потребляет несколько Мбит/с, поэтому суммарный исходящий трафик достигает десятков терабит в секунду — обслужить это из нескольких центральных дата-центров невозможно, что сразу обосновывает кэширование на границе сети (edge).

3. Конвейер приёма и транскодирования

Загруженные мастер-файлы обрабатываются офлайн, а не на пути воспроизведения. Каждый тайтл транскодируется в множество представлений (renditions) — несколько разрешений и битрейтов — и сегментируется на небольшие фрагменты (по несколько секунд каждый) для адаптивного стриминга.

  • Ферма транскодирования: преобразует мастер в представления H.264/H.265/AV1 на нескольких битрейтах; это пакетная работа, легко распараллеливаемая.
  • Сегментация и упаковка: делит каждое представление на короткие сегменты с манифестом (HLS/DASH), который их описывает.
  • Сохраняет результаты в объектном хранилище (вроде S3) как источник истины, а затем продвигает популярный контент на границу сети.

4. CDN и путь воспроизведения

Воспроизведение обслуживается с границы сети, а не из источника. Видеосегменты кэшируются на узлах CDN, физически близких к пользователям (Netflix эксплуатирует собственные устройства Open Connect внутри провайдеров). Клиент получает манифест, а затем забирает сегменты с ближайшего исправного граничного узла.

Плоскость управления (каталог, поиск, профили пользователей, «продолжить просмотр») — это отдельный набор не хранящих состояние API-сервисов, поддерживаемых собственными базами данных и кэшами — она возвращает метаданные и URL манифеста и полностью отделена от тяжёлой доставки байтов.

  • Граничный кэш (CDN/Open Connect): обслуживает подавляющее большинство байтов; заранее размещает популярные тайтлы по регионам до возникновения спроса.
  • Хранилище источника: объектное хранилище, обслуживающее промахи кэша.
  • API плоскости управления: каталог, авторизация воспроизведения, закладки — небольшие полезные данные, горизонтально масштабируемые, с кэшем перед ними.

5. Стриминг с адаптивным битрейтом

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

6. Компромиссы, которые нужно озвучить

Завершите, назвав напряжённые моменты, которые слушает интервьюер: стоимость хранения предварительного вычисления всех представлений против задержки транскодирования на лету (Netflix вычисляет заранее — хранение дешевле, чем задержка запуска); кэширование всего против кэширования только популярного на границе сети (длиннохвостый каталог не может полностью жить на каждом граничном узле); и строгая консистентность против итоговой для данных плоскости управления, таких как «продолжить просмотр» (итоговой консистентности достаточно). Явное озвучивание этого делает ответ уровня senior.

Потренируйтесь в проектировании системы Netflix с помощью в реальном времени

Ассистент для собеседований по проектированию систем от Natively может помочь вам сохранять структуру во время живого собеседования — предлагая следующее измерение для рассмотрения и показывая компромиссы в реальном времени, всё на вашем собственном устройстве.

Установите на свой компьютер.

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

macOS 12+ · Windows 10/11

© 2026 Natively AI Private Limited

Исходный код доступен по Natively Personal Use Source License v1.0 · Геолокация по IP: DB-IP