Каждый год Черная пятница становится новым испытанием для решений электронной коммерции.
Клиенты получают возможность покупать товары по привлекательным ценам, а ИТ-специалисты — шквал запросов к серверам, запредельную нагрузку на все ресурсы и недоступность внешних сервисов (таких как платежные системы, ERP и т. д.).
Как мы уже писал ранее , мы работаем с крупными интернет-магазинами в разных странах, поэтому часто сталкиваемся с высокими нагрузками.
В этой статье мы расскажем, как прошла Черная пятница 2017 на одном из клиентских проектов, реализованных на Платформа VirtoCommerce и развернуты в облаке Azure, и как нам удалось выдержать 10-кратное увеличение трафика.
Первоначальная конфигурация была построена по требованиям клиента без CDN. С одной стороны, необходимо было уложиться в жёсткий бюджет, с другой — необходимо было обеспечить возможность масштабирования и изменения конфигурации в реальном времени.
Товар выглядел так:
- Служба приложений для внешний интерфейс приложение - работает Витрина VirtoCommerce для ASP.NET Core 2.0 , у нее есть три независимых магазина для стран Северной Европы: каждый со своим доменом, со своей темой, на своем языке и в своей валюте.
Приложение взаимодействует с задняя часть система через вызовы RESTful API
- Служба приложений для задняя часть - работа на платформе Виртокоммерция , он управляет единым каталогом, ценами, магазином и заказами, а также реализует RESTful API для доступа к функциям и данным платформы.
- Logic Apps предназначен для интеграции с внешними системами.
- Application Insights используется для мониторинга производительности решения.
Плюс планировалась отправка электронных писем или СМС-сообщений в течение дня, что должно было привести к резкому, пиковому росту запросов в один момент времени.
Часть 1. Подготовка
Был проведен анализ работы текущей системы и приняты следующие решения, которые нам удалось реализовать с помощью сервисов Azure. Для подготовки к Черной пятнице мы выделили 4 пункта:- Включите CDN для статических ресурсов (JavaScript и CSS).
- Активируйте CDN для изображений продуктов.
- Увеличивайте вычислительные ресурсы на время акции.
- Настройте правила автоматического масштабирования в Azure.
Активация CDN для статических ресурсов (JavaScript и CSS).
По умолчанию все ресурсы (файлы JavaScript и CSS) загружаются напрямую из внешний интерфейс Приложения.
Сеть доставки контента Azure (CDN) позволяет кэшировать статический веб-контент в стратегически расположенных точках.
Это обеспечивает максимальную пропускную способность для доставки контента пользователям.
CDN также снижает нагрузку на сервер веб-приложений.
Для того, чтобы подключить CDN для кэширования статических ресурсов, необходимо:
- Добавьте код для создания ссылок CDN в метод StaticAssetUrl.
- Создайте CDN для службы приложений.
docs.microsoft.com/en-us/azure/app-service/app-service-web-tutorial-content-delivery-network .
- Настройте URL-адрес CDN в конфигурации приложения.
Хороший прирост скорости.
До 705 мс
Через 216 мс
Активация CDN для изображений продуктов.
Для клиентских решений мы рекомендуем использовать службу Azure Blob в качестве основного хранилища двоичных файлов или образов продуктов.
По умолчанию CDN можно подключить к хранилищу BLOB-объектов Azure для кэширования контента.
Партнерские службы Microsoft в рамках Azure CDN предлагают разработчикам глобальное решение для доставки больших объемов контента.
Это решение позволяет кэшировать большие двоичные объекты и статический контент в вычислительных экземплярах на физических узлах в США, Европе, Азии, Австралии и Южной Америке.
Чтобы создать новый CDN для изображений продуктов, вам необходимо:
- Установить Платформа Virto Commerce версии v2.13.18 и выше.
Плюс используйте AzureBlobProvider.
- Создание Azure CDN для хранилища BLOB-объектов.
docs.microsoft.com/en-us/azure/cdn/cdn-create-a-storage-account-with-cdn .
- Установите для атрибута cdnUrl значение AssetsConnectionString. Например: поставщик=AzureBlobStorage;rootPath=assets;DefaultEndpointsProtocol=https;AccountName={AccountName};AccountKey={AccountKey};cdnUrl=abc.azureedge.net
Например, jpeg-файл размером 82 КБ мы получили за 126 мс вместо 259 мс.
До 259 мс
Через 126 мс
Сделайте увеличение масштаба на время акции.
По умолчанию для служб приложений мы используем вычислительные ресурсы в плане Azure S2:Medium, но если нам потребуется использовать больше ресурсов ЦП или памяти, мы готовы увеличить план до S3:Large.
Тесты, проведенные в Azure, показали, что увеличение объема вычислительных ресурсов происходит в среднем в течение 2-5 минут и без простоев.
Настройте правила автоматического масштабирования.
Scale Out позволяет настроить количество сред, в которых работает приложение.
В базовой настройке у нас настроены правила на автоматическое увеличение/уменьшение количества ролей от 2 до 5 в зависимости от метрик.
При нормальной работе приложения это может существенно сэкономить время и бюджет ИТ-администратора.
Мы выбрали для себя следующие настройки:
- Увеличьте количество экземпляров на 1, если CPUPercantage > 80 или MemoryPercentage > 90 за последние 10 минут.
- Уменьшите количество экземпляров на 1, если CPUPercantage < 70 and MemoryPercentage < 70 over last 10 minutes.
В обычное время автоматическое масштабирование работает отлично.
Часть 2. Черная пятница
Утро наступило.Разработчики и системные администраторы открывают метрики Live Stream в своих браузерах.
Были активированы рекламные акции и проведена первая рассылка по электронной почте.
В Live Stream мы видим рост количества запросов.
Требуется больше ресурсов, но автоматические правила не успевают реагировать на эти изменения.
Мы видим увеличение времени отклика.
Поднимается новый экземпляр и ситуация стабилизируется.
Проходит волна рассылок и автоматически происходит уменьшение ресурсов.
Следующая волна – картина повторяется.
Решаем перейти на ручной режим управления количеством инстансов, чтобы оставить ресурсы в резерве.
Клиенты отмечают, что сайт работает намного быстрее, несмотря на нагрузку.
Вот распределение количества запросов в зависимости от продолжительности:
Черная пятница утром с 7:40 до 9:40. Шаг 2 минуты.
А это обычная пятница:
Увеличение количества заказов привело к увеличению нагрузки на базу данных до критических параметров.
Обычно мы считаем, что процент DTU составляет 40–50 %.
В Черную пятницу нагрузка выросла до 70-80%.
Было решено увеличить ресурсы до 100 DTU. Смена плана на лету также происходила в течение 2-3 минут и без простоев, что не могло не радовать.
Это решило потенциальные проблемы с запасами.
Больше запросов, больше трафика.
Больше заказов.
И так до часа ночи субботы.
Потом все пошли спать.
Часть 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 .
- Мы разместим Службы приложений в нескольких геолокациях.
Каждый год Черная пятница становится новым испытанием для решений электронной коммерции.
Клиенты получают возможность покупать товары по привлекательным ценам, а ИТ-специалисты — шквал запросов к серверам, запредельную нагрузку на все ресурсы и недоступность внешних сервисов (таких как платежные системы, ERP и т. д.).
Как мы уже писал ранее , мы работаем с крупными интернет-магазинами в разных странах, поэтому часто сталкиваемся с высокими нагрузками.
В этой статье мы расскажем, как прошла Черная пятница 2017 на одном из клиентских проектов, реализованных на Платформа VirtoCommerce и развернуты в облаке Azure, и как нам удалось выдержать 10-кратное увеличение трафика.
Первоначальная конфигурация была построена по требованиям клиента без CDN. С одной стороны, необходимо было уложиться в жёсткий бюджет, с другой — необходимо было обеспечить возможность масштабирования и изменения конфигурации в реальном времени.
Товар выглядел так:
- Служба приложений для внешний интерфейс приложение - работает Витрина VirtoCommerce для ASP.NET Core 2.0 , у нее есть три независимых магазина для стран Северной Европы: каждый со своим доменом, со своей темой, на своем языке и в своей валюте.
Приложение взаимодействует с задняя часть система через вызовы RESTful API
- Служба приложений для задняя часть - работа на платформе Виртокоммерция , он управляет единым каталогом, ценами, магазином и заказами, а также реализует RESTful API для доступа к функциям и данным платформы.
- Logic Apps предназначен для интеграции с внешними системами.
- Application Insights используется для мониторинга производительности решения.
Плюс планировалась отправка электронных писем или СМС-сообщений в течение дня, что должно было привести к резкому, пиковому росту запросов в один момент времени.
Часть 1. Подготовка
Был проведен анализ работы текущей системы и приняты следующие решения, которые нам удалось реализовать с помощью сервисов Azure. Для подготовки к Черной пятнице мы выделили 4 пункта:- Включите CDN для статических ресурсов (JavaScript и CSS).
- Активируйте CDN для изображений продуктов.
- Увеличивайте вычислительные ресурсы на время акции.
- Настройте правила автоматического масштабирования в Azure.
Включение CDN для статических ресурсов (JavaScript и CSS)
По умолчанию все ресурсы (файлы JavaScript и CSS) загружаются напрямую из внешний интерфейс Приложения.Сеть доставки контента Azure (CDN) позволяет кэшировать статический веб-контент в стратегически расположенных точках.
Это обеспечивает максимальную пропускную способность для доставки контента пользователям.
CDN также снижает нагрузку на сервер веб-приложений.
Для того, чтобы подключить CDN для кэширования статических ресурсов, необходимо:
- Добавьте код для создания ссылок CDN в метод StaticAssetUrl.
- Создайте CDN для службы приложений.
docs.microsoft.com/en-us/azure/app-service/app-service-web-tutorial-content-delivery-network .
- Настройте URL-адрес CDN в конфигурации приложения.
Хороший прирост скорости.
До 705 мс
Через 216 мс
Активация CDN для изображений продукта
Для клиентских решений мы рекомендуем использовать службу Azure Blob в качестве основного хранилища двоичных файлов или образов продуктов.По умолчанию CDN можно подключить к хранилищу BLOB-объектов Azure для кэширования контента.
Партнерские службы Microsoft в рамках Azure CDN предлагают разработчикам глобальное решение для доставки больших объемов контента.
Это решение позволяет кэшировать большие двоичные объекты и статический контент в вычислительных экземплярах на физических узлах в США, Европе, Азии, Австралии и Южной Америке.
Чтобы создать новый CDN для изображений продуктов, вам необходимо:
- Установить Платформа Virto Commerce версии v2.13.18 и выше.
Плюс используйте AzureBlobProvider.
- Создание Azure CDN для хранилища BLOB-объектов.
docs.microsoft.com/en-us/azure/cdn/cdn-create-a-storage-account-with-cdn .
- Установите для атрибута cdnUrl значение AssetsConnectionString. Например: поставщик=AzureBlobStorage;rootPath=assets;DefaultEndpointsProtocol=https;AccountName={AccountName};AccountKey={AccountKey};cdnUrl=abc.azureedge.net
Например, jpeg-файл размером 82 КБ мы получили за 126 мс вместо 259 мс.
До 259 мс
Через 126 мс
Сделайте увеличение масштаба на время акции
По умолчанию для служб приложений мы используем вычислительные ресурсы в плане Azure S2:Medium, но если нам потребуется использовать больше ресурсов ЦП или памяти, мы готовы увеличить план до S3:Large.Тесты, проведенные в Azure, показали, что увеличение объема вычислительных ресурсов происходит в среднем в течение 2-5 минут и без простоев.
Настройка правил автоматического масштабирования
Scale Out позволяет настроить количество сред, в которых работает приложение.В базовой настройке у нас настроены правила на автоматическое увеличение/уменьшение количества ролей от 2 до 5 в зависимости от метрик.
При нормальной работе приложения это может существенно сэкономить время и бюджет ИТ-администратора.
Мы выбрали для себя следующие настройки:
- Увеличьте количество экземпляров на 1, если CPUPercantage > 80 или MemoryPercentage > 90 за последние 10 минут.
- Уменьшите количество экземпляров на 1, если CPUPercantage < 70 and MemoryPercentage < 70 over last 10 minutes.
В обычное время автоматическое масштабирование работает отлично.
Часть 2. Черная пятница
Утро наступило.Разработчики и системные администраторы открывают метрики Live Stream в своих браузерах.
Были активированы рекламные акции и проведена первая рассылка по электронной почте.
В Live Stream мы видим рост количества запросов.
Требуется больше ресурсов, но автоматические правила не успевают реагировать на эти изменения.
Мы видим увеличение времени отклика.
Поднимается новый экземпляр и ситуация стабилизируется.
Проходит волна рассылок и автоматически происходит уменьшение ресурсов.
Следующая волна – картина повторяется.
Решаем перейти на ручной режим управления количеством инстансов, чтобы оставить ресурсы в резерве.
Клиенты отмечают, что сайт работает намного быстрее, несмотря на нагрузку.
Вот распределение количества запросов в зависимости от продолжительности:
Черная пятница утром с 7:40 до 9:40. Шаг 2 минуты.
А это обычная пятница:
Увеличение количества заказов привело к увеличению нагрузки на базу данных до критических параметров.
Обычно мы считаем, что процент DTU составляет 40–50 %.
В Черную пятницу нагрузка выросла до 70-80%.
Было решено увеличить ресурсы до 100 DTU. Смена плана на лету также происходила в течение 2-3 минут и без простоев, что не могло не радовать.
Это решило потенциальные проблемы с запасами.
Больше запросов, больше трафика.
Больше заказов.
И так до часа ночи субботы.
Потом все пошли спать.
Часть 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 .
- Мы разместим Службы приложений в нескольких геолокациях.
-
Обзор Sony Vaio Vpcy11S1E/S
19 Oct, 24 -
Закрываем Тему «Полезности» Патентов
19 Oct, 24 -
Имена Методов И Функций
19 Oct, 24 -
Правила Ярослава Грешилова
19 Oct, 24 -
Стартап-Мания, Или Гербалайф Берет Паузу
19 Oct, 24 -
Прогноз Погоды
19 Oct, 24 -
Рецепты Для Android: Ioc Со Вкусом Gradle
19 Oct, 24