Поделиться через


Конструктивные шаблоны облачных решений

Архитекторы проектирует рабочие нагрузки, интегрируя службы платформы, функциональные возможности и код для удовлетворения функциональных и нефункциональных требований. Для разработки эффективных рабочих нагрузок необходимо понимать эти требования и выбирать топологии и методологии, которые решают проблемы ограничений рабочей нагрузки. Шаблоны проектирования облака предоставляют решения для многих распространенных проблем.

Разработка системы в значительной степени зависит от установленных шаблонов проектирования. Вы можете разрабатывать инфраструктуру, код и распределенные системы с помощью сочетания этих шаблонов. Эти шаблоны важны для создания надежных, высокобезопасных, оптимизированных для затрат, эффективных и высокопроизводительных приложений в облаке.

Приведенные ниже шаблоны облачного проектирования — это технологии, не зависящие от технологий, что делает их подходящими для любой распределенной системы. Эти шаблоны можно применять в Azure, других облачных платформах, локальных настройках и гибридных средах.

Улучшение процесса разработки в облаке

Облачные рабочие нагрузки уязвимы для ошибок распределенных вычислений, которые являются общими, но неправильными предположениями о том, как работают распределенные системы. Ниже приведены примеры этих недостатков:

  • Сеть надежна.
  • Задержка равна нулю.
  • Пропускная способность бесконечна.
  • Сеть безопасна.
  • Топология не изменяется.
  • Есть один администратор.
  • Управление версиями компонентов просто.
  • Реализация наблюдаемости может быть отложена.

Эти неправильные представления могут привести к неправильному проектированию рабочих нагрузок. Шаблоны проектирования не устраняют эти неправильные представления, но помогают повысить осведомленность, предоставить стратегии компенсации и обеспечить устранение рисков. Каждый шаблон проектирования облака имеет компромиссы. Сосредоточьтесь на том, почему следует выбрать конкретный шаблон вместо того, чтобы реализовать его.

Рассмотрим, как использовать эти стандартные отраслевые шаблоны проектирования в качестве основных стандартных блоков для проектирования хорошо спроектированной рабочей нагрузки. Каждый шаблон конструктора в Azure Well-Architected Framework представляет один или несколько ее основных компонентов. Некоторые шаблоны могут привести к компромиссам, которые влияют на цели других столпов.

Каталог шаблонов

Каждый шаблон в этом каталоге описывает проблему, которую он устраняет, рекомендации по применению шаблона и пример на основе служб и инструментов Microsoft Azure. Некоторые шаблоны включают примеры кода или фрагменты кода, демонстрирующие реализацию шаблона в Azure.

Расписание Итоги основы платформы Well-Architected
Посредник Создайте службы поддержки, которые отправляют сетевые запросы от имени службы обслуживания клиентов или приложения. -Надёжность

-Безопасность
Антикоррупционный слой Реализуйте фасад или уровень адаптера между современным приложением и устаревшей системой. — операционное превосходство
Асинхронные запросы и ответы Отделить серверную обработку от внешнего узла. Этот шаблон полезен, если серверная обработка должна быть асинхронной, но интерфейс требует четкого и своевременного ответа. — эффективность производительности
Серверная часть для интерфейса Создайте отдельные серверные службы для определенных внешних приложений или интерфейсов. -Надёжность

-Безопасность

— эффективность производительности
Распределительный блок Изолируйте элементы приложения в пулы, чтобы при сбое один из них продолжал функционировать. -Надёжность

-Безопасность

— эффективность производительности
Кэширование по стратегии Cache-Aside Загрузите данные по запросу в кэш из хранилища данных. -Надёжность

— эффективность производительности
Хореография Пусть отдельные службы решают, когда и как обрабатывается бизнес-операция, а не в зависимости от центрального оркестратора. — операционное превосходство

— эффективность производительности
Автоматический выключатель Обработка ошибок, на устранение которых может понадобиться переменное количество времени, когда приложение подключается к удаленной службе или ресурсу. -Надёжность

— эффективность производительности
Проверка утверждений Разделение большого сообщения на схему проверки утверждений и полезную нагрузку, чтобы избежать перегрузки в канале сообщений. -Надёжность

-Безопасность

- Оптимизация затрат

— эффективность производительности
Компенсирующие транзакции Отмените работу, выполняемую последовательностью шагов, которые коллективно формируют в конечном итоге согласованную операцию. -Надёжность
Конкурирующие потребители Позвольте нескольким одновременным потребителям обрабатывать сообщения, которые они получают на одном и том же канале обмена сообщениями. -Надёжность

- Оптимизация затрат

— эффективность производительности
Консолидация вычислительных ресурсов Консолидация нескольких задач или операций в одном вычислительном модуле. - Оптимизация затрат

— операционное превосходство

— эффективность производительности
CQRS Разделите операции чтения данных и обновления данных, используя разные интерфейсы. — эффективность производительности
Метки развертывания Развертывание нескольких независимых копий компонентов приложения, включая хранилища данных. — операционное превосходство

