Черная Пятница 2017 Глазами Ит-Специалистов И Разработчиков. Как Мы Пережили Черную Пятницу С Увеличением Трафика В 10 Раз

Каждый год Черная пятница становится новым испытанием для решений электронной коммерции.

Клиенты получают возможность покупать товары по привлекательным ценам, а ИТ-специалисты — шквал запросов к серверам, запредельную нагрузку на все ресурсы и недоступность внешних сервисов (таких как платежные системы, ERP и т. д.).



Черная пятница 2017 глазами ИТ-специалистов и разработчиков.
</p><p>
 Как мы пережили Черную пятницу с увеличением трафика в 10 раз

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

В этой статье мы расскажем, как прошла Черная пятница 2017 на одном из клиентских проектов, реализованных на Платформа VirtoCommerce и развернуты в облаке Azure, и как нам удалось выдержать 10-кратное увеличение трафика.

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

Товар выглядел так:

Черная пятница 2017 глазами ИТ-специалистов и разработчиков.
</p><p>
 Как мы пережили Черную пятницу с увеличением трафика в 10 раз

  • Служба приложений для внешний интерфейс приложение - работает Витрина VirtoCommerce для ASP.NET Core 2.0 , у нее есть три независимых магазина для стран Северной Европы: каждый со своим доменом, со своей темой, на своем языке и в своей валюте.

    Приложение взаимодействует с задняя часть система через вызовы RESTful API

  • Служба приложений для задняя часть - работа на платформе Виртокоммерция , он управляет единым каталогом, ценами, магазином и заказами, а также реализует RESTful API для доступа к функциям и данным платформы.

  • Logic Apps предназначен для интеграции с внешними системами.

  • Application Insights используется для мониторинга производительности решения.

В Черную пятницу 2017 маркетологи прогнозировали 10-кратный рост трафика.

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



Часть 1. Подготовка

Был проведен анализ работы текущей системы и приняты следующие решения, которые нам удалось реализовать с помощью сервисов Azure. Для подготовки к Черной пятнице мы выделили 4 пункта:
  • Включите CDN для статических ресурсов (JavaScript и CSS).

  • Активируйте CDN для изображений продуктов.

  • Увеличивайте вычислительные ресурсы на время акции.

  • Настройте правила автоматического масштабирования в Azure.
То есть диаграмма должна была выглядеть так:

Черная пятница 2017 глазами ИТ-специалистов и разработчиков.
</p><p>
 Как мы пережили Черную пятницу с увеличением трафика в 10 раз



Активация CDN для статических ресурсов (JavaScript и CSS).

По умолчанию все ресурсы (файлы JavaScript и CSS) загружаются напрямую из внешний интерфейс Приложения.

Сеть доставки контента Azure (CDN) позволяет кэшировать статический веб-контент в стратегически расположенных точках.

Это обеспечивает максимальную пропускную способность для доставки контента пользователям.

CDN также снижает нагрузку на сервер веб-приложений.

Для того, чтобы подключить CDN для кэширования статических ресурсов, необходимо:

  1. Добавьте код для создания ссылок CDN в метод StaticAssetUrl.
  2. Создайте CDN для службы приложений.

    docs.microsoft.com/en-us/azure/app-service/app-service-web-tutorial-content-delivery-network .

  3. Настройте URL-адрес CDN в конфигурации приложения.

После этого все ресурсы, к которым осуществляется доступ по пути темы/активы/статические/папка , будет загружен из CDN. Ранее мы провели ряд бенчмарк-тестов для разных регионов, которые показали эффективность CDN. Например, для статического файлаvendor.js размером 714 КБ были получены следующие результаты 216 мс против 705 мс .

Хороший прирост скорости.

До 705 мс

Черная пятница 2017 глазами ИТ-специалистов и разработчиков.
</p><p>
 Как мы пережили Черную пятницу с увеличением трафика в 10 раз

Через 216 мс

Черная пятница 2017 глазами ИТ-специалистов и разработчиков.
</p><p>
 Как мы пережили Черную пятницу с увеличением трафика в 10 раз



Активация CDN для изображений продуктов.

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

По умолчанию CDN можно подключить к хранилищу BLOB-объектов Azure для кэширования контента.

Партнерские службы Microsoft в рамках Azure CDN предлагают разработчикам глобальное решение для доставки больших объемов контента.

Это решение позволяет кэшировать большие двоичные объекты и статический контент в вычислительных экземплярах на физических узлах в США, Европе, Азии, Австралии и Южной Америке.

