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

Применяется к этой рекомендации по оптимизации затрат 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 могут распределять нагрузки между зонами доступности и регионами. Эти подсистемы балансировки нагрузки могут помочь избежать простоя ресурсов, например при использовании подходов к аварийному восстановлению.

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

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