Устойчивые методики проектирования программного обеспечения в Служба Azure Kubernetes (AKS)
Принципы устойчивой программной инженерии — это набор компетенций, которые помогают разрабатывать, собирать и запускать приложения с учетом экологических факторов. Общая цель состоит в том, чтобы уменьшить углеродный след во всех аспектах работы над приложением. Руководство по устойчивой архитектуре Azure для обеспечения устойчивости соответствует принципам устойчивого проектирования программного обеспечения из Green Software Foundation и содержит общие сведения о принципах устойчивого проектирования программного обеспечения.
Устойчивая программная инженерия — это смещение приоритетов в проектировании. Зачастую при разработке приложений подчеркивается их высокая производительность и низкие показатели задержек. Устойчивое программное обеспечение инженерии фокусируется на сокращении как можно больше выбросов углерода.
- Применение устойчивых принципов разработки программного обеспечения может обеспечить более высокую производительность или низкую задержку, например снижение общего количества обходов сети.
- Меры по сокращению выбросов углекислого газа могут привести к снижению производительности или увеличению задержек. Например, это может затронуть рабочие нагрузки с низким приоритетом.
В следующем руководстве рассматриваются службы, которые вы создаете или работаете в Azure с Служба Azure Kubernetes (AKS). В этой статье содержатся контрольные списки проектирования и конфигурации, рекомендуемые методики проектирования и параметры конфигурации. Прежде чем применять принципы устойчивой программной инженерии к своему приложению, проанализируйте приоритеты, потребности и возможности сбалансировать преимущества и недостатки.
Необходимые компоненты
- Общие сведения о руководстве по устойчивому развитию хорошо спроектированной платформы помогут вам создать высококачественную, стабильную и эффективную облачную архитектуру. Для начала рекомендуется ознакомиться с более устойчивыми рабочими нагрузками и просмотреть рабочую нагрузку с помощью оценки microsoft Azure Well-Architected Review .
- Важно четко определить бизнес-требования при создании приложений, так как они могут иметь непосредственное влияние на архитектуры и конфигурации кластеров и рабочих нагрузок. При создании или обновлении существующих приложений ознакомьтесь с областями проектирования устойчивого развития Well-Architected Framework вместе с комплексным жизненным циклом приложения.
Общие сведения о модели общей ответственности
Устойчивость — это общая ответственность между поставщиком облачных служб и клиентом или партнером по проектированию и развертыванию кластеров AKS на платформе. Развертывание AKS не делает его устойчивым, даже если центры обработки данных оптимизированы для устойчивости. Приложения, которые не оптимизированы должным образом, могут по-прежнему выдавать больше углерода, чем необходимо.
Узнайте больше о модели общей ответственности за устойчивость.
Принципы дизайна
Углеродная эффективность: выдается наименьшее количество углеродного газа.
Углеродное эффективное облачное приложение — это оптимизированное приложение, а начальная точка — оптимизация затрат.
Энергоэффективность: используйте наименьшее количество энергии.
Одним из способов повышения энергоэффективности является запуск приложения на как можно меньше серверах с серверами, работающими с максимальной скоростью использования, а также повышение эффективности оборудования.
Эффективность оборудования: используйте наименьшее количество воплощенного углерода.
Существует два основных подхода к эффективности оборудования:
- Для устройств конечных пользователей это расширение срока существования оборудования.
- Для облачных вычислений это увеличивает использование ресурсов.
Углерод осведомленности: делать больше, когда электричество более чистое и делает меньше, когда электричество является грязнее.
Будучи с учетом углерода означает реагирование на сдвиги интенсивности углерода, увеличивая или уменьшая ваш спрос.
Шаблоны и методики проектирования
Прежде чем ознакомиться с подробными рекомендациями в каждой из областей проектирования, рекомендуется тщательно рассмотреть следующие шаблоны проектирования для создания устойчивых рабочих нагрузок в AKS:
Проектирование приложений
Ознакомьтесь с этим разделом, чтобы узнать больше о том, как оптимизировать приложения для более устойчивого проектирования приложений.
Проектирование независимого масштабирования логических компонентов
Архитектура микрослужб может уменьшить необходимые вычислительные ресурсы, так как позволяет независимо масштабировать свои логические компоненты и гарантирует, что они масштабируются в соответствии с требованиями.
- Рассмотрите возможность использования Dapr Framework или других проектов CNCF, чтобы разделить функциональные возможности приложения на разные микрослужбы и разрешить независимое масштабирование своих логических компонентов.
Проектирование масштабирования на основе событий
При масштабировании рабочей нагрузки на основе соответствующих бизнес-метрик, таких как HTTP-запросы, длина очереди и облачные события, вы можете снизить использование ресурсов и выбросы углерода.
- Используйте Keda при создании приложений на основе событий, чтобы разрешить масштабирование до нуля, если нет спроса.
Цель разработки без отслеживания состояния
Удаление состояния из структуры сокращает объем данных в памяти или на диске, необходимых для работы рабочей нагрузки.
- Рассмотрите возможность разработки без отслеживания состояния, чтобы уменьшить ненужные сетевые нагрузки, обработку данных и вычислительные ресурсы.
Платформа приложений
Изучите этот раздел, чтобы узнать, как принимать более обоснованные решения, связанные с платформой, вокруг устойчивости.
Включение автоматического обновления кластера и узла
Актуальный кластер избегает ненужных проблем с производительностью и обеспечивает преимущества последних улучшений производительности и оптимизации вычислений.
- Включите автоматическое обновление кластера и примените обновления безопасности к узлам автоматически с помощью GitHub Actions , чтобы обеспечить наличие последних улучшений в кластере.
Установка поддерживаемых надстроек и расширений
Надстройки и расширения, охваченные политикой поддержки AKS, предоставляют дополнительные поддерживаемые функции в кластере, позволяя воспользоваться последними улучшениями производительности и оптимизацией энергии на протяжении всего жизненного цикла кластера.
- Установите KEDA в качестве надстройки.
- Установите GitOps и Dapr в качестве расширений.
Контейнеризация рабочей нагрузки, в которой применимо
Контейнеры позволяют сократить выделение ненужных ресурсов и повысить эффективность использования ресурсов, развернутых, так как они позволяют упаковывать ячейки и требуют меньше вычислительных ресурсов, чем виртуальные машины.
- Используйте черновик для упрощения контейнеризации приложений путем создания манифестов Dockerfile и Kubernetes.
Использование энергоэффективного оборудования
Облачные собственные процессоры Ampere уникальны предназначены для удовлетворения потребностей облака в высокой производительности и эффективности питания.
- Оцените, являются ли узлы процессорами на основе Ampere Altra Arm хорошим вариантом для рабочих нагрузок.
Соответствие потребностям масштабируемости и использование возможностей автомасштабирования и ускорения
Негабаритный кластер не обеспечивает максимальное использование вычислительных ресурсов и может привести к потере энергии. Разделите приложения на разные пулы узлов, чтобы разрешить правильное масштабирование кластера и независимое масштабирование в соответствии с требованиями приложения. По мере того как в кластере AKS недостаточно емкости, выращивайте из AKS в ACI для масштабирования дополнительных модулей pod на бессерверные узлы и убедитесь, что рабочая нагрузка эффективно использует все выделенные ресурсы.
- Размер кластера в соответствии с потребностями масштабируемости приложения. Используйте автомасштабирование кластера с виртуальными узлами, чтобы быстро масштабировать и максимизировать использование вычислительных ресурсов.
- Вы также можете применить квоты ресурсов на уровне пространства имен и масштабировать пулы узлов пользователей до нуля, если нет спроса.
Отключение рабочих нагрузок и пулов узлов за пределами рабочих часов
Рабочие нагрузки могут не выполняться непрерывно и могут быть отключены для снижения выбросов энергии и выбросов углерода. Вы можете полностью отключить (остановить) пулы узлов в кластере AKS, что позволяет также сэкономить на затратах на вычисления.
- Используйте остановку или запуск пула узлов, чтобы отключить пулы узлов за пределами рабочих часов.
- Используйте масштабировщик KEDA CRON для уменьшения масштаба рабочих нагрузок (pod) на основе времени.
Операционные процедуры
Ознакомьтесь с этим разделом, чтобы настроить среду для измерения и непрерывного улучшения затрат на рабочие нагрузки и эффективности углерода.
Удаление неиспользуемых ресурсов
Необходимо определить и удалить все неиспользуемые ресурсы, такие как неоправдаемые образы и ресурсы хранения, так как они оказывают непосредственное влияние на оборудование и энергоэффективность. Чтобы обеспечить непрерывную оптимизацию энергии, необходимо рассматривать идентификацию и удаление неиспользуемых ресурсов как процесс, а не действие на определенный момент времени.
- Используйте Помощник по Azure для идентификации неиспользуемых ресурсов.
- Используйте ImageCleaner для очистки устаревших образов и удаления области риска в кластере.
Вы добавляете теги к ресурсам
Получение правильной информации и аналитических сведений в нужное время важно для создания отчетов о производительности и использовании ресурсов.
- Задайте теги Azure в кластере , чтобы включить мониторинг рабочих нагрузок.
Хранилище
Изучите этот раздел, чтобы узнать, как разработать более устойчивую архитектуру хранилища данных и оптимизировать существующие развертывания.
Оптимизация использования хранилища
Операции извлечения данных и хранения данных могут оказать значительное влияние как на энергию, так и на эффективность оборудования. Проектирование решений с правильным шаблоном доступа к данным может снизить потребление энергии и воплощенный углерод.
- Ознакомьтесь с потребностями приложения, чтобы выбрать соответствующее хранилище и определить его с помощью классов хранения, чтобы избежать недостаточного использования хранилища.
- Рассмотрите возможность динамической подготовки томов для автоматического масштабирования количества ресурсов хранилища.
Сеть и подключение
Изучите этот раздел, чтобы узнать, как повысить и оптимизировать эффективность сети, чтобы сократить ненужные выбросы углерода.
Выберите регион, ближайший к пользователям
Расстояние от центра обработки данных к пользователям оказывает значительное влияние на потребление энергии и выбросы углерода. Сокращение расстояния, на который перемещается сетевой пакет, повышает эффективность энергии и углерода.
- Просмотрите требования к приложению и географические регионы Azure, чтобы выбрать ближайший к региону, где собираются большинство сетевых пакетов.
Уменьшение обхода сети между узлами
Размещение узлов в одном регионе или одной зоне доступности уменьшает физическое расстояние между экземплярами. Однако для критически важных для бизнеса рабочих нагрузок необходимо убедиться, что кластер распространяется по нескольким зонам доступности, что может привести к увеличению сетевого трафика и увеличению углеродного следа.
- Рассмотрите возможность развертывания узлов в группе размещения близкого взаимодействия, чтобы сократить обход сети, гарантируя, что вычислительные ресурсы находятся рядом друг с другом.
- Для критически важных рабочих нагрузок настройте группы размещения близкого взаимодействия с зонами доступности.
Оценка с помощью сетки службы
Сетка служб развертывает дополнительные контейнеры для обмена данными, как правило, в шаблоне боковика, чтобы обеспечить более функциональные возможности, что приводит к увеличению использования ЦП и сетевого трафика. Тем не менее, он позволяет отделить приложение от этих возможностей, так как он перемещает их из уровня приложения и вниз до уровня инфраструктуры.
- Тщательно рассмотрите увеличение использования ЦП и сетевого трафика, созданного компонентами связи сетки служб, прежде чем принимать решение об использовании.
Оптимизация сбора журналов
Отправка и хранение всех журналов из всех возможных источников (рабочих нагрузок, служб, диагностика и активности платформы) может увеличить объем хранилища и сетевого трафика, что влияет на затраты и выбросы углерода.
- Убедитесь, что вы собираете и сохраняете только необходимые данные журнала для поддержки ваших требований. Настройте правила сбора данных для рабочих нагрузок AKS и реализуйте рекомендации по проектированию для оптимизации затрат Log Analytics.
Кэш статических данных
Использование сеть доставки содержимого (CDN) — это устойчивый подход к оптимизации сетевого трафика, так как он уменьшает перемещение данных по сети. Это сокращает задержку путем хранения часто считывающих статических данных ближе к пользователям и помогает снизить нагрузку сетевого трафика и сервера.
- Убедитесь, что вы следуйте рекомендациям по CDN.
- Рассмотрите возможность использования Azure CDN для снижения потребляемой пропускной способности и снижения затрат.
Безопасность
Ознакомьтесь с этим разделом, чтобы узнать больше о рекомендациях, ведущих к устойчивой, правильной безопасности.
Оценка того, следует ли использовать завершение TLS
Протокол TLS гарантирует, что все данные, передаваемые между веб-сервером и веб-браузерами, остаются закрытыми и зашифрованными. Однако завершение и повторное создание TLS повышает загрузку ЦП и может быть ненужным в определенных архитектурах. Сбалансированный уровень безопасности может предложить более устойчивую и энергетическую рабочую нагрузку, в то время как более высокий уровень безопасности может увеличить требования к вычислительным ресурсам.
- Просмотрите сведения о завершении TLS при использовании Шлюз приложений или Azure Front Door. Определите, можно ли завершить TLS на пограничном шлюзе и продолжить работу с подсистемой балансировки нагрузки и рабочей нагрузкой, отличной от TLS.
Использование средств и элементов управления сетевой безопасностью в облаке
Azure Front Door и Шлюз приложений помогают управлять трафиком из веб-приложений, в то время как Azure Брандмауэр веб-приложений обеспечивает защиту от атак OWASP 10 лучших атак и загрузки неудачных ботов на пограничной сети. Эти возможности помогают удалить ненужные передачи данных и снизить нагрузку на облачную инфраструктуру с более низкой пропускной способностью и меньшим количеством требований к инфраструктуре.
- Используйте Шлюз приложений контроллера входящего трафика (AGIC) в AKS для фильтрации и разгрузки трафика на пограничной сети от достижения источника, чтобы снизить потребление энергии и выбросы углерода.
Проверка на уязвимости
Многие атаки на облачную инфраструктуру стремятся неправильно развертывать развернутые ресурсы для прямого получения злоумышленника, что приводит к ненужным всплескам использования и затрат. Средства сканирования уязвимостей помогают свести к минимуму окно возможностей злоумышленников и устранить потенциальные вредоносные возможности использования ресурсов.
- Следуйте рекомендациям из Microsoft Defender для облака.
- Запустите средства автоматического сканирования уязвимостей, такие как Defender для контейнеров, чтобы избежать ненужного использования ресурсов. Эти средства помогают выявить уязвимости в образах и свести к минимуму окно возможности злоумышленников.
Следующие шаги
Azure Kubernetes Service