Чтобы создать новый CDN для изображений продуктов, вам необходимо:

  1. Установить Платформа Virto Commerce версии v2.13.18 и выше.

    Плюс используйте AzureBlobProvider.

  2. Создание Azure CDN для хранилища BLOB-объектов.

    docs.microsoft.com/en-us/azure/cdn/cdn-create-a-storage-account-with-cdn .

  3. Установите для атрибута cdnUrl значение AssetsConnectionString. Например: поставщик=AzureBlobStorage;rootPath=assets;DefaultEndpointsProtocol=https;AccountName={AccountName};AccountKey={AccountKey};cdnUrl=abc.azureedge.net
Мы сравнили работу до и после.

Например, jpeg-файл размером 82 КБ мы получили за 126 мс вместо 259 мс.

До 259 мс

Черная пятница 2017 глазами ИТ-специалистов и разработчиков.
</p><p>
 Как мы пережили Черную пятницу с увеличением трафика в 10 раз

Через 126 мс

Черная пятница 2017 глазами ИТ-специалистов и разработчиков.
</p><p>
 Как мы пережили Черную пятницу с увеличением трафика в 10 раз



Сделайте увеличение масштаба на время акции.

По умолчанию для служб приложений мы используем вычислительные ресурсы в плане Azure S2:Medium, но если нам потребуется использовать больше ресурсов ЦП или памяти, мы готовы увеличить план до S3:Large.

Черная пятница 2017 глазами ИТ-специалистов и разработчиков.
</p><p>
 Как мы пережили Черную пятницу с увеличением трафика в 10 раз

Тесты, проведенные в Azure, показали, что увеличение объема вычислительных ресурсов происходит в среднем в течение 2-5 минут и без простоев.



Настройте правила автоматического масштабирования.

Scale Out позволяет настроить количество сред, в которых работает приложение.

В базовой настройке у нас настроены правила на автоматическое увеличение/уменьшение количества ролей от 2 до 5 в зависимости от метрик.

При нормальной работе приложения это может существенно сэкономить время и бюджет ИТ-администратора.



Черная пятница 2017 глазами ИТ-специалистов и разработчиков.
</p><p>
 Как мы пережили Черную пятницу с увеличением трафика в 10 раз

Мы выбрали для себя следующие настройки:

  • Увеличьте количество экземпляров на 1, если CPUPercantage > 80 или MemoryPercentage > 90 за последние 10 минут.
  • Уменьшите количество экземпляров на 1, если CPUPercantage < 70 and MemoryPercentage < 70 over last 10 minutes.
К сожалению, оказалось, что во время пиковых нагрузок автоматические правила работали слишком медленно — они лагали и в итоге нам пришлось перейти на ручное управление.

В обычное время автоматическое масштабирование работает отлично.



Часть 2. Черная пятница

Утро наступило.

Разработчики и системные администраторы открывают метрики Live Stream в своих браузерах.

Были активированы рекламные акции и проведена первая рассылка по электронной почте.

В Live Stream мы видим рост количества запросов.

Требуется больше ресурсов, но автоматические правила не успевают реагировать на эти изменения.



Черная пятница 2017 глазами ИТ-специалистов и разработчиков.
</p><p>
 Как мы пережили Черную пятницу с увеличением трафика в 10 раз

Мы видим увеличение времени отклика.

Поднимается новый экземпляр и ситуация стабилизируется.

Проходит волна рассылок и автоматически происходит уменьшение ресурсов.

Следующая волна – картина повторяется.

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

Клиенты отмечают, что сайт работает намного быстрее, несмотря на нагрузку.

Вот распределение количества запросов в зависимости от продолжительности:

Черная пятница 2017 глазами ИТ-специалистов и разработчиков.
</p><p>
 Как мы пережили Черную пятницу с увеличением трафика в 10 раз

Черная пятница утром с 7:40 до 9:40. Шаг 2 минуты.



Черная пятница 2017 глазами ИТ-специалистов и разработчиков.
</p><p>
 Как мы пережили Черную пятницу с увеличением трафика в 10 раз

А это обычная пятница:

Черная пятница 2017 глазами ИТ-специалистов и разработчиков.
</p><p>
 Как мы пережили Черную пятницу с увеличением трафика в 10 раз

Увеличение количества заказов привело к увеличению нагрузки на базу данных до критических параметров.

