Основы масштабирования: задержка, пропускная способность, SLO
В этом уроке мы учимся оценивать в числах, насколько «большой» должна быть система. Мы отработаем оценку ёмкости (какую нагрузку система должна выдерживать), QPS (queries per second — сколько запросов приходит каждую секунду). Мы прикинем, сколько нужно хранилища и какая нужна пропускная способность
System Design похож на планирование целого города: дороги, которые несут поток машин, склады, где всё хранится, светофоры, которые поддерживают порядок движения, и ремонтные бригады, которые устраняют проблемы, — и всё для того, чтобы город продолжал работать гладко даже в час пик, когда все выходят одновременно.
- Ёмкость и SLO
- Ключевой навык этого урока: оценка размера системы в числах — ёмкость (какую нагрузку она выдерживает), QPS (запросов в секунду), сколько нужно хранилища, какая нужна пропускная способность (объём текущих данных) и SLO (service level objectives, наше обещание о доступности или скорости). Грубый предварительный расчёт, который помогает правильно спланировать.
- Компромисс
- Осознанный выбор между двумя вариантами, где у каждого есть плюс, но и своя цена. Идеального ответа нет — вы выбираете то, что подходит, и объясняете интервьюеру, что выигрываете и чем жертвуете. Как выбор между быстрым дорогим маршрутом и дешёвым медленным.
- Эксплуатационная метрика
- Число, которое можно измерить, чтобы понять, действительно ли решение работает, когда система запущена и обслуживает реальных пользователей (продакшен). Например: задержка (сколько времени занимает ответ), доля ошибок (доля запросов, которые завершаются неудачей), отставание очереди (сколько задач стоит в очереди), доля попаданий в кэш (как часто ответ уже готов в быстром временном хранилище) и другие.