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