Обычно мы считаем, что процент DTU составляет 40–50 %.

В Черную пятницу нагрузка выросла до 70-80%.

Было решено увеличить ресурсы до 100 DTU. Смена плана на лету также происходила в течение 2-3 минут и без простоев, что не могло не радовать.

Это решило потенциальные проблемы с запасами.

Больше запросов, больше трафика.

Больше заказов.

И так до часа ночи субботы.

Потом все пошли спать.



Черная пятница 2017 глазами ИТ-специалистов и разработчиков.
</p><p>
 Как мы пережили Черную пятницу с увеличением трафика в 10 раз



Часть 3. Ретроспектива

Мы пережили Черную пятницу! Сайт порадовал клиентов скидками, скоростью и 100% доступностью.

Клиенты магазина, в свою очередь, порадовали владельцев сервиса количеством заказов.

Да, стоимость ИТ-ресурсов в этот день выросла в 3 раза, но и выручка за этот день выросла в 100 раз по сравнению с обычным днем.

Основные затраты были связаны с увеличением количества экземпляров приложения и повышением плана базы данных; после окончания «Черной пятницы» мы вернулись к прежним планам.

Как показали расчеты, подключение CDN увеличило стоимость ИТ-ресурсов всего на ~2$/день, поэтому клиент решил оставить эту конфигурацию на постоянной основе.

По нашим оценкам, перемещение статических ресурсов в CDN улучшило следующие показатели:

  • Среднее время отклика уменьшено на 400 мс.

  • Время загрузки просмотра страницы уменьшено на 1,5 секунды.



Что дальше?

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

    В нашем проекте мы можем это сделать, поскольку текущие цены, скидки для клиента, корзина и т. д. загружаются через JavaScript.

  • Мы активируем управление API между внешний интерфейс И задняя часть системы.

  • Давайте добавим кеширование для повышения производительности в службе управления API Azure. docs.microsoft.com/en-us/azure/api-management/api-management-howto-cache .

  • Мы разместим Службы приложений в нескольких геолокациях.

Что ж, давайте готовиться к новой Черной пятнице 2018! Теги: #Microsoft Azure #it инфраструктура #Системное администрирование #cdn #электронная коммерция #Разработка для электронной коммерции #оптимизация производительности #virtocommerce


Каждый год Черная пятница становится новым испытанием для решений электронной коммерции.

Клиенты получают возможность покупать товары по привлекательным ценам, а ИТ-специалисты — шквал запросов к серверам, запредельную нагрузку на все ресурсы и недоступность внешних сервисов (таких как платежные системы, ERP и т. д.).



Черная пятница 2017 глазами ИТ-специалистов и разработчиков.
</p><p>
 Как мы пережили Черную пятницу с увеличением трафика в 10 раз

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

В этой статье мы расскажем, как прошла Черная пятница 2017 на одном из клиентских проектов, реализованных на Платформа VirtoCommerce и развернуты в облаке Azure, и как нам удалось выдержать 10-кратное увеличение трафика.

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

Товар выглядел так:

Черная пятница 2017 глазами ИТ-специалистов и разработчиков.
</p><p>
 Как мы пережили Черную пятницу с увеличением трафика в 10 раз

  • Служба приложений для внешний интерфейс приложение - работает Витрина VirtoCommerce для ASP.NET Core 2.0 , у нее есть три независимых магазина для стран Северной Европы: каждый со своим доменом, со своей темой, на своем языке и в своей валюте.

    Приложение взаимодействует с задняя часть система через вызовы RESTful API

  • Служба приложений для задняя часть - работа на платформе Виртокоммерция , он управляет единым каталогом, ценами, магазином и заказами, а также реализует RESTful API для доступа к функциям и данным платформы.

  • Logic Apps предназначен для интеграции с внешними системами.

  • Application Insights используется для мониторинга производительности решения.

В Черную пятницу 2017 маркетологи прогнозировали 10-кратный рост трафика.

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



Часть 1. Подготовка

Был проведен анализ работы текущей системы и приняты следующие решения, которые нам удалось реализовать с помощью сервисов Azure. Для подготовки к Черной пятнице мы выделили 4 пункта:
  • Включите CDN для статических ресурсов (JavaScript и CSS).

  • Активируйте CDN для изображений продуктов.

  • Увеличивайте вычислительные ресурсы на время акции.

  • Настройте правила автоматического масштабирования в Azure.
То есть диаграмма должна была выглядеть так:

