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

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

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

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

Определения

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

Ключевые стратегии проектирования

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Рассмотрите возможность масштабирования на основе событий

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

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

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

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

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

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

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

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

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

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

Запрос на разгрузку

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Блок управления

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

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

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

Упрощение поддержки 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 кэширует содержимое ближе к конечным пользователям, уменьшая задержки в сети и уменьшая время отклика. При кэшировании копия данных хранится перед хранилищем данных main, что снижает потребность в повторных запросах к серверной части. С помощью CDN и служб кэширования можно оптимизировать производительность и снизить нагрузку на серверы для потенциальной экономии средств.

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

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

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

См. полный набор рекомендаций.