Устойчивость сайтов и веб‑приложений к нагрузкам
Для эффективного ведения бизнеса сайт должен выдерживать нагрузку и работать без перебоев. Однако, причин для сбоев из‑за нагрузки немало: это низкое качество хостинг‑провайдеров и даже простой резкий рост посещаемости, к которому проект не был готов, а также DoS‑атаки.
Под устойчивостью к нагрузкам понимается способность приложения качественно работать при высоком количестве запросов со стороны пользователей. Наиболее важными показателями нагрузки сервиса являются пиковые значения количества просмотров в минуту и список наиболее востребованных сервисов.
Повысить устойчивость сайта к нагрузкам можно несколькими способами. Самое простое — это повышение быстродействия системы (высокая скорость обработки запросов позволяет за единицу времени обслужить большее количество посетителей). Когда этих мер недостаточно, то производится масштабирование системы (увеличение кол‑ва серверов). Это может быть как относительно простое вертикальное масштабирование (разнесение компонентов приложения по разным серверам), так и более сложное горизонтальное (обеспечение согласованной работы нескольких экземпляров приложения на кластере серверов или в облаке). Вертикально можно масштабировать любые приложения, но у этой схемы есть лимит: более чем в несколько раз повысить производительность не получится, хотя для подавляющего большинства проектов этого вполне достаточно. Предела не имеет горизонтальное масштабирование, но это способ подходит только для тех сайтов, которые были при разработке адаптированы под такую схему работы.
Отдельно стоит сказать про DoS‑атаки (атаки типа «отказ в обслуживании»). Производятся они путём создания огромного числа обращений к сайту, в результате чего сайт либо «тормозит», либо вообще прекращает справляться с обработкой запросов. Провайдеры виртуальных хостингов с атакуемыми сайтами поступают очень просто — их отключают до момента, пока атака не прекратится. На выделенных серверах от слабых и даже средних по силе атак можно без проблем защититься своими силами. Действительно сильные атаки стоят очень немалых денег для их заказчика, но и защита от них требует обращения в специализированные компании, что тоже стоит денег.
Тематические статьи
Быстродействие сайтов и веб‑приложений
Под быстродействием веб‑приложений понимается метрика, отражающая средний временной интервал от запроса пользователя до готовности страницы к взаимодействию в браузере.
Быстродействие зависит от серверного оборудования и настройки серверного ПО, а также от качества реализации бэкенд- и фронтенд‑частей сайта. Воспринимаемая пользователями скорость работы — это всегда сумма скоростей работы оборудования, бэкенда и фронтенда. В каждом из этих направлений есть набор хороших практик и оптимизаций, которые позволяют улучшить быстродействие.
Высокие нагрузки — что выбрать: кластерное или облачное решение?
Если к сайту или веб‑приложению предъявляются высокие требования к быстродействию и устойчивости к высоким нагрузкам, то встаёт вопрос о выборе между кластерным и облачным решением. Оба варианта способны обеспечить отличное масштабирование, поэтому выбор чаще всего основан на экономических критериях.
Ускоряем работу сайта с помощью серверного кеширования
Если простым языком, то серверное кеширование — это ряд технологий, которые позволяют «запоминать» один раз полученные или созданные данные, а затем многократно использовать их повторно, что способствует увеличению скорости отклика и снижает нагрузку на серверное оборудование.
Увеличиваем скорость работы сайта при помощи оптимизации JavaScript
Сайт может работать быстрее, если выполнены следующие рекомендации по оптимизации JS‑кода. Если же этого не сделать, то сайт будет недостаточно быстро отображаться на стороне клиента.
Ускоряем работу сайта: оптимизация HTML
Сайт может загружаться и отображаться быстрее, если выполнить следующие рекомендации по оптимизации HTML‑разметки, а без этого скорость загрузки и отрисовки будет ниже.
Ускоряем работу сайта за счёт оптимизации CSS
Время загрузки и отрисовки сайта в браузере можно заметно снизить, если воспользоваться следующими советами.
Ускоряем работу сайта, используя быстрый и надёжный веб‑сервер nginx
nginx — это простой, быстрый и надёжный сервер. Применение nginx очень эффективно для отдачи статического контента и в качестве прокси‑сервера перед динамическими сайтами.
Ускоряем работу сайта: используем Redis для кеширования и хранения данных
Redis — сетевое журналируемое хранилище данных типа «ключ — значение», которое обрабатывает данные в оперативной памяти и обладает механизмами снимков и журналирования для обеспечения постоянного хранения. Хранилище поддерживает работу с пятью типами данных: со строками, списками, хешами, обычными и сортируемыми множествами.
Быстрый поиск на сайте, используя ElasticSearch или Sphinx
Sphinx и ElasticSearch — это поисковые «движки», которые обеспечивают более быстрый поиск и фильтрацию по сравнению с реляционными базами данных, а также обеспечивают возможность использования многих полезных функций поиска, например, учитывают морфологию языка, осуществляют фасеточный поиск, работают со стоп‑словами, обеспечивают выборочную индексацию и позволяют производить настройку формулы определения релевантности документов.