Устойчивость сайтов и веб-приложений к нагрузкам

Для эффективного ведения бизнеса сайт должен выдерживать нагрузку и работать без перебоев. Однако, причин для сбоев из-за нагрузки немало: это низкое качество хостинг-провайдеров и даже простой резкий рост посещаемости, к которому проект не был готов, а также DoS-атаки.

Под устойчивостью к нагрузкам понимается способность приложения качественно работать при высоком количестве запросов со стороны пользователей. Наиболее важными показателями нагрузки сервиса являются пиковые значения количества просмотров в минуту и список наиболее востребованных сервисов.

Повысить устойчивость сайта к нагрузкам можно несколькими способами. Самое простое — это повышение быстродействия системы (высокая скорость обработки запросов позволяет за единицу времени обслужить большее количество посетителей). Когда этих мер недостаточно, то производится масштабирование системы (увеличение кол-ва серверов). Это может быть как относительно простое вертикальное масштабирование (разнесение компонентов приложения по разным серверам), так и более сложное горизонтальное (обеспечение согласованной работы нескольких экземпляров приложения на кластере серверов или в облаке). Вертикально можно масштабировать любые приложения, но у этой схемы есть лимит: более чем в несколько раз повысить производительность не получится, хотя для подавляющего большинства проектов этого вполне достаточно. Предела не имеет горизонтальное масштабирование, но это способ подходит только для тех сайтов, которые были при разработке адаптированы под такую схему работы.

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

Cтатьи по теме:

Работа над быстродействием сайтов и веб-приложений
​Под быстродействием сайта понимается время обработки запроса пользователя от начала этого запроса до момента, когда с итоговой страницей возможно взаимодействие. Быстродействие зависит от программной части сайта и от серверного оборудования. Воспринимаемая пользователями скорость работы — это всегда сумма скоростей работы оборудования, бэкенда и фронтенда.
Высокие нагрузки — что выбрать: кластерное или облачное решение?
Если к сайту или веб-приложению предъявляются высокие требования к быстродействию и устойчивости к высоким нагрузкам, то встаёт вопрос о выборе между кластерным и облачным решением. Оба варианта способны обеспечить отличное масштабирование, поэтому выбор чаще всего основан на экономических критериях.
Увеличиваем скорость работы сайта при помощи оптимизации JavaScript
Сайт может работать быстрее, если выполнены следующие рекомендации по оптимизации JS-кода. Если же этого не сделать, то сайт будет недостаточно быстро отображаться на стороне клиента.
Ускоряем работу сайта: оптимизация HTML
Сайт может загружаться и отображаться быстрее, если выполнить следующие рекомендации по оптимизации HTML-разметки, а без этого скорость загрузки и отрисовки будет ниже.
Ускоряем работу сайта за счёт оптимизации CSS
Время загрузки и отрисовки сайта в браузере можно заметно снизить, если воспользоваться следующими советами.
Ускоряем работу сайта с помощью серверного кеширования
Если простым языком, то серверное кеширование — это ряд технологий, которые позволяют «запоминать» один раз полученные или созданные данные, а затем многократно использовать их повторно, что способствует увеличению скорости отклика и снижает нагрузку на серверное оборудование.
Ускоряем работу сайта, используя быстрый и надёжный веб-сервер nginx
nginx — это простой, быстрый и надёжный сервер. Применение nginx очень эффективно для отдачи статического контента и в качестве прокси-сервера перед динамическими сайтами.

Тематические технологии:

Поисковая система ElasticSearch
СУБД Redis
Язык программирования Go
Колоночная СУБД Cassandra
Колоночная СУБД Scylla
Page Speed Insights
Хранилище Memcached