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

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

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

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

Определения

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

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

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

Оптимизация функций приложения

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

Оценка значения функции приложения

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

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

  • Бизнес-цели: оценка того, как функция соответствует стратегическим целям бизнеса. Рассмотрим, как функции поддерживают создание доходов, удовлетворенность клиентов или конкурентное преимущество.

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

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

Оценка стоимости функций приложения

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

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

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

  • Инфраструктура и использование ресурсов. Оцените влияние функции на требования к инфраструктуре, включая ресурсы сервера, хранилище и пропускную способность.

  • Сложность интеграции. Оцените сложность и стоимость интеграции функции с другими системами или сторонними службами.

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

Проверка ценности функций приложения с заинтересованными лицами

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

Определение будущего функции

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

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

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

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

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

Оптимизация ресурсов рабочей нагрузки

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

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

  • Оповещения.
  • Демонстрационные сборки.
  • Отмена эксплуатации среды.
  • Отключение компонентов.
  • IP-адреса.
  • Сетевые брандмауэры.
  • Доказательство концепции.
  • Моментальные снимки.
  • учетные записи хранения;
  • Временные среды тестирования.
  • Временные триагентные среды.

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

  1. Провести инвентаризацию. Провести тщательную инвентаризацию всех ресурсов в рабочей нагрузке в разных средах.

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

  3. Удаление компонентов простоя: обычно существует стоимость, связанная с развернутыми ресурсами. Даже если ресурс позволяет остановить или перераспределить, вы можете продолжать платить за ресурс. Рассмотрите возможность удаления ресурсов бездействия. Если вам нужны данные, сначала создайте резервную копию и удалите ресурс. Вы лучше развертываете ресурс и восстанавливаете данные, чем позволяет ресурсу оставаться бездействующим.

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

  1. Мониторинг ресурсов: используйте средства для отслеживания объема ЦП, памяти и хранилища, используемого на самом деле. Выберите лучший план, соответствующий вашим потребностям на основе этих сведений.

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

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

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

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

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

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

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

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

Оптимизация функций платформы

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

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

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

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

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

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

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

Быть методичным в усилиях по оптимизации

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

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

  • Применение метаданных: применение метаданных для упорядочивания и отслеживания ресурсов. Метаданные можно использовать для классификации и группирования ресурсов, что упрощает отслеживание, удаление и предотвращение потерянных ресурсов. Создайте согласованную стратегию метаданных между ресурсами. Рассмотрите возможность добавления владельцев, ожидаемой длительности ресурса (например, sunset-30d) или других тегов.

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

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

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

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

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

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

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

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

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

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