Поддержка высоконагруженных систем, грамотная и оперативная реакция на резкое увеличение активных пользователей — залог продолжительной работоспособности цифровой платформы. Как наша команда разобралась с подобными кейсами, и как Azure SQL помог нам решить Digital-задачи клиента, расскажем в этой статье.
Azure SQL
Azure SQL — это интеллектуальная масштабируемая облачная служба базы данных (БД), которая предоставляет расширенную совместимость с ядром SQL Server. Высокая производительность, полное обеспечение безопасности данных, масштабирование БД и мониторинг метрик, звучит круто? — тогда мы расскажем, как такая доступная служба смогла нам помочь!
Использование Azure SQL на примере MOJO
MOJO — международная облачная веб-платформа быстрого создания и запуска сайтов для телемагазинов. Меньше чем за 24 часа пользователь сервиса самостоятельно может запустить интернет-магазин для нового товара.
Сопровождая проект, мы неоднократно сталкивались с такими ситуациями, когда после успешной маркетинговой кампании или показа лендинга в известном американском телешоу нагрузка на систему невероятно возрастала.
В таких случаях наша команда оперативно реагирует и временно масштабирует БД. А после снижения нагрузки уменьшает ресурсы обратно.
Инструменты Azure позволяют определить, что именно является причиной проблем с производительностью. Например, они помогают нам обнаружить запросы и хранимые процедуры, которые можно оптимизировать. Были случаи, когда анализ этих данных помог нам сделать оперативные оптимизации и решить проблему с нагрузкой «на лету».
Azure SQL оснащен удобными инструментами для анализа производительности. С помощью «Query Performance Insight» мы можем отслеживать:- какие запросы больше всего нагружают центральный процессор (CPU);
- какие запросы тратят больше времени на исполнение;
- какие запросы используются чаще всего;
- какие запросы загружают больше всего данных.
Это помогает снизить нагрузку на БД, добавив часть запросов в кэш, что, в свою очередь, улучшает производительность.
Стоит отметить, что подобные инструменты, как правило, используются на достаточно нагруженных проектах, и для работы с ними используют сторонние платные цифровые решения.
А в Azure SQL есть все необходимое. All inclusive!
Полезные опции
Рекомендации по улучшению производительности
В список полезных возможностей Azure практически сразу попала опция «Рекомендации по улучшению производительности». Она анализирует использование БД и составляет свой пул советов (например, добавление/удаление индекса). На портале Microsoft Azure можно посмотреть SQL-код создания рекомендуемого индекса. При нажатии на кнопку «применить» автоматически создается индекс в предложенном виде.
Есть возможность настроить автоматическое применение рекомендаций. Но мы вам так делать не советуем :)
Существует вероятность, что конкретное изменение улучшит одно, но негативно повлияет на другое. Только разработчик обладает необходимой информацией о развитии продукта. Облачная служба пока не может полностью заменить человека.
Метрики. Настройка оповещений
Пользователь Azure может мониторить различные метрики и настраивать оповещения. К примеру, если нагрузка на CPU увеличилась до 90% и держится на таком уровне больше 5 минут, высылается письмо с информацией о случившейся проблеме.
Такое происходит и при заполнении места в БД. Но это бывает редко. В любом случае за несколько нажатий размер базы можно увеличить.
Бэкапы
Служба баз данных SQL автоматически создает резервные копии БД, которые хранятся в ней от 7 до 35 дней (в зависимости от оплаченного тарифа). Используются полные, разностные и резервные копии журналов транзакций, поэтому можно восстановить состояние БД на любой нужный момент.
За дополнительную плату пользователь получает возможность долгосрочного хранения резервных копий.
Другая сторона медали
Неприятные ситуации
Если случились какие-то проблемы на стороне Azure — мы можем только ждать и свободно наблюдать за всеми происходящими событиями. Но, к счастью, случается это крайне редко.
Последний затронувший нас инцидент был сравнительно недавно — в марте 2019 года. Все наши базы данных были недоступны в течение 10 минут. Спустя некоторое время техническая служба Azure смогла разрешить эту ситуацию.
Еще одна важная деталь: Azure не спешит отображать информацию о наличии проблем на своей официальной статус-странице. Это происходит минимум через час после начала инцидента.
К этому времени набирается приличное количество жалоб на downdetector.com и в Twitter. Впрочем, после решения проблем они публикуют информацию о причинах инцидента, предпринятых мерах и дальнейших планах по предотвращению подобных ситуаций.
Теоретически, от всех возможных проблем можно максимально защититься. Например, для случаев вроде описанного выше, настроить активную георепликацию в другой регион. Но, как и всегда, приходится искать компромисс между надежностью и стоимостью.
Платная поддержка
Базовый (бесплатный) план поддержки в Microsoft Azure включает в себя только вопросы оплаты и общей подписки на услуги. За техническую помощь необходимо платить дополнительные деньги.
Иногда можно наблюдать следующую ситуацию: клиент без платной подписки обращается к Azure в социальные сети с описанием сложности, явно говорящей о наличии проблем на стороне Azure. В ответ команда поддержки советует описать проблему на форуме с указанием ссылки на вопрос в социальных сетях. После чего обсуждение данного вопроса будет передано специалистам. Но и на этом этапе все еще не ясно, сможет ли служба поддержки помочь. Разрешение ситуации может упереться в ценовую политику.
Иногда просят указать номер подписки (id), чтобы предоставить разовую возможность бесплатного обращения в поддержку.
Что в итоге?
Если опустить ценовую политику Microsoft и не совсем понятный алгоритм саппорта пользователей Azure службой поддержки — интеллектуальная масштабируемая облачная служба базы данных помогла нам обеспечить работоспособность веб-платформы MOJO при критической нагрузке системы. А инструменты Azure до сих пор стабильно улучшают производительность сервиса, информируют о возможных проблемах и позволяют нам создавать резервные копии БД. А о том, как реализовать мультиязычность сайта, читайте в нашей следующей статье.