Оценка нагрузки сервиса фотографий
Вопрос
Сервис хранения фото: 10 млн DAU, каждый загружает в среднем 2 фото в день по 2 МБ и смотрит 50 фото. Оцените RPS загрузки и просмотра, объём хранения за год и исходящий трафик.
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
Загрузка: 2 × 10^7 / 10^5 ≈ 200 RPS в среднем, пик 500-600
Просмотр: 5 × 10^8 / 10^5 ≈ 5 000 RPS, пик 10-15 тысяч
Объём: 2 × 10^7 × 2 МБ = 40 ТБ в сутки, около 15 ПБ в год без реплик
Трафик просмотров: 5 000 × 2 МБ ≈ 10 ГБ/с в оригиналах, поэтому нужны превью и CDN
Вывод: объектное хранилище, CDN, генерация нескольких размеров, метаданные в БД
Что могут спросить следом
- Как снизить объём хранения?
- Сколько примерно стоит хранить 15 ПБ и что с этим делать?
- Какую долю трафика заберёт CDN?
Разбор
Загрузок 10 млн × 2 = 20 млн в сутки, делим на 10^5: около 200 RPS, в пике 500-600. Просмотров 10 млн × 50 = 500 млн, это около 5 000 RPS, в пике до 15 тысяч. Объём: 20 млн × 2 МБ = 40 ТБ в сутки, за год около 15 ПБ, с репликацией втрое больше. Если отдавать оригиналы, исходящий трафик около 10 ГБ/с, это неподъёмно для origin. Выводы: файлы в объектное хранилище, при загрузке генерируем превью нескольких размеров (превью ~100-200 КБ), отдаём через CDN, метаданные в обычной БД. Для экономии: сжатие в современные форматы, перенос старых оригиналов в холодный класс хранения, дедупликация по хешу.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.