Рекомендации по эффективности производительности для устойчивых рабочих нагрузок на Azure

Устойчивость в облачных рабочих нагрузках и производительности тесно связана, так как они основаны на одном и том же базовом ограничении: потребление ресурсов (вычислительные ресурсы, память, хранилище, сеть и время).

Производительность может быть сильным фактором устойчивости. В этой статье рассматривается устойчивость с помощью объектива основы эффективности производительности и ответы на эти вопросы проектирования:

  • Как повысить производительность на уровне приложения (шаблоны API, отрисовку, ПОЛЬЗОВАТЕЛЬСКИЙ интерфейс и доставку содержимого) для уменьшения вычислительных ресурсов, сети и энергопотребления, не снижая взаимодействие с пользователем?
  • Как следует сквозным образом оптимизировать использование вычислительных ресурсов, хранилища и сети, чтобы прирост производительности приводил к снижению воздействия на окружающую среду, а не только к более быстрому выполнению?
  • Как можно настроить масштабирование, выбор уровня сервиса и практики CI/CD, чтобы избежать скрытых потерь из-за избыточного выделения ресурсов, неиспользуемых мощностей и повторяющихся операций в конвейере?
  • Как модернизировать и непрерывно работать с рабочими нагрузками, чтобы повысить эффективность с течением времени при балансировке затрат, надежности и сложности эксплуатации?

Повышение эффективности приложений

Облачные приложения часто используют частое взаимодействие между службами, API и распределенными компонентами. Каждый запрос API потребляет пропускную способность сети, вычислительные ресурсы, память и, следовательно, энергию.

Приложения могут создавать чрезмерные шаблоны связи между службами, повышающие требования к сетевому трафику и серверной обработке. Большие или неэффективные пакеты данных могут привести к ненужной передаче данных, более высокой задержке и увеличению потребления энергии. Без элементов управления чрезмерные запросы API могут создавать избегаемую нагрузку на внутренние службы, что приводит к повышению использования ресурсов и снижению эффективности.

Некоторые службы Azure поддерживают устойчивые API. Например, см. экологически устойчивые API в Azure API Management.

Непригодная стратегия отрисовки может привести к неэффективному использованию ресурсов и ненужной обработке на клиенте или сервере. Отрисовка на сервере позволяет снизить вычислительную нагрузку на устройства пользователей, использовать преимущества централизованного кэширования и более энергоэффективной инфраструктуры. Напротив, рендеринг на стороне клиента может снизить потребление серверных ресурсов и использовать возможности современных устройств и кеширование браузера.

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

Recommendation Преимущество устойчивости
Оптимизируйте шаблоны взаимодействия API, уменьшая взаимодействие чата, минимизируя размеры полезных данных и используя эффективные методы кодирования сообщений. Уменьшает сетевой трафик, объемы передачи данных, серверную обработку и общее потребление энергии.
Реализуйте регулирование запросов и кэширование ответов с помощью таких служб, как Azure API Management. Предотвращает ненужное потребление ресурсов, уменьшает повторную обработку и повышает эффективность внутренних служб.
Отслеживайте шаблоны использования API и непрерывно оптимизируйте высокопроизводительные или неэффективные конечные точки. Определяет возможности повышения эффективности производительности, уменьшения использования ресурсов и снижения углеродного следа рабочей нагрузки.
Оценка стратегий отрисовки и выбор серверной или клиентской отрисовки на основе возможностей пользовательского устройства, сетевых условий и требований к рабочей нагрузке. Оптимизирует использование вычислительных ресурсов в клиентских и серверных средах, уменьшая ненужное потребление энергии и повышая общую эффективность рабочей нагрузки.
Используйте механизмы кэширования, централизованные на сервере или в браузере, чтобы свести к минимуму повторяющиеся операции отрисовки и обработки данных. Уменьшает объем вычислительных ресурсов, сетевого трафика и потребления ресурсов, что снижает влияние на окружающую среду доставки содержимого приложения.
Создание упрощенных и эффективных пользовательских интерфейсов путем минимизации ненужных компонентов, страниц и ресурсов мультимедиа. Уменьшает сетевой трафик, обработку данных и потребление вычислительных ресурсов, повышая общую эффективность энергии.
Оптимизируйте доставку контента, используя изображения и видео оптимального размера, избегая ненужной загрузки ресурсов и применяя системные шрифты там, где это целесообразно. Снижает использование пропускной способности, требования к обработке на стороне клиента и связанные выбросы углерода.
Улучшите навигацию и удобство поиска для пользователей, а также рассмотрите возможность предлагать ресурсоэффективные варианты взаимодействия, такие как упрощенные интерфейсы или темная тема. Сокращает объем ненужных данных и потребление энергии, помогая пользователям эффективнее взаимодействовать с приложением.

Оптимизация вычислительных ресурсов

Если вы не измеряете, как приложения используют ЦП, память и емкость обработки, вы можете неузнавательно развертывать неэффективный код или недостаточно использовать доступную инфраструктуру.

Recommendation Преимущество устойчивости
Профилирование рабочих нагрузок для понимания шаблонов параллелизма, использования ресурсов и возможностей оптимизации производительности или параллелизации. Улучшает эффективность вычислений и обеспечивает эффективное использование ресурсов, уменьшая ненужные затраты на энергию.
Оцените специализированные вычислительные параметры, такие как ресурсы на основе GPU, где они обеспечивают повышение эффективности. Может повысить эффективность обработки и сократить общие вычислительные ресурсы, необходимые для выполнения рабочих нагрузок.
Создайте базовые показатели ЦП и памяти и включите ориентированные на устойчивость тестирование, мониторинг, оповещения и шлюзы качества в конвейеры развертывания. Помогает на ранних этапах выявлять неэффективный код и чрезмерное потребление ресурсов, не допускать попадания нежизнеспособных рабочих нагрузок в продакшен и поддерживать непрерывное повышение эффективности рабочих нагрузок.

Компромисс. Ресурсы на основе GPU могут значительно повысить производительность и эффективность обработки для машинного обучения и высоко параллельных рабочих нагрузок, сокращая время выполнения и потенциально повышая эффективность энергии. Однако эти ресурсы обычно несут более высокие операционные затраты, чем альтернативные ресурсы на основе ЦП. Оцените эти параметры, чтобы гарантировать, что преимущества производительности оправдывают дополнительные расходы.

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

Уменьшение обхода сети

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

Recommendation Преимущество устойчивости
Используйте сети доставки содержимого (CDN), стратегии кэширования, включая кэширование в памяти, где это необходимо, и методы сжатия данных для уменьшения сетевого трафика и оптимизации доставки содержимого. Уменьшает потребление пропускной способности, нагрузку сервера, повторную обработку и энергию, необходимую для доставки содержимого приложения.
Развертывайте рабочие нагрузки и содержимое ближе к пользователям и сохраняйте зависимые ресурсы в одном облаке и регионе, где практически. Сводит к минимуму обход сети, снижает зависимость от общедоступной маршрутизации в Интернет, повышает производительность и снижает влияние перемещения данных на окружающую среду.
Регулярно просматривайте и настраивайте конфигурации кэширования, такие как параметры хранения кэша и истечения срока действия, чтобы повысить эффективность и использование ресурсов. Повышает эффективность кэша, уменьшает ненужные передачи данных и поддерживает текущее сокращение потребления энергии.

Компромисс. Такие методы оптимизации сети, как кэширование и сжатие, могут снизить требования к пропускной способности и улучшить результаты устойчивости, но они могут потребовать дополнительных вычислительных ресурсов, памяти или хранилища. Настройте параметры хранения кэша и стратегии сжатия, чтобы сбалансировать производительность, использование ресурсов и общие преимущества устойчивости.

Сокращение объема дискового пространства

Эффективная разработка хранилища играет ключевую роль в сокращении воздействия на окружающую среду облачных рабочих нагрузок путем минимизации ненужных операций хранения, передачи и обработки данных. Неэффективные методы хранения, такие как несжатые данные, плохо оптимизированные запросы, чрезмерные резервные копии и чрезмерно широкое ведение журнала, могут снизить эффективность энергии.

Неуправляемые точки восстановления резервных копий и чрезмерное хранение журналов могут автоматически накапливаться с течением времени, увеличивая объем хранилища и влияние на окружающую среду без пропорционального значения.

Recommendation Преимущество устойчивости
Применение сжатия хранилища, оптимизация запросов к базе данных (например, для База данных SQL Azure) и уменьшение ненужных операций передачи данных для повышения эффективности и производительности хранилища. Снижает требования к емкости хранилища, снижает потребление пропускной способности и уменьшает затраты на вычислительные ресурсы, связанные с обработкой и извлечением данных.
Сопоставляйте данные с подходящими уровнями доступа к хранилищу и политиками жизненного цикла, обеспечивая хранение часто используемых данных в горячем хранилище, а редко используемых данных — в холодном или архивном хранилище. Сводит к минимуму потребление энергии, сокращая ненужный доступ к данным высокой стоимости и оптимизируя использование ресурсов хранилища.
Реализуйте и регулярно просматривайте политики резервного копирования, точки восстановления и хранения журналов с помощью таких служб, как Azure Backup и Azure Monitor, чтобы предотвратить ненужные накопление данных. Снижает долгосрочный рост хранилища, сводит к минимуму хранение неиспользуемых данных и снижает влияние на окружающую среду хранения и обработки неиспользуемых данных.

