Неполная классификация высокой нагрузки
Если у вас пользовательский сервис, с социальной составляющей то скорее всего у вас будут такие высоконагруженные компоненты:
- Хранение данных о пользователе
- Хранение файлов пользователя, это могут быть документы, фотки или видеофайлы, которые надо хранить как есть
- Поисковый сервис
- Платежный сервис
- Скорее всего вы захотите дать возможность пользователям писать сообщения
- Также у вас могут быть разные уведомления для пользователя
- Вы будете крутить рекламу и для показа баннеров тоже нужен будет сервис
- Вы, конечно, захотите отслеживать и активность пользователя, проводить A/B тестирование и разную аналитику
- Вся эта огромная махина будет требовать мониторинга и сбора статистики, чтобы разработчики могли вовремя реагировать
- Множество программ на куче серверов будут генерить гигабайты логов, которые разработчики иногда будут читать
Каждая компонента будет иметь специфический профиль использования. Для того, чтобы сэкономить на железе, обеспечить высокую доступность и порадовать пользователя хочется выжимать максимум из железа. А когда больше не выжать, хочется иметь возможность залить проблему деньгами докупив еще серверов. Поэтому для каждого компонента строятся специфические решения учитывающие особенности доступа к данным, этим и объясняется огромное количество No SQL баз данных. И выбрав правильный инструмент, можно очень сильно сэкономить и сделать доселе немыслимое.