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