Урок 0: Зачем проектировать масштаб системы заранее?
Пет-проект работает идеально. Заходят десять пользователей, пишут, читают — всё отвечает мгновенно. Один сервер, одна база данных, код, который выполняется строка за строкой (синхронно) — зачем усложнять? А теперь представьте тот же самый код, без единой изменённой строки, перед лицом десяти миллион
System design похож на планирование дороги до того, как вокруг неё вырастет город: легко исправить линию на бумаге, но очень трудно разрыть и перестроить дорогу, которая уже забита машинами.
- Масштаб
- Число пользователей, запросов или объём данных, которые система должна обслуживать одновременно. Один и тот же код может отлично работать при малом масштабе и рухнуть при большом — без каких-либо изменений в его логике.
- Компромисс масштабирования
- Осознанный выбор между двумя хорошими свойствами, когда невозможно максимизировать оба сразу — например, скорость против согласованности, стоимость против надёжности или простота против гибкости. Единственно правильного ответа нет — есть лишь выбор, соответствующий текущим ограничениям.
- Собеседование по System Design
- Распространённый формат технического собеседования в компаниях, чувствительных к масштабу, который проверяет не только то, пишет ли кандидат корректный код, но и умеет ли он рассуждать о компромиссах в условиях реальных ограничений — именно тот навык, который защищает от краха и настоящие системы.