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


Правила разработки облачных решений

Эти конструктивные шаблоны полезны для создания надежных, масштабируемых, безопасных приложений в облаке.

В каждом из шаблонов описывается проблема, которую он устраняет, приведены рекомендации для применения шаблона и пример, основанный на Microsoft Azure. Большинство шаблонов включают примеры кода или фрагменты кода, которые показывают, как реализовать шаблон в Azure. Однако большинство шаблонов относятся к любой распределенной системе, размещенной на azure или других облачных платформах.

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

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

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

Проблемы, возникающие при разработке облачных приложений

Управление данными

Управление данными

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

Проектирование и реализация

Проектирование и реализация

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

Значок обмена сообщениями

Обмен сообщениями

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

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

Расписание Итоги Категория
Посредник Создайте службы поддержки, которые отправляют сетевые запросы от имени службы обслуживания клиентов или приложения. Проектирование и реализация,
Эффективность операционных процессов
Уровень защиты от повреждений Реализуйте интерфейс или уровень адаптера между современным приложением и устаревшей системой. Проектирование и реализация,
Эффективность операционных процессов
Асинхронные запросы и ответы Выполняйте серверную обработку не на внешнем узле, где серверная обработка должна быть асинхронной и когда интерфейс требует четкого ответа. Обмен сообщениями
Отдельные серверные части для каждого интерфейса Создайте отдельные серверные службы, которые будут использоваться конкретными внешними приложениями или интерфейсами. Проектирование и реализация
Распределительный блок Изоляция элементов приложения в пулах, чтобы в случае сбоя одного элемента остальные продолжали функционировать. Надежность
Отдельно от кэша Загрузка данных по запросу из хранилища данных в кэш. Управление данными,
Уровень производительности
Хореография Позвольте каждой службе самостоятельно определять, когда и как обрабатывать бизнес-операцию, не создавая зависимостей от центрального оркестратора. Обмен сообщениями,
Уровень производительности
Автоматическое выключение Обработка ошибок при подключении к удаленной службе или ресурсу, устранение которых может занять непредсказуемое количество времени. Надежность
Проверка утверждений Разделение большого сообщения на схему проверки утверждений и полезную нагрузку, чтобы избежать перегрузки в канале сообщений. Обмен сообщениями
Компенсирующие транзакции Отмена работы с выполнением серии шагов, которые вместе определяют согласованную в конечном счете операцию. Надежность
Конкурирующие потребители Несколько конкурирующих потребителей обрабатывают сообщения, полученные в одном канале обмена сообщениями. Обмен сообщениями
Консолидация вычислительных ресурсов Объединение нескольких задач и операций в единый вычислительный блок Проектирование и реализация
CQRS Вы можете разделить интерфейсы для операций считывания и записи данных. Управление данными,
Проектирование и реализация,
Уровень производительности
Метки развертывания Развертывание нескольких независимых копий компонентов приложения, включая хранилища данных. Надежность,
Уровень производительности
Конфигурация рабочей нагрузки Edge Большое разнообразие систем и устройств в цехе может сделать конфигурацию рабочей нагрузки сложной проблемой. Проектирование и реализация
Источник событий Использование инкрементируемого хранилища для сохранения всей последовательности событий, то есть всех действий с данными в домене. Управление данными,
Уровень производительности
Внешнее хранилище конфигурации Переместите сведения о конфигурации из пакета развертывания приложения в централизованное расположение. Проектирование и реализация,
Эффективность операционных процессов
Федеративная идентификация Делегирование проверки подлинности внешнему поставщику удостоверений. Безопасность
Привратник Защита приложений и служб с помощью выделенного экземпляра узла, который выполняет роль брокера между клиентами и приложением или службой, проверяет и очищает запросы, а также передает запросы и данные между ними. Безопасность
Агрегирование на шлюзе Использование шлюза для объединения нескольких отдельных запросов в один общий. Проектирование и реализация,
Эффективность операционных процессов
Перенесение в шлюз Перенесение общих или специализированных функций служб на прокси-сервер шлюза. Проектирование и реализация,
Эффективность операционных процессов
Маршрутизация шлюза Используйте одну конечную точку при маршрутизации запросов к нескольким службам. Проектирование и реализация,
Эффективность операционных процессов
Geode Развертывайте серверные службы в нескольких географических узлах, каждый из которых может обслуживать любой клиентский запрос в любом регионе. Надежность,
Эффективность операционных процессов
Мониторинг конечных точек работоспособности Внедрение в приложение функциональных проверок, к которым внешние средства могут регулярно получать доступ через предоставленные конечные точки. Надежность,
Эффективность операционных процессов
Таблица индексов Создание в хранилище данных индексов по полям, которые часто используются в запросах. Управление данными,
Уровень производительности
Выбор лидера Метод координации действий для коллекции экземпляров, объединенных совместной задачей в распределенном приложении: один экземпляр выбирается в качестве лидера, который отвечает за управление другими экземплярами. Проектирование и реализация,
Надежность
Материализованное представление Создание предварительно заполненных представлений на основе данных из одного или нескольких хранилищ данных, когда данные не отформатированы для требуемых операций запросов. Управление данными,
Операционное превосходство,
Уровень производительности
Каналы и фильтры Задачу, которая требует сложной обработки, можно разбить на ряд отдельных элементов для повторного использования при необходимости. Проектирование и реализация,
Обмен сообщениями
Очередь с приоритетом Запросы, отправляемые в службу, получают разные приоритеты. При этом запросы с высоким приоритетом принимаются и обрабатываются быстрее, чем запросы с низким приоритетом. Обмен сообщениями,
Уровень производительности
Издатель/Подписчик Настройка в приложении возможности асинхронно объявлять событие для нескольких объектов-получателей без взаимозависимости между отправителями и получателями. Обмен сообщениями
Выравнивание нагрузки на основе очередей Очередь выполняет роль буфера между задачей и службой, которую она вызывает, позволяя сгладить кратковременные всплески нагрузки. Надежность,
Обмен сообщениями,
Устойчивость,
Уровень производительности
Шаблон ограничения скорости Ограничивающий шаблон, помогающий избежать или минимизировать ошибки регулирования, связанные с этими ограничениями регулирования, а также для более точного прогнозирования пропускной способности. Надежность
Повторить Механизм обработки ожидаемых временных сбоев, при котором приложение повторно подключается к службе или сетевому ресурсу, обращение к которым завершилось сбоем, не прерывая потока событий. Надежность
Сага Управление согласованностью данных в микрослужбах в сценариях распределенных транзакций. Сага — это последовательность транзакций, которые обновляют каждую службу и публикуют сообщение или событие для активации следующего шага транзакции. Обмен сообщениями
Планировщик, агент, контролер Координируйте ряд действий в распределенном наборе служб и других удаленных ресурсов. Обмен сообщениями,
Надежность
Последовательная передача Обработка набора связанных сообщений в определенном порядке без блокирования обработки других групп сообщений. Обмен сообщениями
Сегментирование Вы можете разделить хранилище данных на несколько горизонтальных секций, которые называются сегментами. Управление данными,
Уровень производительности
Расширение Чтобы обеспечить изоляцию и инкапсуляцию, развертывайте компоненты приложения в отдельном процессе или контейнере. Проектирование и реализация,
Эффективность операционных процессов
Размещение статического содержимого Разверните статическое содержимое в облачной службе хранения для предоставления непосредственно клиенту. Проектирование и реализация,
Управление данными,
Уровень производительности
Подавление Пошаговая миграция устаревшей системы с постепенной заменой определенных компонентов новыми приложениями и службами. Проектирование и реализация,
Эффективность операционных процессов
Регулирование Контролируйте потребление ресурсов, используемых экземпляром приложения, отдельным клиентом или всей службой. Надежность,
Уровень производительности
Ключ камердинера Использование токена или ключа, который предоставляет клиентам ограниченный доступ к определенному ресурсу или службе. Управление данными,
Безопасность