Черная пятница 2017 глазами ИТ-специалистов и разработчиков.
</p><p>
 Как мы пережили Черную пятницу с увеличением трафика в 10 раз



Включение CDN для статических ресурсов (JavaScript и CSS)

По умолчанию все ресурсы (файлы JavaScript и CSS) загружаются напрямую из внешний интерфейс Приложения.

Сеть доставки контента Azure (CDN) позволяет кэшировать статический веб-контент в стратегически расположенных точках.

Это обеспечивает максимальную пропускную способность для доставки контента пользователям.

CDN также снижает нагрузку на сервер веб-приложений.

Для того, чтобы подключить CDN для кэширования статических ресурсов, необходимо:

  1. Добавьте код для создания ссылок CDN в метод StaticAssetUrl.
  2. Создайте CDN для службы приложений.

    docs.microsoft.com/en-us/azure/app-service/app-service-web-tutorial-content-delivery-network .

  3. Настройте URL-адрес CDN в конфигурации приложения.

После этого все ресурсы, к которым осуществляется доступ по пути темы/активы/статические/папка , будет загружен из CDN. Ранее мы провели ряд бенчмарк-тестов для разных регионов, которые показали эффективность CDN. Например, для статического файлаvendor.js размером 714 КБ были получены следующие результаты 216 мс против 705 мс .

Хороший прирост скорости.

До 705 мс

Черная пятница 2017 глазами ИТ-специалистов и разработчиков.
</p><p>
 Как мы пережили Черную пятницу с увеличением трафика в 10 раз

Через 216 мс

Черная пятница 2017 глазами ИТ-специалистов и разработчиков.
</p><p>
 Как мы пережили Черную пятницу с увеличением трафика в 10 раз



Активация CDN для изображений продукта

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

По умолчанию CDN можно подключить к хранилищу BLOB-объектов Azure для кэширования контента.

Партнерские службы Microsoft в рамках Azure CDN предлагают разработчикам глобальное решение для доставки больших объемов контента.

Это решение позволяет кэшировать большие двоичные объекты и статический контент в вычислительных экземплярах на физических узлах в США, Европе, Азии, Австралии и Южной Америке.

Чтобы создать новый CDN для изображений продуктов, вам необходимо:

  1. Установить Платформа Virto Commerce версии v2.13.18 и выше.

    Плюс используйте AzureBlobProvider.

  2. Создание Azure CDN для хранилища BLOB-объектов.

    docs.microsoft.com/en-us/azure/cdn/cdn-create-a-storage-account-with-cdn .

  3. Установите для атрибута cdnUrl значение AssetsConnectionString. Например: поставщик=AzureBlobStorage;rootPath=assets;DefaultEndpointsProtocol=https;AccountName={AccountName};AccountKey={AccountKey};cdnUrl=abc.azureedge.net
Мы сравнили работу до и после.

Например, jpeg-файл размером 82 КБ мы получили за 126 мс вместо 259 мс.

До 259 мс

Черная пятница 2017 глазами ИТ-специалистов и разработчиков.
</p><p>
 Как мы пережили Черную пятницу с увеличением трафика в 10 раз

Через 126 мс

Черная пятница 2017 глазами ИТ-специалистов и разработчиков.
</p><p>
 Как мы пережили Черную пятницу с увеличением трафика в 10 раз



Сделайте увеличение масштаба на время акции

По умолчанию для служб приложений мы используем вычислительные ресурсы в плане Azure S2:Medium, но если нам потребуется использовать больше ресурсов ЦП или памяти, мы готовы увеличить план до S3:Large.

Черная пятница 2017 глазами ИТ-специалистов и разработчиков.
</p><p>
 Как мы пережили Черную пятницу с увеличением трафика в 10 раз

Тесты, проведенные в Azure, показали, что увеличение объема вычислительных ресурсов происходит в среднем в течение 2-5 минут и без простоев.



Настройка правил автоматического масштабирования

Scale Out позволяет настроить количество сред, в которых работает приложение.

В базовой настройке у нас настроены правила на автоматическое увеличение/уменьшение количества ролей от 2 до 5 в зависимости от метрик.

При нормальной работе приложения это может существенно сэкономить время и бюджет ИТ-администратора.



Черная пятница 2017 глазами ИТ-специалистов и разработчиков.
</p><p>
 Как мы пережили Черную пятницу с увеличением трафика в 10 раз

