Принципы проектирования эффективности производительности

Эффективность производительности — это способность рабочей нагрузки адаптироваться к изменениям требований. Рабочая нагрузка должна быть в состоянии справиться с увеличением нагрузки без ущерба для взаимодействия с пользователем. И наоборот, при снижении нагрузки рабочая нагрузка должна экономить свои ресурсы. Емкость, которая указывает на доступность ресурсов (ЦП и память), является важным фактором.

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

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

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

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

Согласование реалистичных целевых показателей производительности

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

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

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

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

Придерживайтесь рекомендаций по определению целевых объектов на уровне макросов, даже если они приблизительные или в пределах диапазона.

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

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

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

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

Поддерживайте широкую перспективу и избегайте детализированного анализа на данном этапе.

Четко указывайте , что представляет приемлемую производительность на основе инвестиций.

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

Наличие бизнес-контекста для функциональных и нефункциональных требований может выявить изменения в структуре других основных компонентов Azure Well-Architected и помочь вам найти обоснованные компромиссы.

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

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

Определите допустимость производительности каждого потока как диапазон от желательных до неприемлемой производительности.

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

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

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

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

Оцените ожидания спроса и предложения , а также ограничения, которые накладывают бизнес-ограничения.

Внедрение перспектив роста.
Модель производительности дает представление о оптимальном использовании ресурсов и помогает с стратегическим планированием.

Отраслевые стандарты помогают с бенчмаркингом.

Будущая проверка правописания гарантирует, что цели производительности остаются актуальными и могут адаптироваться к изменениям.

Проектирование в соответствии с требованиями к емкости

Значок цели Обеспечение достаточного объема предложения для удовлетворения ожидаемого спроса.

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

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

Подход Преимущество
Оцените требования к эластичности для определенных потоков.

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

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

Рассмотрим функции , которые могут соответствовать требованиям к масштабируемости.

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

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

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

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

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

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

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

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

Определите процесс для операции, описанный в плане тестирования производительности.

Рассмотрите и определите приоритеты тестовых случаев в плане. Сосредоточьтесь на случаях, которые предоставляют ценные аналитические сведения о целевых показателях производительности и согласовывают планирование ресурсов.
Убедитесь, что тестируются правильные аспекты системы.

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

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

Достижение и поддержание производительности

Значок цели Защита от снижения производительности во время использования системы и по мере ее развития.

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

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

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

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

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

Всегда будьте готовы пересмотреть и сбросить ожидания с заинтересованными лицами.

Подход Преимущество
Интеграция стандартных тестов производительности в Azure Pipelines.

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

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

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

Использование искусственных транзакций в рабочей среде.

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

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

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

Ваши усилия по оптимизации зависят от данных.
Развивать навыки программирования, ориентированные на производительность.

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

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

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

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

Повышение эффективности за счет оптимизации

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

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

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

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

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

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

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

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

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

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

Дальнейшие действия