Введение
Добро пожаловать в System Design!
Любая большая система когда-то начинается с простого вопроса: как сделать так, чтобы приложение продолжало работать, когда пользователей, данных и запросов становится в сотни раз больше? Именно на такие вопросы отвечает System Design.
Здесь недостаточно запомнить набор технологий или нарисовать несколько прямоугольников со стрелками. Важно научиться видеть требования, находить узкие места, сравнивать варианты и понимать, почему одно архитектурное решение подходит системе, а другое — нет.
По ходу курса ты будешь:
- переводить продуктовые требования в технические ограничения и цели;
- оценивать нагрузку, объём данных и необходимую пропускную способность;
- разбираться, когда нужны кэш, очереди, репликация, шардинг и балансировка;
- учиться выбирать между согласованностью, доступностью, скоростью и сложностью решения;
- собирать отдельные компоненты в целостную и устойчивую систему.
Как лучше проходить курс
Рабочий ритм простой: изучил идею → попробовал применить её к системе → сравнил несколько вариантов → вернулся к месту, где решение пока не очевидно. В System Design редко существует единственный правильный ответ. Гораздо важнее уметь объяснить выбранный подход и его компромиссы.