Что если нагрузка вырастет в 10 раз
Вопрос
Your service handles 500 requests per second. What would you change if traffic grew ten times?
Ваш сервис держит 500 запросов в секунду. Что бы вы поменяли при росте трафика в 10 раз?
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
Начинает с измерения: где узкое место
Называет варианты: горизонтальное масштабирование, кеш, реплики, очереди
Говорит о компромиссах каждого
Расставляет приоритеты: что сделает первым
Использует условные конструкции *I would ..., if ...*
Что могут спросить следом
- What would break first?
- How would you test that?
- What about the database?
Разбор
First, I'd want to know where the bottleneck would be, so I'd run a load test at, say, three and then ten times the current traffic and look at CPU, database connections and latency percentiles.
If the app servers are stateless, scaling them horizontally is the easy part. The harder part is usually the database. I'd start with the cheap wins: add read replicas for heavy read endpoints and cache the hottest data in Redis. The trade-off with caching is stale data, so I'd only cache what can be a few seconds old.
For slow operations like sending emails or generating reports, I'd move them to a queue so they don't block requests.
Only if that's not enough would I think about sharding, because it adds a lot of complexity.
Сложные места:
- latency percentiles: перцентили задержки (p95, p99).
- cheap wins: быстрые дешёвые улучшения.
- Only if that's not enough would I: инверсия после only if, звучит уверенно и по-взрослому.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.