Рекомендации по оптимизации затрат на поток

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

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

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

Определения

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

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

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

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

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

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

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

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

Создание инвентаризации потоков

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

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

  2. Визуализация потоков. Чтобы получить более четкую перспективу, визуализировать результаты, возможно, на блок-схемах или схемах. Визуализации помогают увидеть взаимозависимости между компонентами. Рассмотрите возможность использования такого средства, как Visio, чтобы помочь вам с визуализациями.

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

Определение приоритетов потоков

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

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

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

  • Рассмотрите метрики потоков. Если вы пытаетесь определить приоритеты потоков, рассмотрите назначенные им цели доступности и восстановления. Критически важные потоки часто имеют требования к высокой доступности и соглашения об уровне обслуживания (SLA). Потоки, связанные с более низкой RPO и RTO, более важны, чем потоки с более высоким значением RPO и RTO.

Оптимизация независимых потоков

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

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

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

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

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

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

Разделение разнородных потоков

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

Рассмотрите возможность разделения разнородных потоков, которые в настоящее время объединены. Такое разделение повышает масштабируемость, отказоустойчивость и адаптируемость, а также упрощает затраты. Гарантируя, что каждый поток работает независимо, вы снижаете риски, связанные с помехами, и сможете более эффективно распределять ресурсы в зависимости от приоритета каждого потока. Например, предположим, что вы используете CRM (поток пользователя) с подсистемой данных (потоком данных). Трафик пользователей в систему CRM в рабочее время может замедлить работу обработчика данных. При разделе потоках обработчик данных может масштабировать каждый компонент или службу независимо в зависимости от нагрузки. Это разделение оптимизирует выделение ресурсов и сокращает затраты.

Объединение похожих потоков

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

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

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

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

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

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

Непрерывный мониторинг потоков

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

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

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

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

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

Упрощение поддержки Azure

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

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

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

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

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