Эффективность производительности заключается в поддержании взаимодействия с пользователем даже при увеличении нагрузки путем управления емкостью. Стратегия включает масштабирование ресурсов, определение потенциальных узких мест и оптимизацию для достижения пиковой производительности.
Эта модель зрелости поможет вам в стратегическом пути оптимизации производительности путем масштабирования ресурсов, выявления и оптимизации потенциальных узких мест и оптимизации для пиковых показателей производительности.
Сначала вы выберете нужные компоненты и установите целевые показатели производительности, после этого перейдете к измерению и мониторингу поведения рабочей нагрузки. По мере развития вы будете включать реальные отзывы пользователей для уточнения подхода, использовать рабочую аналитику для целевых улучшений и в конечном итоге добиться расширенной оптимизации с помощью экспериментов и автоматизации. Каждый этап основывается на предыдущей, преобразовав стратегию производительности из реактивного устранения неполадок в упреждающую инженерию эффективности.
Модель структурирована на пяти отдельных уровнях зрелости, каждая из которых имеет основную цель и набор основных стратегий. Используйте приведенные ниже вкладки, чтобы изучить каждый уровень. Не забудьте также проверить выделенные компромиссы и связанные риски по ходу выполнения.
Установите четкие ожидания производительности и выберите подходящие по размеру компоненты, соответствующие вашим требованиям.
Уровень 1 модели зрелости фокусируется на сборе ожиданий производительности и выборе облачных служб, которые помогают удовлетворить эти ожидания. На этом уровне вы изучите эти ресурсы и компоненты, чтобы найти оптимальный вариант. Приоритет сервисов, которые предоставляют только необходимые возможности производительности. Этот подход помогает управлять затратами и поддерживать скорость разработки.
Ключевые стратегии
Обратитесь к заинтересованным лицам, чтобы понять общие ожидания производительности рабочей нагрузки. Эти ожидания могут включать целевые объекты для времени загрузки страниц для веб-приложений или времени отклика для интерактивных систем. На этом этапе разработки рабочей нагрузки эти целевые показатели рассматриваются как рекомендации, а не жесткие требования, так как основное внимание не уделяется измерению метрик производительности. После сбора ожиданий рабочей нагрузки начните изучать типы ресурсов, которые могут соответствовать вашей рабочей нагрузке.
✓ Выбор соответствующих сетевых ресурсов
Оцените потребности сети в определении соответствующих служб и конфигураций для рабочей нагрузки. Рассмотрите сетевой трафик, пропускную способность, задержку и пропускную способность, чтобы убедиться, что сеть эффективно поддерживает вашу рабочую нагрузку. Использование частных виртуальных сетей и магистральных сетей для уменьшения задержки.
Обеспечьте даже распределение сетевого трафика, чтобы предотвратить перегрузку сервера и сократить время отклика. Оцените различные службы балансировки нагрузки , предоставляемые поставщиком облачных служб. Рассмотрим тип трафика, глобальную или региональную маршрутизацию, цели уровня обслуживания и определенные функции, такие как ускорение сайта и балансировка нагрузки с низкой задержкой.
Риск: Используйте время для полного изучения и понимания различных вариантов базовой сети. Последующие изменения в этой области могут потребовать полного перепроектирования и повторного развертывания.
✓ Выбор соответствующих вычислительных ресурсов
Оцените вычислительные потребности вашей рабочей нагрузки, включая тип экземпляра, масштабируемость и уровни обслуживания. Рассмотрите возможность контейнеризации для повышения производительности благодаря изоляции, эффективности ресурсов, быстрому времени запуска и переносимости.
Выберите службу вычислений , которая может соответствовать вашим потребностям, позволяя легко масштабироваться по мере развития рабочей нагрузки. Создание рабочей нагрузки — это итеративный процесс. Вы можете начать с малого, используя модели SKU с менее высокой производительностью и меньшее количество экземпляров. Обновите эти компоненты на более позднем этапе жизненного цикла рабочей нагрузки.
Компромисс: Взвесите ваши непосредственные потребности в вашем бюджете. Ищите возможности для завершения работы или освобождения вычислительных ресурсов, если они не используются.
✓ Выбор соответствующих служб хранилища данных
Определите потребности рабочей нагрузки для хранения, извлечения и управления данными. Рассмотрим такие характеристики:
Типы данных: Какие типы данных вы ожидаете, что рабочая нагрузка принимает, обрабатывает или хранит?
Объем: Какой объем данных вы ожидаете получать, обрабатывать или хранить?
Пропускная способность транзакций: Каковы требования к производительности для доступа к разным типам данных?
Последовательность: Каковы целевые показатели согласованности данных между типами данных?
Долговечность: Каковы целевые показатели устойчивости данных в разных типах данных?
Шаблоны доступа: Какие типы шаблонов доступа требуется для поддержки рабочей нагрузки? Например, для определенного компонента может потребоваться выполнить несколько операций записи, но мало операций чтения. Для другого компонента может потребоваться сделать противоположное.
На основе ответов на эти вопросы выберите лучшую службу данных для каждого варианта использования рабочей нагрузки.
Благодаря широкому спектру вариантов служб данных в облачных средах вы можете адаптировать дизайн для использования различных служб, чтобы лучше всего соответствовать функциям каждого компонента в рабочей нагрузке. Этот подход помогает оптимизировать производительность каждого компонента.
Компромисс: Не перенастраивайте компоненты данных, выбрав разные службы данных для компонентов, которые можно объединить в одно хранилище данных. Найдите баланс между производительностью, стоимостью и сложностью.
реализует комплексный мониторинг производительности, чтобы получить представление о поведении рабочей нагрузки и определить возможности оптимизации.
Уровень 2 пиллара эффективности работы сосредоточен на использовании сведений о рабочей нагрузке для управления оптимизацией производительности. Первым шагом является определение критически важных потоков рабочей нагрузки с точки зрения производительности. Затем разбийте рабочую нагрузку на компоненты и задайте измеримые целевые объекты и метрики, которые можно записать и проанализировать для будущих оптимизаций. Наконец, следует изучить шаблоны проектирования, которые помогут повысить эффективность производительности и выполнить начальное упражнение по планированию емкости. Эти действия помогут вам создать план для ближайшего будущего рабочей нагрузки. Такой подход гарантирует, что производительность не страдает по мере развития рабочей нагрузки.
Ключевые стратегии
Ранжирование и классификация потоков рабочей нагрузки является важной стратегией в каждой из Well-Architected платформы. Анализ потоков с точки зрения каждого компонента помогает определить области, которые необходимо оптимизировать. Вы можете сравнить эти оптимизации, чтобы определить, где инвестировать. Например, в некоторых сценариях проблемы безопасности для потока могут перевешивать проблемы с производительностью. После классификации и ранжирования потоков сосредоточьтесь на потоках, которые вы определяете как критически важные для начала планирования оптимизации. Критерии, характерные для производительности, которые помогут определить критически важные потоки:
Частота: Количество выполненных потоков, например поиск продукта.
Критичность: Степень важности, которую процесс имеет для общего успеха приложения, например, поиска профиля пользователя.
Риск: Уровень риска, который поток имеет на общую производительность, например создание сложного отчета.
Интенсивность данных: Количество давления, которое поток ставит на слой данных.
Интенсивность архитектуры: Степень взаимодействия потока с компонентами в рабочей нагрузке.
✓ Установите ключевые метрики для ресурсов и компонентов рабочей нагрузки, которые помогут вам удовлетворить целевые показатели.
Задайте целевые показатели производительности для компонентов и ресурсов рабочей нагрузки на основе исследований рынка, конкурентного анализа и опросов. Сосредоточьтесь на ключевых метриках, таких как время отклика, пропускная способность и задержка. Установите целевые объекты для различных компонентов, потоков пользователей, рабочих процессов, потоков данных, внешних зависимостей и общей производительности рабочей нагрузки.
Задайте реалистичные и измеримые целевые показатели для каждой метрики при сохранении ожиданий клиентов. Используйте процентили, такие как P99, P95 и P50, чтобы получить исчерпывающую перспективу. Выполните тестирование, чтобы установить базовую производительность, но не переувыполняйте оптимизацию.
Запишите все целевые показатели производительности в централизованном расположении, доступном как группам разработки, так и группам операций. Используйте панели мониторинга и отчеты, чтобы сделать целевые объекты видимыми и интерактивными.
Планирование емкости — это итеративный процесс, который следует регулярно проводить на протяжении жизненного цикла рабочей нагрузки. На этом этапе вы еще не сможете полностью ознакомиться со всеми используемыми технологиями или по-прежнему оценивать различные варианты. Эта неопределенность может ограничить возможность комплексного планирования будущих потребностей. Для этого первоначального упражнения по планированию емкости цель состоит в переходе от управления емкостью методом реагирования, которое включает добавление ресурсов для удовлетворения текущего спроса. Вместо этого основное внимание уделяется упреждающему планированию, где вы предвидите емкость, необходимую для определенного периода. Для достижения эффективного планирования емкости необходимо собирать и анализировать данные об использовании ресурсов, включая исторические шаблоны для существующих нагрузок. Используйте статистический анализ, анализ трендов и прогнозное моделирование для прогнозирования будущих потребностей. Убедитесь, что эти прогнозы соответствуют целям рабочей нагрузки.
Риск: В традиционной среде, основанной на использовании центров обработки данных, избыточное резервирование является общим подходом для планирования мощности. В облачной среде чрезмерная подготовка может быть тратой денег. Внимательно рассмотрите ваши бизнес-ожидания для разработки временной шкалы для добавления емкости таким образом, чтобы удовлетворить ваши потребности в производительности, не негативно влияя на ваш бюджет.
Существует множество распространенных шаблонов проектирования приложений, которые помогут оптимизировать рабочую нагрузку для повышения производительности. Вы можете добиться повышения производительности, добавив кэш или создав стратегию сегментирования. Полный список шаблонов, которые могут помочь вам улучшить рабочую нагрузку, см. в шаблонах проектирования облака.
Компромисс: Некоторые шаблоны проектирования могут добавить степень сложности в рабочую нагрузку. Сравните дополнительное бремя управления с повышением эффективности, чтобы определить, стоит ли реализовать конкретный шаблон.
Оптимизация кода повышает эффективность всей рабочей нагрузки. Задачи приложений выполняются быстрее и используют меньше вычислительных ресурсов, чтобы повысить производительность инфраструктуры. Рассмотрим следующие подходы к оптимизации кода:
Настройте мониторинг в вашем коде. Инструментирование кода помогает выявлять проблемы в производительности кода, записывая данные телеметрии во время выполнения. Этот процесс помогает выявлять и устранять проблемы в начале цикла разработки.
Определите критические участки. Инструментирование кода помогает определить критически важные участки. Критически важные или часто используемые участки программы требуют высокой производительности и низкой задержки.
Оптимизация логики кода. Поиск способов упрощения логики кода для повышения эффективности. Удалите ненужные вызовы функций и операции обработки данных. Свести к минимуму операции ведения журнала, сетевые запросы и выделение памяти. Найдите возможности для использования более производительных пакетов SDK и библиотек.
Используйте конкурентность и параллелизм. Использование конкурентности и параллелизма может повысить эффективность вашего приложения за счёт эффективного управления несколькими задачами. Конкурентность управляет несколькими задачами путем переключения между ними, в то время как параллелизм обрабатывает несколько задач одновременно.
Сбор данных о производительности приложения, таких как пропускная способность, задержка и время завершения, чтобы определить узкие места и улучшить взаимодействие с пользователем. Для упрощения анализа используйте распределенную трассировку и структурированное ведение журнала. Сбор метрик и журналов для всех ресурсов. Используйте такие средства, как Azure Monitor Insights для мониторинга производительности. Собирать данные баз данных и хранилищ, а также метрики производительности для виртуальных машин. Храните все собранные данные в одном месте для простого доступа и анализа.
Риск: Убедитесь, что вы настроили политики смены журналов и хранения, так как объем собираемых и хранения данных может быстро увеличиваться и затраты могут неожиданно увеличиваться.
Используйте реальные инсайты пользователей и отзывы системы для повышения целевой производительности, которые улучшают пользовательский опыт.
Уровень 3 основного компонента "Эффективность производительности" посвящен включению внутренних и внешних сигналов для уточнения целевых показателей производительности, проектирования рабочих нагрузок и конфигураций, а также связанных операционных методик. На более ранних уровнях зрелости можно задать целевые показатели производительности и конфигурации на основе потребностей скорости разработки и внутреннего тестирования. По мере развития рабочей нагрузки включение отзывов от внутренних и внешних пользователей и заинтересованных лиц помогает обеспечить реалистичные целевые показатели производительности рабочей нагрузки. Этот подход позволяет выполнять эти цели без ущерба для других основных компонентов.
Ключевые стратегии
Перемещение в рабочую среду означает, что вы должны быть готовы немедленно реагировать на проблемы с производительностью. Надежный мониторинг производительности и полезные, действенные оповещения помогают гарантировать, что правильные команды уведомляются о проблемах и могут быстро приступить к расследованию и устранению проблем. Следующие стратегии помогут определить действия реагирования на проблемы производительности.
Настройте оповещения о производительности на платформе мониторинга.
Настройте оповещения, чтобы обеспечить предупреждения, доступные для действий, если компонент подвержен риску проблемы с производительностью. Такой подход может включать настройку порога со статическим значением или его базированием на изменениях тренда для определенной метрики. Определите значение триггера с помощью непрерывного тестирования, чтобы предотвратить ложные срабатывания.
Анализ журналов и метрик производительности для выявления основных причин проблем.
Информируйте заинтересованных лиц о статусе и прогрессе решения проблем с производительностью.
Создайте платформу для определения приоритетов проблем с производительностью на основе их влияния.
Задокументируйте все шаги, процессы и рекомендации по реагированию на проблемы с производительностью.
В рамках стратегии мониторинга производительности убедитесь, что вы специально отслеживаете производительность потоков. Поймите влияние каждого потока на производительность рабочей нагрузки. Для потоков определите потенциальные проблемы с помощью аналитики поведения пользователей. Отслеживайте время отклика, ошибки и другие метрики для оптимизации критически важных потоков. Анализ журналов для отслеживания производительности потоков и выявления проблем.
Регулярно просматривайте внутренние и внешние отзывы пользователей о производительности, чтобы оценить, соответствуют ли целевые показатели ожиданиям. Рассмотрите возможность использования опроса удовлетворенности клиентов, систем комментариев и целевого тестирования пользователей для получения полезных отзывов.
Если это целесообразно для вашей нагрузки, используйте подход реального мониторинга пользователей (RUM). Этот подход поможет определить, соответствует ли взаимодействие с пользователем вашим ожиданиям в отношении производительности.
Application Insights и Диспетчер трафика Azure предоставляют функциональные возможности для записи данных RUM для веб-сайтов.
Отслеживайте производительность приложения с помощью метрик, которые соответствуют вашим целям и целевым объектам. Сравните эти метрики с отзывом о пользователях и бизнес-заинтересованных лицах, чтобы убедиться, что вы собираете нужные данные. Сохраняйте метрики, связанные с бизнесом, отдельно от данных о производительности для упрощения анализа, даже если существуют некоторые перекрытия. Такой подход делает данные более понятными и помогает командам принимать обоснованные решения.
Анализ тенденций помогает спланировать требования к емкости. Обновите прогнозы, чтобы соответствовать целям рабочей нагрузки и требованию пользователей, чтобы у вас всегда было достаточно ресурсов. Регулярно просматривайте соглашения на уровне обслуживания поставщика облачных служб, чтобы убедиться, что вы можете добавлять ресурсы по мере необходимости без ограничения службы.
По мере развития планирования емкости тесно сотрудничайте с лицами, принимающими бизнес-решения, чтобы оставаться в соответствии с бизнес-целями.
Компромисс: Баланс планирования производительности с учетом требований надежности и бюджета. Обратитесь к заинтересованным лицам, чтобы найти практические компромиссы при конфликте требований.
✓ Оптимизация стратегии масштабирования
Используйте расширенные методы масштабирования для оптимизации использования ресурсов. Настройте пороговые значения, используемые для операций масштабирования на основе внутренних и внешних отзывов. Автоматизация построения для выполнения операций масштабирования для компонентов, в которых отсутствуют собственные функции автоматического масштабирования. Используйте запланированное масштабирование для компонентов, которые легко используются или бездействуют в прогнозируемое время в течение дня, недели или месяца. Непрерывно оценивает конфигурации масштабирования и делает уточнения, чтобы лучше соответствовать изменяющимся требованиям рабочей нагрузки.
✓ Оптимизация управления данными
Неэффективность управления данными может привести к проблемам с производительностью в рабочей нагрузке. Используйте следующие стратегии для оптимизации ресурсов данных.
Разделите большие наборы данных или рабочие нагрузки на небольшие части, называемые секциями, для отдельного хранилища или обработки. Этот подход обеспечивает параллельную обработку, сокращает количество спорных процессов и улучшает время использования ресурсов и обработки. Он также распределяет данные между несколькими устройствами хранения, что снижает индивидуальную нагрузку и повышает общую производительность. Сопоставляйте типы разделения с конкретными вариантами использования. Секционирование может быть горизонтальным, вертикальным или функциональным в зависимости от потребностей системы. Дополнительные сведения о шаблонах проектирования, использующих секционирование, см. в шаблонах проектирования производительности.
Оптимизируйте запросы с помощью таких функций, как анализ производительности запросов для базы данных SQL Azure.
Убедитесь, что модель данных хорошо подходит для рабочей нагрузки, учитывая такие факторы, как нормализация, индексирование и секционирование.
Выравнивайте инфраструктуру хранилища с требованиями к рабочей нагрузке, оптимизируя такие параметры, как размер буфера и кэширование.
Проектирование тестов производительности, которые помогут вам понять, как рабочая нагрузка выполняется в различных рабочих сценариях. На основе критериев и метрик выполняются различные тесты, такие как нагрузочное, стресс-тестирование, пропитывание, пиковое и совместимость. Измерение того, как каждый тест влияет на производительность рабочей нагрузки. Метрики должны включать такие аспекты производительности, как время отклика, пропускная способность и память и использование ЦП. Определите критерии принятия, соответствующие целевым объектам. Дополнительные сведения см. в рекомендациях по тестированию производительности.
Тестирование производительности должно выполняться в выделенной среде в рамках общей стратегии тестирования. Этот подход включает в себя тестирование надежности и безопасности.
Просмотрите результаты теста, чтобы определить узкие места и неэффективность. Сравните результаты с целями, предварительно заданными критериями или предыдущими запусками.
Компромисс: Среды тестирования могут быть основными драйверами затрат. Разработка тестовых сред с использованием только необходимых ресурсов для точного эмуляции конкретного сценария. Чтобы свести к минимуму затраты на использование, убедитесь, что ресурсы завершаются или удаляются после тестирования.
Риск: Если необходимо использовать рабочие данные, убедитесь, что конфиденциальные данные удаляются перед копированием в тестовые среды. Используйте искусственные данные, когда это практично.
Еще одна важная функция тестирования — создать базовые показатели производительности. Базовые показатели предоставляют эталонные точки для сравнения производительности с течением времени. Определите метрики производительности и используйте их в качестве базовых метрик. Оцените будущие показатели производительности с помощью этих базовых показателей, чтобы определить улучшения или снижение производительности. Регулярно просматривайте и обновляйте исходные данные, чтобы фиксировать обновленные элементы конструкции и функции. Устаревшие базовые показатели могут привести к нереалистичным и недостижимым целям по мере добавления рабочих нагрузок и новых функций.
Способствовать непрерывному улучшению, где команды учатся в рабочей среде и прослушивают внутреннюю и внешнюю обратную связь. Оснастите команды рабочей нагрузки необходимыми навыками и мышлением для оптимизации производительности и обработки колебаний спроса. Выделение времени для мониторинга и решения проблем с производительностью. Задайте четкие ожидания с видимыми целевыми показателями производительности, базовыми показателями и допустимыми порогами отклонения.
преобразует аналитические сведения о рабочей среде в систематические улучшения производительности с помощью принятия решений на основе данных и упреждающей оптимизации.
Уровень 4 модели зрелости предполагает, что рабочая нагрузка находится в производственной среде и работает достаточно долго, чтобы получить полезные сведения о том, как она обычно функционирует. На этом уровне следует использовать эти сведения для внесения необходимых обновлений и дальнейших улучшений.
Используйте механизмы телеметрии и обратной связи для выявления проблем с производительностью, таких как узкие места, и разработки планов по улучшению. Используйте зрелые методики управления изменениями, чтобы убедиться, что при внесении изменений в среду вы не создаете дополнительные проблемы непреднамеренно.
Помните, что итеративные улучшения достигают точки уменьшения возврата. Вам нужно решить, когда вы достигнете рабочего состояния, соответствующего вашим требованиям. Приемлемое состояние заключается в том, что затраты и бремя устранения неэффективности не перевешивают незначительные улучшения производительности, которые вы получаете.
Помните, что любые изменения, внесенные в среду для повышения производительности, непосредственно влияют на другие основные аспекты платформы Well-Architected Framework. Оптимизация затрат является наиболее распространенным компромиссом. Тщательно оцените влияние других основных компонентов, прежде чем повысить производительность, чтобы обеспечить правильный баланс для ваших требований.
Ключевые стратегии
На уровне 4 необходимо отслеживать и тестировать производительность в рабочей среде. У вас должны быть хорошо разработанные планы и сценарии тестирования, а также подготовленные тестовые данные. Цель тестирования заключается в выявлении потенциальных проблем с производительностью до их возникновения в рабочей среде. Таким образом, мониторинг и тестирование должны быть строгими, стандартизированными и тщательно документированы. Рассмотрите следующие рекомендации.
Пересматривайте базовые показатели непрерывно. Примените то, что вы узнаете из мониторинга производительности, чтобы гарантировать, что базовый план отражает фактические метрики производительности. Важно поддерживать базовые показатели, так как тесты выполняются на этом базовом уровне, чтобы гарантировать, что развертывания, такие как обновления компонентов, не влияют на производительность.
Смена влево в тесте. Интегрируйте тестирование на более ранних этапах цикла разработки, чтобы выявить потенциальные проблемы до их появления в рабочей среде.
Смена вправо в тесте. Тестирование в рабочей среде. Чтобы убедиться, что тестирование не является разрушительным, используйте такие стратегии, как сине-зеленые развертывания и тестирование A/B.
Используйте искусственные транзакции в тестировании. Искусственные транзакции позволяют согласованно тестировать взаимодействие с пользователем в реальном мире. Эти тесты помогают выявить проблемы и потенциальные улучшения, прежде чем пользователи будут затронуты.
Автоматизация мониторинга и тестирования. Используйте проверенные в отрасли средства для автоматизации мониторинга и оповещений на основе базовых показателей и тестирования производительности. Автоматизация сокращает действия вручную и обеспечивает согласованность.
Компромисс: Тестирование в рабочей среде может быть сложным и обычно требует значительных усилий от команд DevOps. Эти требования могут повлиять на скорость разработки и другие операционные функции. Развертывание синия-зеленая и A/B-тестирование могут также увеличивать затраты на рабочую нагрузку, используя дублирующие ресурсы во время тестирования. Включите эти рекомендации в планирование бюджета и разработки.
✓ Реализация расширенных оптимизаций управления данными
На уровне 4 у вас должно быть много стратегий оптимизации управления данными. Используйте ваш производственный опыт для дальнейшей оптимизации, точной настройки управления данными и обеспечения эффективной работы рабочих нагрузок по мере их развития.
Используйте сжатие данных без потерь и с потерями, чтобы уменьшить их объем. Этот подход помогает сэкономить место в хранилище и использование пропускной способности и ускорить передачу данных и время доступа.
Разработка и реализация политики архива и удаления для данных, которые редко используются или больше не используются. Переместите данные в отдельное, менее дорогое хранилище или удалите их полностью, чтобы сэкономить место в хранилище и использование пропускной способности.
Точно настройте стратегии кэширования и шардинга на основе опыта эксплуатации.
Реплицировать данные в регионы, близкие к вашим пользователям, чтобы уменьшить задержку. Некоторые технологии баз данных, такие как Azure Cosmos DB, предоставляют доступные для чтения и записи реплики в нескольких регионах. Реплики снижают задержку при развертывании рабочей нагрузки в разных регионах.
Включите мониторинг производительности хранилища в решение для мониторинга рабочей нагрузки. Проблемы с производительностью могут быстро возникать при нарушении ограничений хранилища. Многие облачные сервисы хранения данных ограничивают скорость при пересечении пороговых значений, что приводит к узким местам, влияющим на функциональность последующих приложений. Мониторинг производительности хранилища и отслеживание тенденций позволяет заранее избежать ограничений.
✓ Оптимизация критически важных потоков через изоляцию
При практическом использовании изолируйте критически важные потоки, чтобы предотвратить состязание ресурсов и упростить управление. Рассмотрим следующие стратегии.
Выделить вычислительные ресурсы, хранилище и сетевые ресурсы для критически важных потоков.
Используйте подходы к контейнеризации для изоляции критически важных потоков на программном или логическом уровне.
Явно выделите емкость для ЦП, памяти и ввода/вывода диска к критически важным потокам, чтобы обеспечить их правильное распределение.
Компромисс: Изоляция потоков через выделенные ресурсы дороже, чем совместное использование ресурсов между потоками. Прежде чем реализовать этот подход, выполните анализ преимущества затрат, чтобы убедиться, что это лучший подход для вашего варианта использования.
Усовершенствуйте оптимизации кода, основанные на опыте эксплуатации.
Вернитесь к оптимизации кода, сделанной вами ранее в процессе разработки вашей рабочей нагрузки, чтобы найти области, требующие дальнейшего улучшения. Например, теперь вы должны иметь данные телеметрии из рабочей среды, которые помогут вам найти неэффективные ошибки, такие как утечки памяти. Вы также можете подтвердить горячие пути, которые вы определили с помощью данных рабочей среды выполнения, или найти непредвиденные горячие пути.
✓ Оптимизация операционных задач
Операционные задачи, такие как сканирование вирусов, ротация секретов, резервное копирование, оптимизация индекса, включая его реорганизацию или перестроение, а также развертывание, могут повлиять на производительность вашей рабочей нагрузки. Оптимизация их эффективности обеспечивает плавную работу процесса. Рассмотрим следующие стратегии оптимизации этих типов задач:
Точную настройку операционного инструментария. Проверьте и понять, как важные средства, такие как мониторинг целостности файлов и сканирование вирусов, влияют на производительность. Затем настройте конфигурации для них. Например, создайте списки исключений для сканирования вирусов, чтобы свести к минимуму их продолжительность.
Настройка операций базы данных. Поиск возможностей для точной настройки операций, таких как резервные копии баз данных, изменения схемы, настройка производительности и мониторинг. Используйте собственные средства, такие как автоматическая настройка в Базе данных SQL Azure , чтобы помочь в этом.
Изучите и проверьте новые функции платформы, которые становятся доступными для определения того, могут ли они помочь вам повысить эффективность. Постоянно отслеживайте отзывы и показатели производительности от этих новых дополнений, чтобы совершенствовать свой подход.
Компромисс: Учитывайте, как ваша облачная платформа упаковывает функции в SKU. Некоторые SKU, обеспечивающие более высокую производительность, могут быть избыточными для вашего текущего сценария использования, но они могут сэкономить время и усилия при будущей миграции.
Компромисс: Внедрение некоторых типов служб может означать перенос приложения или данных, что может привести к простою для завершения миграции. В рамках оценки определите, допускается ли необходимое время простоя для успешной миграции.
✓ Приоритет усилий по оптимизации
Упреждающее оптимизацию производительности означает повышение эффективности рабочей нагрузки до возникновения проблем путем выявления узких мест и реализации оптимизаций. На основе анализа внесите конкретные улучшения с помощью изменений кода, корректировки инфраструктуры или обновлений конфигурации.
обеспечивает пиковую производительность с помощью экспериментов, автоматизации и передовых методов оптимизации, которые обеспечивают измеримую бизнес-ценность.
Уровень 5 модели зрелости фокусируется на определении возможностей для повышения производительности в рабочей нагрузке. Подход на основе экспериментов к оптимизации. Ознакомьтесь с такими областями разработки рабочей нагрузки, как методики развертывания, мониторинг и отладка, а также операционная автоматизация, чтобы найти дальнейшие улучшения. Применяйте подход к непрерывному улучшению, регулярно просматривая разработку рабочих нагрузок и операционные методики. Используйте установленные процессы управления изменениями, чтобы обеспечить безопасную и эффективную реализацию улучшений.
Ключевые стратегии
Упреждающий подход к повышению эффективности с помощью экспериментов. Начните с гипотезы обновления подхода к рабочей нагрузке, которая, по вашему ожиданию, приведет к измеримому улучшению производительности на основе данных о наблюдаемой производительности, выявляющих узкие места или неэффективность. Создайте тестовую среду, которая тесно имитирует реальные условия как можно больше, чтобы проверить или опровергнуть гипотезу. После подтверждения гипотезы оцените отдачу от инвестиций (ROI) изменения, чтобы решить, стоит ли реализовать. Включите все основные компоненты Azure Well-Architected Framework в оценку roI. Если компромиссы, которые необходимо сделать для других столпов приемлемы, то изменение, скорее всего, стоит проводить.
✓ Оптимизация развертывания и выпусков функциональности
На уровне 5 у вас должен быть стандартизированный процесс обновления, который надежно работает. На этом уровне переоценьте процессы, чтобы определить, подходит ли текущая стратегия для эффективной работы. Оцените, соответствует ли сине-зеленая, канарейка или другая модель развертывания наилучшим образом потребностям вашей организации. Рекомендуется использовать флаги функциональности для упрощения включения и отката функций в определенные группы пользователей. Убедитесь, что стратегия резервного копирования поддерживает быстрое восстановление до известного состояния.
✓ Оптимизация процессов мониторинга и отладки
Сбор журналов и телеметрии от компонентов, по сути, влияет на производительность. Измерение того, как платформа мониторинга влияет на рабочую нагрузку, включая такие элементы, как ведение журнала, телеметрия, инструментирование и удаленная отладка. Определите возможности оптимизации. Если любой из этих процессов снижает производительность больше, чем они повышают наблюдаемость, рассмотрите возможность перенастройки или отключения этих процессов. В рамках практик непрерывного улучшения регулярно просматривайте собранные данные мониторинга, чтобы убедиться, что вы собираете только наиболее ценную информацию для необходимых аналитических сведений о производительности.
Повторно оцените оповещение о производительности, чтобы определить, получают ли вы только ценные оповещения. Удалите оповещения, которые недоступны для действий и перенастройки оповещений, которые не имеют достаточной информации, чтобы четко понять характер проблемы производительности и затронутых компонентов.
✓ Развертывание автоматизации операций
Ищите возможности для расширения автоматизации операционных задач, чтобы добиться дальнейшей эффективности. Вы должны иметь множество повторяющихся рабочих задач, автоматизированных на уровне 5, поэтому ознакомьтесь с операциями, чтобы определить другие ценные целевые объекты автоматизации. Рассмотрим следующие задачи, связанные с производительностью:
Тестирование производительности: Используйте хорошо установленные отраслевые средства для имитации рабочих нагрузок.
Развертывания: Реализуйте средства непрерывной интеграции и непрерывного развертывания для согласованных и эффективных развертываний.
Управление инцидентами: Автоматизация маршрутизации оповещений, создания билетов и назначений.
Действия по исправлению: Автоматизируйте такие действия, как перезапуск служб и настройка выделения ресурсов.
Механизмы самовосстановления: Создание возможностей для автоматического устранения известных проблем с производительностью.