Мы выбрали для себя следующие настройки:

  • Увеличьте количество экземпляров на 1, если CPUPercantage > 80 или MemoryPercentage > 90 за последние 10 минут.
  • Уменьшите количество экземпляров на 1, если CPUPercantage < 70 and MemoryPercentage < 70 over last 10 minutes.
К сожалению, оказалось, что во время пиковых нагрузок автоматические правила работали слишком медленно — они лагали и в итоге нам пришлось перейти на ручное управление.

В обычное время автоматическое масштабирование работает отлично.



Часть 2. Черная пятница

Утро наступило.

Разработчики и системные администраторы открывают метрики Live Stream в своих браузерах.

Были активированы рекламные акции и проведена первая рассылка по электронной почте.

В Live Stream мы видим рост количества запросов.

Требуется больше ресурсов, но автоматические правила не успевают реагировать на эти изменения.



Черная пятница 2017 глазами ИТ-специалистов и разработчиков.
</p><p>
 Как мы пережили Черную пятницу с увеличением трафика в 10 раз

Мы видим увеличение времени отклика.

Поднимается новый экземпляр и ситуация стабилизируется.

Проходит волна рассылок и автоматически происходит уменьшение ресурсов.

Следующая волна – картина повторяется.

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

Клиенты отмечают, что сайт работает намного быстрее, несмотря на нагрузку.

Вот распределение количества запросов в зависимости от продолжительности:

Черная пятница 2017 глазами ИТ-специалистов и разработчиков.
</p><p>
 Как мы пережили Черную пятницу с увеличением трафика в 10 раз

Черная пятница утром с 7:40 до 9:40. Шаг 2 минуты.



Черная пятница 2017 глазами ИТ-специалистов и разработчиков.
</p><p>
 Как мы пережили Черную пятницу с увеличением трафика в 10 раз

А это обычная пятница:

Черная пятница 2017 глазами ИТ-специалистов и разработчиков.
</p><p>
 Как мы пережили Черную пятницу с увеличением трафика в 10 раз

Увеличение количества заказов привело к увеличению нагрузки на базу данных до критических параметров.

Обычно мы считаем, что процент DTU составляет 40–50 %.

В Черную пятницу нагрузка выросла до 70-80%.

Было решено увеличить ресурсы до 100 DTU. Смена плана на лету также происходила в течение 2-3 минут и без простоев, что не могло не радовать.

Это решило потенциальные проблемы с запасами.

Больше запросов, больше трафика.

Больше заказов.

И так до часа ночи субботы.

Потом все пошли спать.



Черная пятница 2017 глазами ИТ-специалистов и разработчиков.
</p><p>
 Как мы пережили Черную пятницу с увеличением трафика в 10 раз



Часть 3. Ретроспектива

Мы пережили Черную пятницу! Сайт порадовал клиентов скидками, скоростью и 100% доступностью.

Клиенты магазина, в свою очередь, порадовали владельцев сервиса количеством заказов.

Да, стоимость ИТ-ресурсов в этот день выросла в 3 раза, но и выручка за этот день выросла в 100 раз по сравнению с обычным днем.

Основные затраты были связаны с увеличением количества экземпляров приложения и повышением плана базы данных; после окончания «Черной пятницы» мы вернулись к прежним планам.

Как показали расчеты, подключение CDN увеличило стоимость ИТ-ресурсов всего на ~2$/день, поэтому клиент решил оставить эту конфигурацию на постоянной основе.

По нашим оценкам, перемещение статических ресурсов в CDN улучшило следующие показатели:

  • Среднее время отклика уменьшено на 400 мс.

  • Время загрузки просмотра страницы уменьшено на 1,5 секунды.



Что дальше?

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

    В нашем проекте мы можем это сделать, поскольку текущие цены, скидки для клиента, корзина и т. д. загружаются через JavaScript.

  • Мы активируем управление API между внешний интерфейс И задняя часть системы.

  • Давайте добавим кеширование для повышения производительности в службе управления API Azure. docs.microsoft.com/en-us/azure/api-management/api-management-howto-cache .

  • Мы разместим Службы приложений в нескольких геолокациях.

Что ж, давайте готовиться к новой Черной пятнице 2018! Теги: #Microsoft Azure #it-инфраструктура #virtocommerce #электронная коммерция #cdn #оптимизация производительности #Системное администрирование #Microsoft Azure #Разработка для электронной коммерции #Управление электронной коммерцией
Вместе с данным постом часто просматривают: