Поделиться через


Рекомендации по оптимизации затрат на масштабирование

Применяется к этой рекомендации по оптимизации затрат Azure Well-Architected Framework:

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

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

Определения

Термин Определение
Автомасштабирование Подход масштабирования, который автоматически добавляет или удаляет ресурсы при выполнении набора условий.
Метрики затрат Числовые данные, связанные с затратами на рабочую нагрузку.
Уменьшение масштаба Стратегия вертикального масштабирования, которая перемещается на более низкий номер SKU, чтобы обеспечить меньше ресурсов для рабочей нагрузки.
Горизонтальное уменьшение масштаба Стратегия горизонтального масштабирования, которая удаляет экземпляры для предоставления меньшего объема ресурсов рабочей нагрузке.
Горизонтальное увеличение масштаба Стратегия горизонтального масштабирования, которая добавляет экземпляры для предоставления дополнительных ресурсов рабочей нагрузке.
Единица масштабирования Группа ресурсов, масштабируемых пропорциональным образом.
Увеличение масштаба Стратегия вертикального масштабирования, которая перемещается на более высокий номер SKU для предоставления дополнительных ресурсов рабочей нагрузки.
Номер единицы хранения (номер SKU) Уровень служб для службы Azure.
Данные об использовании Данные об использовании — это прямая информация (реальная) или непрямая или представительная информация (прокси-сервер) о том, сколько используется задача, служба или приложение.

Основные стратегии проектирования

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

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

Оценка горизонтального масштабирования и увеличения масштаба

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

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

  • Сбор данных об использовании: сбор фактических рабочих данных или прокси-данных, представляющих шаблоны использования рабочей нагрузки и использование ресурсов. Эти данные должны включать такие метрики, как использование ЦП, использование памяти, сетевой трафик и любые другие соответствующие метрики, влияющие на стоимость масштабирования.

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

  • Сбор данных об использовании: сбор фактических рабочих данных или прокси-данных, представляющих шаблоны использования рабочей нагрузки и использование ресурсов. Эти данные должны включать такие метрики, как использование ЦП, использование памяти, сетевой трафик и любые другие соответствующие метрики, влияющие на стоимость масштабирования.

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

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

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

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

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

Оптимизация автомасштабирования

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

  • Анализ текущей политики автомасштабирования: понимание существующей политики и его поведения в ответ на различные уровни нагрузки.

  • Ознакомьтесь с нефункциональными требованиями: определите конкретные нефункциональные требования, которые необходимо учитывать, например время отклика, использование ресурсов или затраты.

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

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

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

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

Использование масштабирования на основе событий

Автоматическое масштабирование на основе событий позволяет приложению динамически настраивать ресурсы на основе определенных событий или триггеров, а не традиционных метрик, таких как использование ЦП или памяти. Например, kubernetes на основе событий автомасштабирование (KEDA) может масштабировать приложения на основе масштабируемых модулей, таких как длина раздела Kafka. Точность помогает предотвратить ненужные колебания масштабирования и потери ресурсов. Высокий уровень точности в конечном счете оптимизирует затраты. Чтобы использовать масштабирование на основе событий, выполните следующие действия.

  • Выберите источник событий: определите источник событий, который активирует масштабирование единицы масштабирования. Источник может быть очередью сообщений, платформой потоковой передачи или любой другой системой, управляемой событиями.

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

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

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

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

  • Тестирование и мониторинг. Проверьте поведение реализации масштабирования на основе событий, проверив его с различными сценариями событий. Отслеживайте действия масштабирования и убедитесь, что действия соответствуют вашим ожиданиям.

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

Оптимизация спроса и предложения

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

Выгрузка спроса

Разгрузка спроса относится к практике распространения или передачи спроса на ресурсы и службы. Вы можете использовать различные технологии или стратегии:

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

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

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

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

  • Разгрузка базы данных. Уменьшение нагрузки на основной сервер приложений путем разгрузки операций базы данных на отдельный сервер базы данных или специализированную службу. Например, используйте CDN для кэширования статического содержимого и кэш Redis для кэширования динамического содержимого (данных из базы данных). Такие методы, как сегментирование баз данных, реплики чтения или использование управляемых служб баз данных, также могут снизить нагрузку.

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

Сокращение спроса

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

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

  • Анализ требований к рабочей нагрузке: оцените конкретные требования рабочей нагрузки, включая ожидаемые шаблоны спроса, пиковые нагрузки и потребности ресурсов.

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

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

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

Используйте следующие шаблоны проектирования для снижения спроса:

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

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

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

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

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

  • Разгрузка шлюза. Этот шаблон выгружает обработку запросов на устройстве шлюза, перенаправляя затраты с ресурсов на узел в реализацию шлюза. Использование этого шаблона проектирования может привести к снижению стоимости владения в централизованной модели обработки.

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

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

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

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

  • Регулирование. Этот шаблон устанавливает ограничения скорости (ограничения скорости) или пропускной способности входящих запросов к ресурсу или компоненту. Он помогает информировать моделирование затрат и может быть привязан непосредственно к бизнес-модели приложения.

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

Контрольная поставка

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

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

Компромисс. Более строгие ограничения могут привести к пропущенным возможностям масштабирования при увеличении спроса, потенциально влияя на взаимодействие с пользователем. Это может привести к завершению работы или не может реагировать на нагрузку. Важно обеспечить баланс между оптимизацией затрат и обеспечением достаточного объема ресурсов для удовлетворения бизнес-потребностей.

Упрощение функций Azure

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

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

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

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

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

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

  • Разгрузка поставок: в Azure есть современная облачная сеть доставки содержимого (CDN), называемая Azure Front Door и службами кэширования (Кэш Azure для Redis и Azure HPC Cache). CDN кэширует содержимое ближе к конечным пользователям, уменьшая задержку сети и повышая время отклика. Кэширование сохраняет копию данных перед основным хранилищем данных, уменьшая потребность в повторных запросах на серверную часть. Используя CDN и службы кэширования, вы можете оптимизировать производительность и уменьшить нагрузку на серверах для потенциальной экономии затрат.

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

    Управление API может ограничивать и регулировать запросы. Возможность регулирования входящих запросов — ключевая роль службы управления Azure API. Контролируя частоту запросов или общий объем запросов либо передаваемых данных, служба управления API позволяет поставщикам API предотвращать злоупотребление API и предлагать различные уровни API.

Контрольный список оптимизации затрат

Ознакомьтесь с полным набором рекомендаций.