Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Архитекторы проектирует рабочие нагрузки, интегрируя службы платформы, функциональные возможности и код для удовлетворения функциональных и нефункциональных требований. Для разработки эффективных рабочих нагрузок необходимо понимать эти требования и выбирать топологии и методологии, которые решают проблемы ограничений рабочей нагрузки. Шаблоны проектирования облака предоставляют решения для многих распространенных проблем.
Разработка системы в значительной степени зависит от установленных шаблонов проектирования. Вы можете разрабатывать инфраструктуру, код и распределенные системы с помощью сочетания этих шаблонов. Эти шаблоны важны для создания надежных, высокобезопасных, оптимизированных для затрат, эффективных и высокопроизводительных приложений в облаке.
Приведенные ниже шаблоны облачного проектирования — это технологии, не зависящие от технологий, что делает их подходящими для любой распределенной системы. Эти шаблоны можно применять в Azure, других облачных платформах, локальных настройках и гибридных средах.
Улучшение процесса разработки в облаке
Облачные рабочие нагрузки уязвимы для ошибок распределенных вычислений, которые являются общими, но неправильными предположениями о том, как работают распределенные системы. Ниже приведены примеры этих недостатков:
- Сеть надежна.
- Задержка равна нулю.
- Пропускная способность бесконечна.
- Сеть безопасна.
- Топология не изменяется.
- Есть один администратор.
- Управление версиями компонентов просто.
- Реализация наблюдаемости может быть отложена.
Эти неправильные представления могут привести к неправильному проектированию рабочих нагрузок. Шаблоны проектирования не устраняют эти неправильные представления, но помогают повысить осведомленность, предоставить стратегии компенсации и обеспечить устранение рисков. Каждый шаблон проектирования облака имеет компромиссы. Сосредоточьтесь на том, почему следует выбрать конкретный шаблон вместо того, чтобы реализовать его.
Рассмотрим, как использовать эти стандартные отраслевые шаблоны проектирования в качестве основных стандартных блоков для проектирования хорошо спроектированной рабочей нагрузки. Каждый шаблон конструктора в Azure Well-Architected Framework представляет один или несколько ее основных компонентов. Некоторые шаблоны могут привести к компромиссам, которые влияют на цели других столпов.
Каталог шаблонов
Каждый шаблон в этом каталоге описывает проблему, которую он устраняет, рекомендации по применению шаблона и пример на основе служб и инструментов Microsoft Azure. Некоторые шаблоны включают примеры кода или фрагменты кода, демонстрирующие реализацию шаблона в Azure.
| Расписание | Итоги | основы платформы Well-Architected |
|---|---|---|
| Посредник | Создайте службы поддержки, которые отправляют сетевые запросы от имени службы обслуживания клиентов или приложения. | -Надёжность -Безопасность |
| Антикоррупционный слой | Реализуйте фасад или уровень адаптера между современным приложением и устаревшей системой. | — операционное превосходство |
| Асинхронные запросы и ответы | Отделить серверную обработку от внешнего узла. Этот шаблон полезен, если серверная обработка должна быть асинхронной, но интерфейс требует четкого и своевременного ответа. | — эффективность производительности |
| Серверная часть для интерфейса | Создайте отдельные серверные службы для определенных внешних приложений или интерфейсов. | -Надёжность -Безопасность — эффективность производительности |
| Распределительный блок | Изолируйте элементы приложения в пулы, чтобы при сбое один из них продолжал функционировать. | -Надёжность -Безопасность — эффективность производительности |
| Кэширование по стратегии Cache-Aside | Загрузите данные по запросу в кэш из хранилища данных. | -Надёжность — эффективность производительности |
| Хореография | Пусть отдельные службы решают, когда и как обрабатывается бизнес-операция, а не в зависимости от центрального оркестратора. | — операционное превосходство — эффективность производительности |
| Автоматический выключатель | Обработка ошибок, на устранение которых может понадобиться переменное количество времени, когда приложение подключается к удаленной службе или ресурсу. | -Надёжность — эффективность производительности |
| Проверка утверждений | Разделение большого сообщения на схему проверки утверждений и полезную нагрузку, чтобы избежать перегрузки в канале сообщений. | -Надёжность -Безопасность - Оптимизация затрат — эффективность производительности |
| Компенсирующие транзакции | Отмените работу, выполняемую последовательностью шагов, которые коллективно формируют в конечном итоге согласованную операцию. | -Надёжность |
| Конкурирующие потребители | Позвольте нескольким одновременным потребителям обрабатывать сообщения, которые они получают на одном и том же канале обмена сообщениями. | -Надёжность - Оптимизация затрат — эффективность производительности |
| Консолидация вычислительных ресурсов | Консолидация нескольких задач или операций в одном вычислительном модуле. | - Оптимизация затрат — операционное превосходство — эффективность производительности |
| CQRS | Разделите операции чтения данных и обновления данных, используя разные интерфейсы. | — эффективность производительности |
| Метки развертывания | Развертывание нескольких независимых копий компонентов приложения, включая хранилища данных. | — операционное превосходство — эффективность производительности |
| Источник событий | Используйте хранилище только для добавления, чтобы записать полный ряд событий, описывающих действия, выполняемые в отношении данных в домене. | -Надёжность — эффективность производительности |
| Внешнее хранилище конфигурации | Перемещение сведений о конфигурации из пакета развертывания приложения в централизованное расположение. | — операционное превосходство |
| Федеративная идентификация | Делегирование проверки подлинности внешнему поставщику удостоверений. | -Надёжность -Безопасность — эффективность производительности |
| Агрегация шлюза | Использование шлюза для объединения нескольких отдельных запросов в один общий. | -Надёжность -Безопасность — операционное превосходство — эффективность производительности |
| Разгрузка шлюза | Перенесение общих или специализированных функций служб на прокси-сервер шлюза. | -Надёжность -Безопасность - Оптимизация затрат — операционное превосходство — эффективность производительности |
| Маршрутизация шлюза | Маршрутизация запросов к нескольким службам с помощью одной конечной точки. | -Надёжность — операционное превосходство — эффективность производительности |
| Геоде | Разверните внутренние службы на географически распределенных узлах. Каждый узел может обрабатывать клиентские запросы из любого региона. | -Надёжность — эффективность производительности |
| Мониторинг показателей работоспособности | Внедрение в приложение функциональных проверок, к которым внешние средства могут регулярно получать доступ через предоставленные конечные точки. | -Надёжность — операционное превосходство — эффективность производительности |
| Таблица индексов | Создавайте индексы по полям в хранилищах данных, на которые часто ссылаются запросы. | -Надёжность — эффективность производительности |
| Выбор лидера | Координируйте действия в распределенном приложении, выбрав одну из копий в качестве лидера. Лидер управляет коллекцией экземпляров задач совместной работы. | -Надёжность |
| Материализованное представление | Создайте предварительно заполненные представления по данным в одном или нескольких хранилищах данных, если данные плохо отформатированы для необходимых операций запроса. | — эффективность производительности |
| Бридж для обмена сообщениями | Создайте посредника, чтобы обеспечить связь между системами обмена сообщениями, которые в противном случае несовместимы. | - Оптимизация затрат — операционное превосходство |
| Каналы и фильтры | Задачу, которая требует сложной обработки, можно разбить на ряд отдельных элементов для повторного использования при необходимости. | -Надёжность |
| Очередь с приоритетом | Распределяйте приоритеты запросов, отправляемых службам, чтобы более важные запросы обрабатывались быстрее. | -Надёжность — эффективность производительности |
| Издатель/Подписчик | Разрешить приложению объявлять события нескольким потребителям асинхронно, не связывая отправителей с получателями. | -Надёжность -Безопасность - Оптимизация затрат — операционное превосходство — эффективность производительности |
| карантин | Убедитесь, что внешние ресурсы соответствуют согласованному команде уровню качества до их использования рабочей нагрузкой. | -Безопасность — операционное превосходство |
| Выравнивание нагрузки на основе очередей | Используйте очередь, которая создает буфер между задачей и службой, чтобы сглаживать временные тяжелые нагрузки. | -Надёжность - Оптимизация затрат — эффективность производительности |
| Ограничение скорости | Избегайте или минимизируйте ошибки перегрузки путем управления потреблением ресурсов. | -Надёжность |
| Повторить | Дайте возможность приложениям обрабатывать ожидаемые временные сбои, повторно выполняя неудавшиеся операции. | -Надёжность |
| Сага | Управление согласованностью данных в микрослужбах в сценариях распределенных транзакций. | -Надёжность |
| Планировщик, агент, контролер | Координация набора действий между распределенными службами и ресурсами. | -Надёжность — эффективность производительности |
| Последовательный конвой | Обработайте набор связанных сообщений в определенном порядке без блокировки других групп сообщений. | -Надёжность |
| Шардинг | Вы можете разделить хранилище данных на несколько горизонтальных секций, которые называются сегментами. | -Надёжность - Оптимизация затрат |
| Сайдак | Разверните компоненты в отдельном процессе или контейнере, чтобы обеспечить изоляцию и инкапсуляцию. | -Безопасность — операционное превосходство |
| Размещение статического содержимого | Разверните статическое содержимое в облачной службе хранилища для прямой доставки клиентам. | - Оптимизация затрат |
| Фикус-удушитель | Постепенно перенося устаревшую систему, постепенно заменяя части функций новыми приложениями и службами. | -Надёжность - Оптимизация затрат — операционное превосходство |
| Дросселирование | Управление потреблением ресурсов из приложений, клиентов или служб. | -Надёжность -Безопасность - Оптимизация затрат — эффективность производительности |
| Ключ для парковщика | Используйте маркер или ключ для предоставления клиентам ограниченного прямого доступа к определенному ресурсу или службе. | -Безопасность - Оптимизация затрат — эффективность производительности |
Шаблоны оркестрации агентов ИИ
Предыдущие шаблоны проектирования облака устраняют распространенные проблемы в распределенных системах, но рабочие нагрузки ИИ, использующие несколько автономных агентов, требуют специализированных подходов к координации. Традиционные шаблоны, такие как диспетчер агент-менеджера или хореография, предоставляют основные концепции. Однако агенты искусственного интеллекта представляют уникальные проблемы, такие как недетерминированные выходные данные, возможности динамической логики и необходимость интеллектуальной передачи между специализированными компонентами.
Для нагрузок ИИ, которые включают несколько автономных агентов, см. шаблоны оркестрации агентов ИИ. Эти шаблоны дополняют шаблоны облачного проектирования в этом каталоге путем решения конкретных требований к координации интеллектуальных автономных компонентов, которые работают вместе для выполнения сложных результатов.
Дальнейшие действия
Просмотрите шаблоны проектирования с точки зрения основы Well-Architected Framework, которая направлена на оптимизацию шаблона.
- Дизайн-паттерны для поддержки столпа надежности
- Шаблоны проектирования для поддержки столпа безопасности
- Шаблоны проектирования для поддержки столпа оптимизации затрат
- Шаблоны проектирования для поддержки принципа операционного совершенства
- Паттерны проектирования для поддержки столпа эффективности производительности