Высокие нагрузки бывают разные — бывает большой объем трафика, бывает ресурсоемкий функционал, бывает нагрузка на файловую систему или хранилище, а бывает на базу данных. Каждый интернет-проект в зависимости от своих задач имеет свои узкие места и способы сделать его готовым к высоким нагрузкам.

Основная задача реализации высоконагруженного проекта — спроектировать и разработать систему таким образом, чтобы она могла без сбоев и ошибок работать на нескольких серверах параллельно с возможностью расширения парка серверов для роста производительности. Проще говоря, отдельный сервер (или группа серверов) должны обслуживать отдельную часть пользователей проекта. Таким образом, при значительном росте числа пользователей (посетителей) необходимо докупать (арендовать) дополнительное оборудование, а система уже сама будет распределять данные и нагрузку так, чтобы в целом производительность росла практически линейно. Это называется «горизонтальное масштабирование».

Также важная задача заключается в обеспечении отказоустойчивости системы, т.к. чем больше серверов, тем больше вероятность отказа отдельных элементов (от жесткого диска до сервера целиком). Для решения этой задачи система должна уметь хранить информацию в нескольких копиях на независимых серверах и распределять доступ к этой информации для ее доступности при любых ситуациях.

Стоимость создания проекта с подготовкой под высокие нагрузки выше, чем разработка проекта для одного-двух серверов. Понимая потребность большинства проектов в быстром старте с меньшими затратами, мы закладываем возможность дальнейшей реализации механизмов масштабирования, но не делаем это сразу в целях экономии.