Job 2026 md

title: Конспект материала 10 — bregman-arie/system-design-notebook source: https://github.com/bregman-arie/system-design-notebook author: Arie Bregman конспект: подготовлено 2026-09-18, TASK-45.14; прочитаны все 13 md-файлов репо (~1900 строк текста); репо заявлено автором как work-in-progress — много разделов пустые/TODO статус: P3-источник: ценность сосредоточена в упражнениях (особенно AWS-цепочка и stateful-сессии) и нескольких компактных тематических карточках; уникальные микрофакты — см. §6


Материал 10: system-design-notebook — пошаговые карточки + упражнения

Репо позиционируется как «step-by-step» обучение System Design. Формат: визуальный индекс тем в корневом README + маленькие страницы по каждой теме + большой блок упражнений/вопросов + несколько разборов систем. Важный нюанс: автор прямо пишет, что проект незавершён, и это видно — многие заголовки внутри тем (Consistent Hashing, Sticky Sessions, Health Checks, System Design Process, разборы WhatsApp/Prime Video) помечены TODO или пусты. Поэтому читать нужно выборочно: упражнения и 4–5 заполненных тем.


1. Структура репо

Блок Что внутри Полезность
Тематические карточки Requirements, Basic Architecture, Networking, DNS, Load Balancer, Scalability, Reliability Engineering, API Gateway, Databases, Distributed Systems Средняя: определения базовые, но есть удачные формулировки (см. §3)
Exercises / General ~12 ситуаций «вот схема — найди проблемы и улучши» Высокая: хороши для самопроверки перед моками
Exercises / AWS Cloud Две цепочки: stateless «What time is it?» и stateful «Video Games Shop» Высокая: показывает эволюцию архитектуры от одного инстанса до multi-AZ
Questions Упрощённые вопросы для самопроверки Средняя; многие без ответов
System Designs Big-Scale Monorepo, Parking & Reservation, WhatsApp, Amazon Prime Video Первая две — полноценны, последние две — только требования/NFR
Interview Tips Короткий чек-лист вопросов к себе и интервьюеру Подтверждает methodology.md §1

2. Тематические карточки — ключевые тезисы

2.1 Requirements

  • Functional Requirements — что система должна делать (функции/поведение). Пример для мессенджера: отправка и получение сообщений.
  • Non-Functional Requirements — как система это делает (производительность, доступность, надёжность). Пример: zero downtime, no data loss.
  • Начинать дизайн с требований — это способ зафиксировать границы и не уйти в оверинжиниринг.

Маппинг: полностью покрыто methodology.md §1 (FR/NFR + вопросы-уточнения).

2.2 Basic Architecture: клиент, сервер, типы серверов

  • Client — любое ПО/устройство, запрашивающее ресурс/сервис у сервера.
  • Server — ПО/железо, предоставляющее ресурс/сервис.
  • Bare Metal — физический сервер, обычно выделенный под одного заказчика/проект.
  • Virtual Server — сервер, поднятый на гипервизоре/облаке.

Маппинг: базовые определения; не требует переноса в KB.

2.3 Networking

  • Public IP — для компонентов, к которым обращаются извне (LB, gateway, публичный веб-сервер).
  • Private IP — для внутренних компонентов, не доступных глобально (бэкенды за LB, внутренние сервисы).
  • Latency — время выполнения одного действия; Throughput — число действий в единицу времени.
  • L1 cache reference ≈ 0.5 нс, L2 ≈ 7 нс — разница в 14×.

Маппинг: latency numbers уже в KB §1.2; public/private IP — в §13.1/§13.8.

2.4 DNS

  • Главная задача — преобразование доменного имени в IP (и обратно).
  • DNS можно использовать для балансировки нагрузки через round-robin записи.
  • Подводный камень round-robin DNS: запись кэшируется с TTL; если нода упала, клиенты продолжают стучаться в мёртвый IP до истечения TTL. ELB/ALB решают проблему.

Маппинг: TTL упомянут в KB §13.1, но питфолл round-robin-as-LB — нет. См. §6.

2.5 Load Balancer

  • Распределяет задачи по ресурсам; LB — публичный IP, бэкенды — приватные.
  • Перечислены 9 техник: Round Robin, Weighted RR, Least Connection, Weighted Least Connection, Resource Based, Fixed Weighting, Weighted Response Time, Source IP Hash, URL Hash.
  • Недостатки Round Robin: не знает веса запросов и мощности серверов (может свалить тяжёлые запросы на одну ноду); каждый запрос — новая сессия, плохо для stateful-сценариев.
  • Health checks исключают нездоровые ноды из ротации.
  • Для e-commerce рекомендуется техника со sticky sessions (если состояние не вынесено в общее хранилище).

Маппинг: §13.2 KB покрывает RR/WRR/Least Connections/Hash/Random; см. §6 про дополнение.

2.6 Scalability

  • Vertical Scaling — наращивание ресурсов существующей ноды (RAM/CPU/диск). Просто, но есть физический потолок и простой при апгрейде; оставляет SPOF.
  • Horizontal Scaling — добавление нод и балансировка между ними.
  • Scalability Factor — отношение прироста нагрузки к приросту ресурсов:
  • Linear — удвоили ресурсы → удвоили нагрузку.
  • Sub-linear — удвоили ресурсы → нагрузка выросла в 1.5× (реалистичный сценарий; коэффициент < 1).
  • Supra-linear — удвоили ресурсы → нагрузка выросла в 3× (коэффициент > 1, редкий оптимум).
  • Negative — удвоили ресурсы → система стала медленнее (коэффициент < 0).

Маппинг: vertical/horizontal — в KB §11; taxonomy scalability factor — уникально, см. §6.

2.7 Reliability Engineering

  • RAS:
  • Reliability — вероятность корректной работы системы до момента t.
  • Availability — доля времени, когда система доступна.
  • Serviceability — простота и скорость ремонта/обслуживания (влияет на availability).
  • Failover:
  • Cold standby — резерв включается только после отказа основного. Дешёво, но downtime; трафик за время простоя теряется. Подходит для некритичных сервисов.
  • Warm standby — резерв непрерывно синхронизируется с основным. Проще, но всё ещё возможен downtime и потеря данных.
  • Hot standby — одновременная работа с несколькими инстансами; при отказе одного пользователь не замечает переключения. Дорого; по сути — horizontal scaling.

Маппинг: RTO/RPO и стратегии DR уже размечены karan (TASK-45.13) для KB §9; cold/warm/hot — уточняющая формулировка, см. §6.

2.8 API Gateway

  • Появился при переходе от монолита к микросервисам: клиентам приходилось ходить во множество сервисов, каждый дублировал monitoring/logging/security.
  • Преимущества: 1. Меньше round trips для клиента (gateway агрегирует вызовы). 2. Protocol switching (например, клиент → HTTPS, gateway → HTTP к сервисам). 3. Offload функций — rate limiting, logging, auth переносятся в одно место. 4. Consolidated security — сервисы открыты только для gateway, единая точка применения политик безопасности.

Маппинг: функции шлюза уже в KB §13.8; origin-story + 4 преимущества — удачная интервью-формулировка, см. §6.

2.9 Databases

  • NoSQL иногда называют «sharded databases»; вызовы — resharding и hotspots.
  • Cassandra: каждая нода может быть primary interface → высокая availability, но постоянная синхронизация снижает consistency.
  • Redis: in-memory KV, single-threaded, использует I/O multiplexing, чтобы один поток обслуживал множество соединений; RAM ~100 нс vs SSD ~100 мкс.
  • Data Lake: неструктурированные файлы (JSON/CSV) в object storage; схема накладывается при чтении (schema-on-read).
  • Partitioning: horizontal = одинаковые колонки, разные строки (shard); vertical = разные колонки.
  • ACID: atomicity, consistency, isolation, durability — базовые определения.
  • Normalized vs denormalized: normalized — обновления в одном месте, но joins; denormalized — один lookup, но обновление может требовать скана.
  • CAP на примерах: Cassandra = AP (нет единого мастера, постоянная синхронизация); MongoDB = CP (single master, консистентность, но SPOF).
  • Выбор БД: тип данных, приоритеты по CAP, access patterns.

