Мы создаём сайты и веб-приложения, которые выдерживают сотни и тысячи обращений в секундубез снижения скорости работы.

При удачном развитии сайта и эффективном продвижении, часто возникают сложности, связанные с высокой нагрузкой на аппаратную и программную части сайта. Сотни или тысячи пользователей, одновременно просматривающие страницы такого сайта, не должны испытывать неудобств: страницы должны открываться быстро, а сайт должен работать без сбоев. Если сайт или веб-приложение «тормозит» или «падает» под нагрузкой, то это приводит к экономическим убыткам и репутационным издержкам.

Планирование

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

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

Мы считаем, что разработанный проект должен выдерживать всплески посещаемости, превышающие плановые показатели в 5 и более раз. Практика показывает, что очень часто целевые показатели основаны на усреднённых данных или даже на гипотезах, а в реальности всплески посещаемости значительно превышают запланированные нагрузки.

Проектирование и разработка под высокие нагрузки

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

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

Именно поэтому в качестве платформ для нагруженных сайтов и приложений мы рекомендуем фреймворки, в большинстве случаев — Ruby on Rails.

Фреймворки лучше подходят для разработки решений, требовательных к производительности и к устойчивости к нагрузкам:

  • Во фреймворках нет избыточного программного кода, который не используется, поэтому ядро фреймворка на порядок «легче» и производительнее ядра универсальной CMS
  • Логика получения и обработки данных, а также схема их хранения в случае разработки на фреймворке получается более специфичной для задач проекта, что позволяет добиться более высокой производительности
  • Фреймворки отлично интегрирутся не только с реляционными базами данных, но и с другими хранилищами и поисковыми движками, что позволяет использовать наиболее подходящие инструменты для решения задач приложения

Всё это делает разработку нагруженных решений на фреймворках более рациональным подходом.

Хостинг под высокие нагрузки

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

Если проект предусматривает постоянно высокие нагрузки, то лучшее решение — горизонтально масштабируемый кластер физических серверов. Если проект предусматривает только периодические высокие нагрузки, то экономически более выгодным может быть облачное решение с динамическим масштабированием под нагрузку — по сути, это тот же кластер, но состоящий не из физических, а из виртуальных выделенных серверов.

Резюме

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

Мы умеем разрабатывать кластерные и облачные решения, которые масштабируются под действительно высокую посещаемость и работают с высокой скоростью даже под очень высокими пиковыми нагрузками.

Мы разрабатываем HighLoad-проекты, ориентированные на быструю и бесперебойную работу при высокой посещаемости.

Мы разрабатываем сайты, которые работают по-настоящему быстро: генерация страниц осуществляется за доли секунды, а загрузка сайта даже на медленных каналах занимает не более пары секунд.

Скорость работы веб-приложений очень важна для коммерческих проектов: пользователи не любят ждать и если сайт работает недостаточно быстро, то это их раздражает и они просто уходят. В системах для автоматизации бизнес-процессов показатель скорости работы тоже очень важен — продуктивность работы страдает, если система «зависает» или «тормозит».

Узнать больше →

Скорость работы веб-приложения — одна из ключевых метрик качества реализации проекта, значительно влияющая на коммерческую эффективность.