Баланс с потребностями масштабируемости

Рабочие нагрузки, основанные на фиксированной или избыточной емкости, могут потреблять больше вычислительных ресурсов, чем необходимо, что приводит к недостаточному использованию энергии и неэффективному использованию энергии. Выбор более высоких уровней обслуживания для функций, которые используются не в полной мере, может привести к появлению неиспользуемых мощностей, которые всё равно влекут экологические и эксплуатационные затраты. Без регулярного обзора требований к масштабируемости организации могут накапливать инфраструктуру, которая превышает фактический спрос, уменьшая общую эффективность и производительность устойчивости.

Recommendation Преимущество устойчивости
Просмотрите решения платформы и уровня служб, чтобы обеспечить соответствие фактическим требованиям к рабочей нагрузке и шаблонам использования ресурсов. Уменьшает недоиспользуемую емкость вычислительных ресурсов и повышает общую эффективность оборудования.
Предпочитайте службы и архитектуры, поддерживающие динамическое масштабирование на основе спроса, а не фиксированной подготовленной емкости. Гарантирует, что ресурсы выделяются только при необходимости, сводя к минимуму простой вычислительных ресурсов и снижая потребление энергии.
Оцените, необходимы ли службы более высокого уровня для необходимых функций, и избегайте чрезмерной подготовки по возможности. Предотвращает выделение ненужных ресурсов и снижает влияние неиспользуемой или неиспользуемой инфраструктуры.

Компромисс. Службы более высокого уровня могут потребоваться для доступа к определенным функциям или возможностям независимо от фактического использования. В таких случаях организации должны находить баланс между функциональными требованиями и потенциальной неэффективностью, связанной с выделенными, но недоиспользуемыми мощностями.

Повышение эффективности в развертываниях

Конвейеры CI/CD могут стать скрытым источником ненужного потребления ресурсов. Повторяющиеся процессы сборки могут привести к избыточным циклам ЦП, длительности конвейера и увеличению сетевого трафика для извлечения зависимостей и передачи артефактов.

Recommendation Преимущество устойчивости
Реализуйте кэширование в конвейерах CI/CD для хранения и повторного использования результатов сборки и артефактов между запусками, если входные данные не изменились. Уменьшает повторяющиеся циклы вычислений, снижает время выполнения конвейера и уменьшает общее потребление энергии.
По возможности используйте локальное кэширование на самостоятельно размещаемых агентах CI/CD, чтобы свести к минимуму передачу данных по сети и передачу данных во внешние системы. Уменьшает сетевой трафик и связанное использование энергии при повышении эффективности и производительности сборки.

Компромисс. Кэширование вводит дополнительные требования к хранилищу и может потребоваться стратегия недопустимости кэша для обеспечения правильности. Плохо управляемые кэши могут привести к устаревшим выходным данным, поэтому стратегии кэширования должны быть тщательно разработаны для балансировки эффективности с надежностью сборки.

Использование современных технологий

Устаревшие приложения, которые вы не обновляете или модернизируете, могут работать неэффективно в текущей облачной инфраструктуре, потребляя больше вычислительных ресурсов, чем необходимо. Старые архитектуры могут не использовать современные возможности масштабируемости, автоматизации или энергоэффективной платформы. Однако усилия по модернизации могут потребовать значительных инженерных усилий и могут привести к риску или сложности, особенно при работе с устаревшими системами или тесно связанных зависимостей. Кроме того, частые обновления должны учитывать совместимость и стабильность работы, чтобы избежать сбоев.

Recommendation Преимущество устойчивости
Определение и модернизация устаревших приложений путем миграции на современные облачные архитектуры, такие как бессерверные или оптимизированные службы PaaS. Повышает эффективность вычислений, снижает нагрузку на инфраструктуру и использует более эффективные возможности платформы.
Обновляйте платформы, службы и операционные системы с помощью автоматизированных механизмов обновления, таких как управление обновлениями Cлужба автоматизации Azure. Обеспечивает, чтобы рабочие нагрузки получали преимущества от новейших улучшений производительности и энергоэффективности в современных версиях программного обеспечения.