Маппинг: классы хранилищ — KB §3; CAP/PACELC — §7/§11; Redis single-threaded+I/O multiplexing — уникальный микрофакт, см. §6.

2.10 Distributed Systems

  • Распределённая система — группа компьютеров, работающих совместно и скрывающих сложность от пользователя.
  • Заблуждения/вызовы (список автора): надёжность сети, нулевая latency, бесконечная bandwidth, меняющаяся топология, безопасность, размер команды.
  • Clock drift: у каждой машины свои часы; рассинхронизация может приводить к непредсказуемому поведению.
  • CDN: географически распределённые edge-серверы для быстрой доставки контента.

Маппинг: partial failure, часы, сеть — KB §9; классические fallacies — уникально, см. §6.


3. Упражнения и разборы систем

3.1 General / Misc — базовая эволюция

  • Сервер + БД на одной машине → проблемы: SPOF, конкуренция за ресурсы.
  • Без новых компонентов: vertical scaling (временное решение).
  • С новыми компонентами: разделить web и DB; добавить LB (но LB — новый SPOF); DNS load balancing как дешёвая альтернатива; round-robin drawbacks; public/private IP; cache; локальная реплика удалённой БД; sticky sessions; health checks; read replica под аналитику.

Маппинг: покрыто KB §4–§6, §9, §13.2; полезно как drill.

3.2 AWS Cloud: «What time is it?» (stateless)

Цепочка улучшений: 1. EC2 + Elastic IP — базовая схема. 2. Vertical scaling — при росте пользователей; не масштабируется вечно и даёт простой. 3. Horizontal scaling — добавляем инстансы. 4. Route53 A-record вместо Elastic IP — пользователи ходят по hostname. 5. Проблема DNS: TTL кэширует IP упавшей ноды. 6. ELB + Auto Scaling Group — решает проблему DNS-TTL. 7. Multi-AZ для LB и инстансов; Reserved Instances для предсказуемой базовой нагрузки.

Маппинг: DNS-TTL pitfall — уникальная формулировка для §13.1; остальное стандартно.

3.3 AWS Cloud: «Video Games Shop» (stateful)

Проблема: корзина теряется, потому что каждый запрос попадает на разный инстанс. Три решения: 1. LB sticky sessions — пользователь прилипает к инстансу. Минус: если инстанс упал, данные потеряны; нагрузка может быть неравномерной. 2. Client cookies — клиент носит данные с собой. Минусы: запросы тяжелее; риск подделки cookie. 3. Server-side session — session ID в cookie, а данные хранятся в ElastiCache/DynamoDB. Лучший вариант; можно комбинировать с write-through cache+DB.

Маппинг: триада sticky/cookies/server session — уникально для KB, см. §6.

3.4 Big-Scale Monorepo (development system design)

Задача: git status на миллионе файлов занимает секунды/минуты из-за lstat() на каждый файл. Решения: - git fsmonitor + Watchman — демон кэширует состояние рабочей директории. - feature.manyFiles=true — index v4 (path-prefix compression) + core.untrackedCache. - git maintenance — периодическая оптимизация репо. - Sparse checkout — в рабочей директории только нужные файлы. - Build-system-aware sparse checkout — ещё более узкий набор.

Маппинг: узкая dev-infra тема; не переносим в KB, но оставляем в конспекте как пример «системный дизайн внутри разработки».

3.5 Parking & Reservation System

  • Уточнения: пользователи, входы/выходы, масштаб.
  • FR: бронирование места, получение тикета, исключение двойного бронирования, типы ТС, тариф по типу/времени.
  • Public API: /reserve, /cancel, /payment (внешний процессор).
  • Internal API: /calculate_payment, /free_spots, /allocate_spot, /create_account, /login.
  • Scale предсказуем: ограничен числом парковочных мест.
  • SQL-схема: Reservations, Garages, Spots, Users, Vehicles.

Маппинг: простейший шаблон разборов (FR/NFR/API/схема/масштаб); повторяет methodology.md §1–§4. Может служить drill-задачей, но не добавляет в KB.