— эффективность производительности
Источник событий Используйте хранилище только для добавления, чтобы записать полный ряд событий, описывающих действия, выполняемые в отношении данных в домене. -Надёжность

— эффективность производительности
Внешнее хранилище конфигурации Перемещение сведений о конфигурации из пакета развертывания приложения в централизованное расположение. — операционное превосходство
Федеративная идентификация Делегирование проверки подлинности внешнему поставщику удостоверений. -Надёжность

-Безопасность

— эффективность производительности
Агрегация шлюза Использование шлюза для объединения нескольких отдельных запросов в один общий. -Надёжность

-Безопасность

— операционное превосходство

— эффективность производительности
Разгрузка шлюза Перенесение общих или специализированных функций служб на прокси-сервер шлюза. -Надёжность

-Безопасность

- Оптимизация затрат

— операционное превосходство

— эффективность производительности
Маршрутизация шлюза Маршрутизация запросов к нескольким службам с помощью одной конечной точки. -Надёжность

— операционное превосходство

— эффективность производительности
Геоде Разверните внутренние службы на географически распределенных узлах. Каждый узел может обрабатывать клиентские запросы из любого региона. -Надёжность

— эффективность производительности
Мониторинг показателей работоспособности Внедрение в приложение функциональных проверок, к которым внешние средства могут регулярно получать доступ через предоставленные конечные точки. -Надёжность

— операционное превосходство

— эффективность производительности
Таблица индексов Создавайте индексы по полям в хранилищах данных, на которые часто ссылаются запросы. -Надёжность

— эффективность производительности
Выбор лидера Координируйте действия в распределенном приложении, выбрав одну из копий в качестве лидера. Лидер управляет коллекцией экземпляров задач совместной работы. -Надёжность
Материализованное представление Создайте предварительно заполненные представления по данным в одном или нескольких хранилищах данных, если данные плохо отформатированы для необходимых операций запроса. — эффективность производительности
Бридж для обмена сообщениями Создайте посредника, чтобы обеспечить связь между системами обмена сообщениями, которые в противном случае несовместимы. - Оптимизация затрат

— операционное превосходство
Каналы и фильтры Задачу, которая требует сложной обработки, можно разбить на ряд отдельных элементов для повторного использования при необходимости. -Надёжность
Очередь с приоритетом Распределяйте приоритеты запросов, отправляемых службам, чтобы более важные запросы обрабатывались быстрее. -Надёжность

— эффективность производительности
Издатель/Подписчик Разрешить приложению объявлять события нескольким потребителям асинхронно, не связывая отправителей с получателями. -Надёжность

-Безопасность

- Оптимизация затрат

— операционное превосходство

— эффективность производительности
карантин Убедитесь, что внешние ресурсы соответствуют согласованному команде уровню качества до их использования рабочей нагрузкой. -Безопасность

— операционное превосходство
Выравнивание нагрузки на основе очередей Используйте очередь, которая создает буфер между задачей и службой, чтобы сглаживать временные тяжелые нагрузки. -Надёжность

- Оптимизация затрат

— эффективность производительности
Ограничение скорости Избегайте или минимизируйте ошибки перегрузки путем управления потреблением ресурсов. -Надёжность
Повторить Дайте возможность приложениям обрабатывать ожидаемые временные сбои, повторно выполняя неудавшиеся операции. -Надёжность
Сага Управление согласованностью данных в микрослужбах в сценариях распределенных транзакций. -Надёжность
Планировщик, агент, контролер Координация набора действий между распределенными службами и ресурсами. -Надёжность

— эффективность производительности
Последовательный конвой Обработайте набор связанных сообщений в определенном порядке без блокировки других групп сообщений. -Надёжность
Шардинг Вы можете разделить хранилище данных на несколько горизонтальных секций, которые называются сегментами. -Надёжность

- Оптимизация затрат
Сайдак Разверните компоненты в отдельном процессе или контейнере, чтобы обеспечить изоляцию и инкапсуляцию. -Безопасность

— операционное превосходство
Размещение статического содержимого Разверните статическое содержимое в облачной службе хранилища для прямой доставки клиентам. - Оптимизация затрат
Фикус-удушитель Постепенно перенося устаревшую систему, постепенно заменяя части функций новыми приложениями и службами. -Надёжность

- Оптимизация затрат

— операционное превосходство
Дросселирование Управление потреблением ресурсов из приложений, клиентов или служб. -Надёжность

-Безопасность

- Оптимизация затрат

— эффективность производительности
Ключ для парковщика Используйте маркер или ключ для предоставления клиентам ограниченного прямого доступа к определенному ресурсу или службе. -Безопасность

- Оптимизация затрат

— эффективность производительности

Дальнейшие действия

Просмотрите шаблоны проектирования с точки зрения основы Well-Architected Framework, которая направлена на оптимизацию шаблона.