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

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

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

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

Определения

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

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

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

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

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

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

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

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

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

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

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

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

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

Приоритет потоков

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

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

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

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

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

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

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

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

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

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

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

Отдельные разнородные потоки

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

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

Объединение аналогичных потоков

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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