3.6 WhatsApp / Amazon Prime Video

  • В репо только требования/NFR/API-заготовки; detailed design помечен TODO. Для подготовки лучше использовать classic-designs.md §3 (мессенджер) и §4 (видео-хостинг).

4. Советы по интервью

  • Выбирай простейшую архитектуру, удовлетворяющую требованиям (functional + traffic).
  • Задавай уточняющие вопросы: требования, как используется, сколько пользователей, как часто, откуда, constraints.
  • В начале: перечисли фичи, озвучь ожидаемые проблемы и трафик.
  • На каждом решении называй pros/cons.
  • Проверяй себя: масштабируется ли? есть ли SPOF?

Маппинг: полностью перекрыто methodology.md §1, §5, §7.


5. Вердикт: стоит ли тратить время перед слотами 18/21/22.09

  • P3 (фоновое чтение после более плотных источников: KB, DDIA, classic-designs, karan, Polomodov).
  • Самое полезное: две AWS-цепочки (stateless и stateful) как drill на эволюцию архитектуры; формулировка failover cold/warm/hot; scalability factor.
  • Самое бесполезное: пустые TODO-разделы и разборы WhatsApp/Prime Video без деталей.
  • Рекомендуемый формат: пролистать §2–§3 этого конспекта (30 мин) и проработать вопросы из упражнений вслух.

6. Уникальное относительно существующих материалов — что взять в KB 45.1

Ниже — темы, которых нет (или нет в такой форме) в knowledge-base.md, methodology.md, classic-designs.md и соседних конспектах (TASK-45.5–45.13). Для каждой указан целевой раздел KB.

Тема Где в этом источнике Целевой раздел KB Что в KB сейчас Решение
Scalability factor (linear / sub-linear / supra-linear / negative) §2.6 §11 «Мини-шпаргалка», блок «Масштаб» Нет Добавить строку: «realistic scaling is sub-linear; supra-linear — редкий выигрыш; negative scaling — оверхед > прироста»
Fallacies of distributed computing (network reliability, zero latency, bandwidth, topology change, security, team size) §2.10 §9 «Слабые места распределённой среды» Partial failure, часы, сеть есть, но не в форме «заблуждений» Добавить классические fallacies рядом с partial-failure как интервью-маркер
Stateful session triad (LB sticky sessions / client cookies / server-side session store) §3.3 §9 «Отказоустойчивость» или §13.7 Не разобрана как триада Добавить сравнение: sticky — теряем при падении ноды; cookies — тяжелее и небезопасно; server session — выносим состояние в Redis/DynamoDB
DNS round-robin + TTL dead-node pitfall §2.4, §3.2 §13.1 DNS TTL упомянут, питфолл round-robin-as-LB — нет Добавить фразу: round-robin DNS дешёвый LB, но TTL приводит к запросам в мёртвый IP; ELB решает
API Gateway origin + 4 advantages §2.8 §13.8 API-шлюз Функции шлюза перечислены Дополнить интервью-формулировку: «почему появился» (монолит→микросервисы) + 4 преимущества
Redis single-threaded + I/O multiplexing §2.9 §4 «Кэш» Redis как класс KV есть; устройства нет Добавить микрофакт: Redis single-threaded, множество соединений — через I/O multiplexing
9 LB techniques (+ Resource Based, Fixed Weighting, Weighted Response Time, URL Hash) §2.5 §13.2 «Алгоритмы балансировщика» RR/WRR/Least Connections/Hash/Random Дополнить URL Hash (кэш-локальность по URL) и Weighted Response Time
Cold / Warm / Hot standby с pros/cons и use cases §2.7 §9 «Резервирование» active-active/passive есть; RTO/RPO размечены karan Дополнить cold/warm/hot как шкалу RTO/RPO; hot standby ≈ horizontal scaling
RAS: Reliability / Availability / Serviceability §2.7 §9 Serviceability не определена Добавить определение serviceability как «простота и скорость ремонта»

Примечание: перенос самих фактов в knowledge-base.md — отдельная работа вне скоупа TASK-45.14; конспект размечает кандидатов и целевые § для TASK-45.1 или поддержки KB.