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

Применяется к этой рекомендации по повышению эффективности производительности Azure Well-Architected Framework:

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

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

Определения

Термин Определение
"Сине-зеленое" развертывание Стратегия развертывания, которая использует две идентичные среды и управляет направлением трафика в новые развертывания (зеленые развертывания).
Перестроение индекса базы данных Действие обслуживания, которое удаляет и повторно создает индекс.
Реорганизация индекса базы данных Действие обслуживания, оптимизирующее текущий индекс базы данных.
Схема базы данных Общая структура базы данных и ее связи с другими данными.
Слот развертывания Функция Служба приложений Azure, которая позволяет развертывать динамические приложения с собственными именами узлов.
Обновления на месте Процесс обновления компонента или приложения без замены или переноса в новую среду.
Инфраструктура как код (IaC) Описательная модель для определения и развертывания инфраструктуры, включая сети, виртуальные машины, подсистемы балансировки нагрузки и топологии подключений.

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

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

Учетная запись для операционных задач

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

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

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

Оптимизация развертываний

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

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

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

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

  • Разверните новую среду. Настройте новую среду (зеленую) вместе с существующей (синей) с обновленной версией приложения.

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

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

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

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

  • Повторите процесс. Для будущих развертываний измените роли синей и зеленой сред. Развертывание изменений в новой синей среде, их проверка, оркестрация перехода трафика и списание старой зеленой среды.

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

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

Оптимизация обновлений

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

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

Оптимизация инструментов

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

Оптимизация операций с базой данных

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

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

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

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

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

Оптимизация мониторинга и отладки

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

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

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

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

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

Azure Front Door и диспетчер трафика Azure позволяют реализовать стратегию сине-зеленого развертывания. Некоторые службы вычислений Azure также поддерживают расширенные стратегии развертывания, такие как сине-зеленые развертывания. Вы можете объединить эти службы со стратегией переключения трафика или потепления экземпляров, чтобы снизить влияние развертывания на производительность.

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

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

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

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