Борьба с пандемией коронавируса вынудила многие страны призвать население к самоизоляции или принять жёсткие карантинные меры. На фоне всевозможных ограничений онлайн-активность и интернет-трафик мгновенно выросли. Из-за повышенной нагрузки сбои в работе наблюдались у YouTube, серьёзному испытанию подвергаются Netflix, WhatsApp и Facebook. В России прирост аудитории зафиксировали популярные онлайн-кинотеатры, образовательные порталы, платформы доставки готовой еды и продуктов. Часть из них была лучше готова, заблаговременно проведя нагрузочное тестирование, а часть — пренебрегала этим инструментом. До последнего.
Совсем недавно Nokia опубликовала исследование, в котором назвала рост мирового интернет-трафика беспрецедентным. С момента введения карантина в большинстве сетей трафик по сравнению с прошлым годом вырос на 30-45%. Сети справляются с этим объёмом, однако операторы рассчитывали выйти на него в течение года, а не за несколько дней. Nokia также отметила, что наблюдает значительный рост использования приложений, чувствительных к задержкам, причем он приходится на рабочее время: в США на 300% выросло использование видеоконференций (Zoom, Skype) и на 400% — использование игровых приложений.
На этом фоне представитель Еврокомиссии предложил Netflix и другим стриминговым сервисам на время карантина перейти на стандартное разрешение, если в HD нет необходимости. В итоге замедление каналов Netflix оказало большую помощь сетям. YouTube принял похожую меру, снизив качество видео, идущее по умолчанию.
Посещаемость российских онлайн-кинотеатров выросла в среднем на 25-30%. «За три дня со старта кампании Sidimdoma, в рамках которой мы открыли доступ ко всему контенту сервиса, в том числе в подписке, трафик вырос на 40%, а просмотры растут на 20-30% ежедневно», — сообщала пресс-служба онлайн-кинотеатра More.TV. При этом многие российские кинотеатры оказались неплохо подготовлены к внезапному переполнению онлайн-залов.
Помогли им в этом вовремя проведённые тесты. Например, такие, какие делали специалисты IBS AppLinе для онлайн-кинотеатра Start.ru eще на этапе его запуска. Сначала нами была тщательно разработана модель нагрузки. Это очень важный момент, чтобы нагрузочные тесты были не просто «синтетикой», а отражением реальной картины использования сервиса пользователем. Далее по каждой операции был разработан скрипт с помощью специализированного инструмента. Он позволяет провести эмуляцию действий реальных пользователей на более низком, сетевом уровне, что позволяет масштабировать нагрузку до нескольких десятков, а в некоторых случаях и сотен тысяч одновременно (!) работающих пользователей.
Нагрузочный скрипт общается с системой так же, как браузер, в котором пользователь заполняет формы и нажимает кнопки. Система не знает, кто отправляет ей запросы — пользователь за браузером или скрипт. Поэтому запуск скрипта в сотни или тысячи экземпляров (потоков) воспринимается системой точно так же, как работа аналогичного числа пользователей.
Процесс нагрузочных испытаний для Start включал ступенчатое увеличение нагрузки до момента отказа системы. После исправления обнаруженных «узких мест» итерация повторялась заново. И так до момента достижения нужных показателей производительности. Тем самым удалось с достаточно высокой степенью точности подготовиться к возможным нагрузкам, сконфигурировать под них ПО и аппаратные ресурсы.
Одним из ключевых преимуществ сервисов, проводивших нагрузочное тестирование, оказалось чёткое понимание предельных возможностей своих платформ. Это позволило им увеличить количество пользователей, но при этом не переходить границу, за которой происходит явная деградация качества услуги.
Одновременно с этим мы видели множество акций вроде «бесплатного месячного доступа для всех»: в этом случае неограниченное подключение приводило как минимум к ухудшению скорости и качества работы сервиса или в худшем случае — его полной неработоспособности. Вполне возможно, что погоня за кратковременным маркетинговым эффектом победила расчёты инженеров или, что более вероятно, у компании просто не было данных нагрузочных тестирований, на которые они могли бы опираться.
Самоизоляция стала драйвером развития дистанционных сервисов для новых игроков. Офлайн-бизнесу приходится молниеносно адаптироваться и вслед за потребителями переходить в онлайн. Именно поэтому офлайн-кинотеатры договариваются о сотрудничестве и онлайн-трансляциях, фитнес-центры устраивают прямые эфиры с тренировками, преподаватели собирают классы в Zoom, рестораны переходят в режим доставки и т. д.
Естественно, те, кто перешел в онлайн вынужденно, для сохранения бизнеса, оказались ещё менее готовы к большому наплыву пользователей. Например, некоторые интернет-магазины и сервисы доставки, не готовые к большому количеству заказов и обращений от пользователей, ввели ряд ограничений, чтобы справиться с потоком. Компании спешно стали искать возможности масштабировать свои ИТ-системы под возросший спрос.
«По статистике, на прошлой неделе трафик действительно поднялся в несколько раз. Все информационные системы в принципе не готовы к такому объему передаваемой информации, поэтому компании в срочном порядке увеличивают серверный парк, пропускную способность каналов, то есть добавляют оборудование…» — пояснил Дмитрий Мариничев, интернет-омбудсмен.
Но одномоментно нарастить мощности оказалось практически невозможно: увеличение количества или производительности серверов, спешная закупка дополнительных каналов занимает от нескольких недель до нескольких месяцев. Если поторопиться, то как раз можно вложиться и... успеть к снятию режима самоизоляции.
Но, даже преодолев закупочные и логистические проблемы, любая компания может столкнуться с тем, что новые серверы и каналы все равно не способны «переварить» возросший объем. Приложение все так же тормозит и «лагает», деньги вложены, а пользователь уходит. Ведь «узкое место» может быть на уровне архитектуры системы (худший вариант) или базы данных, в настройках и множестве других, заранее неизвестных мест. И вот здесь снова может помочь нагрузочное тестирование.
Ведь его основным предназначением как раз и является определение максимальной производительности, уменьшение ошибок под нагрузкой, а также проверка надёжности и отказоустойчивости с выявлением «узких мест». В каком-то смысле комплекс нагрузочных испытаний можно сравнить с финансовыми стресс-тестами, проводимыми банками и крупными компаниями.
Самое, наверное, важное в текущих условиях: нагрузочное тестирование можно сделать довольно быстро. Проекты длиной в 1,5-2 недели вполне смогут показать, куда и как быстро стоит бежать. То есть ещё до того, как бизнес решительно инвестирует в расширение вычислительных мощностей.
Длительность проектов по нагрузочному тестированию, выполняемых по всем правилам и с достаточно высокой степенью точности, составляет несколько месяцев. Однако в условиях цейтнота, а наш опыт говорит, что это каждый второй проект, такого времени попросту нет. Приходится укладываться в несколько недель с момента старта работ.
Мы используем следующие приёмы:
Нашему инструменту для нагрузочного тестирования мы дали имя «Циклон». Он основан на проверенных решениях Open Source и зародился как результат выполнения нескольких сотен проектов. Именно такой обширный опыт позволил нам автоматизировать с помощью «Циклона» все этапы. Это и подготовка модели нагрузки на основе статистики и бизнес-прогнозов, и авторазвёртывание решения, и автокорреляция скриптов (подготовка трафика к реальной работе), и автоматизация самой трудоёмкой части нагрузочного тестирования — подготовки скриптов с помощью модуля автокорреляции, и в итоге — автоматизация анализа результатов и генерации отчётности. Именно автоматизация позволяет нам сократить время проекта тестирования.
Мы в IBS AppLine уверены, что в текущих условиях нагрузочное тестирование актуально как никогда. Во-первых, это позволит быстро найти самые «узкие места» и работать именно над их устранением. Во-вторых, во многих случаях позволит избежать необоснованных инвестиций. В целом бизнес будет лучше готов к быстрому росту. Ну или точно будет знать, что помешало этому росту с технической точки зрения. А это уже немало.