Архитектурные стили и паттерны взаимодействия

Разработка приложений на AWS

Ricardo Sueiras

Principal Technologist

Ваш инструктор

instructor

Разработка приложений на AWS

Что такое архитектурные паттерны?

 

 

Архитектура приложения

 

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

Монолиты

 

 

Пример монолитной архитектуры

 

 

  • Единый, тесно связанный модуль.
  • Одна кодовая база, одно развёртывание.
  • Просто разрабатывать на начальном этапе.
  • Масштабировать сложно: всё масштабируется целиком.
Разработка приложений на AWS

Микросервисы

 

Архитектура микросервисов

 

  • Небольшие независимые сервисы: каждый отвечает за одну бизнес-функцию.
  • Каждый сервис развёртывается, масштабируется и обновляется независимо.
  • Компромисс: выше операционная сложность и накладные расходы на взаимодействие сервисов.
Разработка приложений на AWS

Бессерверная архитектура

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

 

Бессерверная архитектура

Разработка приложений на AWS

Событийно-ориентированная архитектура (EDA)

  • Компоненты взаимодействуют через события, а не прямые вызовы.
  • Событие фиксирует произошедшее действие (заказ оформлен, платёж получен, товар отправлен).
  • Производители генерируют события.
  • Потребители подписываются на нужные им события.

 

Событийно-ориентированная архитектура

Разработка приложений на AWS

Тесная и слабая связанность систем

  • Современные облачные приложения состоят из множества сервисов.
  • Сервисы должны взаимодействовать и координироваться для выполнения задач.
  • Синхронное взаимодействие — тесная связанность.
  • Асинхронное взаимодействие — слабая связанность.

Системы с тесной и слабой связанностью

Разработка приложений на AWS

Синхронное взаимодействие

 

Синхронное взаимодействие

  • Сервис отправляет запрос и ждёт ответа.
  • Вызывающая сторона заблокирована до получения ответа или истечения таймаута.
  • Просто реализовать и понять.
  • Тесная связанность: замедление или сбой нижестоящего сервиса может распространиться каскадом.
  • Снижайте риски с помощью таймаутов, повторных попыток и автоматических выключателей.
Разработка приложений на AWS

Паттерн: запрос/ответ

Запрос-ответ

  • Основа большинства интерфейсов приложений.
  • Предсказуемое поведение.
  • Мгновенная обратная связь для пользователей.
Разработка приложений на AWS

Асинхронное взаимодействие

 

Асинхронное взаимодействие

  • Отправитель не ждёт ответа.
  • Отправляет сообщение или событие и продолжает обработку.
  • Получатель обрабатывает сообщение независимо.
  • Слабая связанность: лучшая масштабируемость и отказоустойчивость.
  • Справляется с пиками нагрузки и частичными сбоями.
  • Сложности: дублирование сообщений, порядок доставки, итоговая согласованность.
Разработка приложений на AWS

Паттерн: разделение через очередь

  • Производитель помещает сообщения в очередь.
  • Потребитель извлекает и обрабатывает сообщения независимо.
  • Предотвращает каскадное распространение сбоев.
  • Производитель и потребитель масштабируются независимо.

  На основе очереди

Разработка приложений на AWS

Паттерн: очередь обработчиков

  • Несколько обработчиков извлекают сообщения из одной очереди.
  • Сообщения обрабатываются параллельно.
  • Обеспечивает горизонтальное масштабирование и высокую пропускную способность.
  • Порядок сообщений не гарантирован.

Очередь обработчиков

Разработка приложений на AWS

Паттерн: издатель/подписчик

  • Издатели отправляют сообщения в топик SNS.
  • Несколько подписчиков получают одно и то же сообщение.
  • Широковещательная рассылка в реальном времени множеству потребителей.

 

Паттерн издатель/подписчик

Разработка приложений на AWS

Паттерн: веерная рассылка

Веерная рассылка

  • Одно сообщение доставляется нескольким потребителям одновременно.
  • Широко используется в событийно-ориентированных архитектурах.
  • Применяется, когда несколько сервисов должны реагировать на одно событие.
Разработка приложений на AWS

Порядок сообщений

Порядок сообщений

  • Некоторые рабочие нагрузки требуют строгого порядка обработки сообщений.
  • Amazon SQS FIFO и Kinesis поддерживают упорядоченную обработку.
  • Строгий порядок снижает пропускную способность.
  • Ищите баланс между корректностью и масштабируемостью.
Разработка приложений на AWS

Давайте потренируемся!

Разработка приложений на AWS

Preparing Video For Download...