Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Принципы устойчивой программной инженерии — это набор компетенций, которые помогают разрабатывать, собирать и запускать приложения с учетом экологических факторов. Общая цель состоит в том, чтобы уменьшить углеродный след во всех аспектах работы над приложением. Руководство по устойчивой архитектуре Azure для обеспечения устойчивости соответствует принципам устойчивого проектирования программного обеспечения из Green Software Foundation и содержит общие сведения о принципах устойчивого проектирования программного обеспечения.
Устойчивая программная инженерия — это смещение приоритетов в проектировании. Зачастую при разработке приложений подчеркивается их высокая производительность и низкие показатели задержек. Устойчивое программное обеспечение сосредоточено на сокращении выбросов углерода насколько это возможно.
- Применение устойчивых принципов разработки программного обеспечения может обеспечить более высокую производительность или низкую задержку, например снижение общего количества обходов сети.
- Меры по сокращению выбросов углекислого газа могут привести к снижению производительности или увеличению задержек. Например, это может затронуть рабочие нагрузки с низким приоритетом.
В следующем руководстве рассматриваются службы, которые вы создаете или эксплуатируете в Azure с помощью службы Azure Kubernetes (AKS). В этой статье содержатся контрольные списки проектирования и конфигурации, рекомендуемые методики проектирования и параметры конфигурации. Прежде чем применять принципы устойчивой программной инженерии к своему приложению, проанализируйте приоритеты, потребности и возможности сбалансировать преимущества и недостатки.
Предварительные условия
- Понимание руководящих принципов Well-Architected Framework по устойчивому развитию поможет вам создать высококачественную, стабильную и эффективную облачную архитектуру. Для начала рекомендуется ознакомиться с более устойчивыми рабочими нагрузками и просмотреть рабочую нагрузку с помощью оценки microsoft Azure Well-Architected Review .
- Важно четко определить бизнес-требования при создании приложений, так как они могут иметь непосредственное влияние на архитектуры и конфигурации кластеров и рабочих нагрузок. При создании или обновлении существующих приложений ознакомьтесь с областями проектирования устойчивого развития Well-Architected Framework вместе с комплексным жизненным циклом приложения.
Общие сведения о модели общей ответственности
Устойчивость — это общая ответственность между поставщиком облачных служб и клиентом или партнером по проектированию и развертыванию кластеров AKS на платформе. Развертывание AKS не делает его устойчивым, даже если центры обработки данных оптимизированы для устойчивости. Приложения, которые не оптимизированы должным образом, могут по-прежнему выдавать больше углерода, чем необходимо.
Узнайте больше о модели общей ответственности за устойчивость.
Принципы дизайна
Углеродная эффективность: выдается наименьшее количество углеродного газа.
Углеродное эффективное облачное приложение — это оптимизированное приложение, а начальная точка — оптимизация затрат.
Энергоэффективность: используйте наименьшее количество энергии.
Одним из способов повышения энергоэффективности является запуск приложения на как можно меньше серверах с серверами, работающими с максимальной скоростью использования, а также повышение эффективности оборудования.
Эффективность оборудования: используйте наименьшее количество воплощенного углерода.
Существует два основных подхода к эффективности оборудования:
- Для устройств конечных пользователей это расширение срока существования оборудования.
- Для облачных вычислений это увеличивает использование ресурсов.
Осведомленность об углероде: делать больше, когда электричество более чистое, и делать меньше, когда электричество загрязнённое.
Осознавая углеродное влияние, вы можете реагировать на изменения в углеродной интенсивности, увеличивая или уменьшая ваш спрос.
Шаблоны и методики проектирования
Прежде чем ознакомиться с подробными рекомендациями в каждой из областей проектирования, рекомендуется тщательно рассмотреть следующие шаблоны проектирования для создания устойчивых рабочих нагрузок в AKS:
Проектирование приложений
Ознакомьтесь с этим разделом, чтобы узнать больше о том, как оптимизировать приложения для более устойчивого проектирования приложений.
Проектирование независимого масштабирования логических компонентов
Архитектура микрослужб может уменьшить необходимые вычислительные ресурсы, так как позволяет независимо масштабировать свои логические компоненты и гарантирует, что они масштабируются в соответствии с требованиями.
- Рассмотрите возможность использования Dapr Framework или других проектов CNCF, чтобы разделить функциональные возможности приложения на разные микрослужбы и разрешить независимое масштабирование своих логических компонентов.
Проектирование масштабирования на основе событий
При масштабировании рабочей нагрузки на основе соответствующих бизнес-метрик, таких как HTTP-запросы, длина очереди и облачные события, вы можете снизить использование ресурсов и выбросы углерода.
- Используйте Keda при создании приложений на основе событий, чтобы разрешить масштабирование до нуля, если нет спроса.
Стремитесь к проектированию без состояния
Удаление состояния из дизайна сокращает объем данных в памяти или на диске, необходимых для того, чтобы рабочая нагрузка функционировала.
- Рассмотрите возможность разработки без отслеживания состояния, чтобы уменьшить ненужные сетевые нагрузки, обработку данных и вычислительные ресурсы.
Платформа приложений
Изучите этот раздел, чтобы узнать, как принимать более обоснованные решения, связанные с платформой, вокруг устойчивости.
Включение автоматического обновления кластера и узла
Актуальный кластер избегает ненужных проблем с производительностью и обеспечивает преимущества последних улучшений производительности и оптимизации вычислений.
- Включите автоматическое обновление кластера и примените обновления безопасности к узлам автоматически с помощью GitHub Actions , чтобы обеспечить наличие последних улучшений в кластере.
Установка поддерживаемых надстроек и расширений
Надстройки и расширения, охваченные политикой поддержки AKS, предоставляют дополнительные поддерживаемые функции в кластере, позволяя воспользоваться последними улучшениями производительности и оптимизацией энергии на протяжении всего жизненного цикла кластера.
- Установите KEDA в качестве надстройки.
- Установите GitOps и Dapr в качестве расширений.
Контейнеризируйте свою рабочую нагрузку, где применимо
Контейнеры позволяют сократить выделение ненужных ресурсов и повысить эффективность использования ресурсов, развернутых, так как они позволяют упаковывать ячейки и требуют меньше вычислительных ресурсов, чем виртуальные машины.
- Используйте Draft для упрощения контейнеризации приложений путем генерации Dockerfile и манифестов Kubernetes.
Использование энергоэффективного оборудования
Процессоры Ampere, разработанные как облачные нативные, уникально спроектированы для удовлетворения потребностей облака в высокой производительности и энергетической эффективности.
- Оцените, являются ли узлы с процессорами на основе Ampere Altra Arm хорошим вариантом для ваших рабочих нагрузок.
Соответствие потребностям масштабируемости и использование возможностей автомасштабирования и ускорения
Негабаритный кластер не обеспечивает максимальное использование вычислительных ресурсов и может привести к потере энергии. Разделите приложения на разные пулы узлов, чтобы разрешить правильное масштабирование кластера и независимое масштабирование в соответствии с требованиями приложения. Когда в кластере 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 и Application Gateway помогают управлять трафиком веб-программ, в то время как Azure Web Application Firewall обеспечивает защиту от топ 10 атак OWASP и отсеивание вредоносных ботов на сетевом периметре. Эти возможности помогают удалить ненужные передачи данных и снизить нагрузку на облачную инфраструктуру с более низкой пропускной способностью и меньшим количеством требований к инфраструктуре.
- Используйте Контроллер входящего трафика шлюза приложений (AGIC) в AKS для фильтрации и разгрузки трафика на границе сети, чтобы предотвратить его достижение источника и тем самым снизить потребление энергии и выбросы углерода.
Проверка на уязвимости
Многие атаки на облачную инфраструктуру стремятся злоупотреблять развернутыми ресурсами для прямой выгоды злоумышленника, что приводит к необоснованному увеличению использования и затрат. Средства сканирования уязвимостей помогают свести к минимуму окно возможностей злоумышленников и устранить потенциальные вредоносные возможности использования ресурсов.
- Следуйте рекомендациям из Microsoft Defender для облака.
- Запустите средства автоматического сканирования уязвимостей, такие как Defender для контейнеров, чтобы избежать ненужного использования ресурсов. Эти средства помогают выявить уязвимости в образах и свести к минимуму окно возможности злоумышленников.
Следующие шаги
Azure Kubernetes Service