Стилі архітектури та шаблони комунікації

Розроблення застосунків на AWS

Ricardo Sueiras

Principal Technologist

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

інструктор

Розроблення застосунків на AWS

Що таке архітектурні шаблони?

 

 

Архітектура застосунку

 

  • Повторюваний розв'язок для типової проблеми.
  • Шаблони підказують, як поєднати служби AWS.
  • Архітектура визначає роботу застосунку під навантаженням.
  • Є кілька ключових архітектурних шаблонів.
Розроблення застосунків на AWS

Моноліти

 

 

діаграма прикладу монолітної архітектури

 

 

  • Єдине, тісно зв'язане ціле.
  • Одна кодова база, одне розгортання.
  • Спочатку просто розробляти.
  • Масштабування болюче: масштабуєте все разом.
Розроблення застосунків на AWS

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

 

архітектура мікросервісів

 

  • Невеликі незалежні служби: кожна відповідає за одну бізнес-можливість.
  • Розгортайте, масштабуйте та оновлюйте кожну службу окремо.
  • Компроміс: більше операційної складності й взаємодій між службами.
Розроблення застосунків на AWS

Serverless

  • Інфраструктуру не керуєте: лише код і конфігурацію.
  • Будуйте з керованих сервісів AWS.
  • AWS забезпечує виділення ресурсів, масштабування й обслуговування.
  • Компроміс: ліміти часу виконання, «холодні старти», залежність від постачальника.
  • Майже нуль операційних витрат і авто-масштабування.

 

безсерверна архітектура

Розроблення застосунків на AWS

Архітектура, керована подіями (EDA)

  • Компоненти спілкуються через події, а не прямими викликами.
  • Подія фіксує те, що сталося (оформлене замовлення, отриманий платіж, відправлення).
  • Виробники випромінюють події.
  • Споживачі підписуються на потрібні їм події.

 

архітектура, керована подіями

Розроблення застосунків на AWS

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

  • Сучасні хмарні застосунки складаються з кількох служб.
  • Служби мають обмінюватися даними та координувати роботу.
  • Синхронна комунікація — тісне зв'язування.
  • Асинхронна — слабке зв'язування.

тісно й слабо зв'язані системи

Розроблення застосунків на AWS

Синхронна комунікація

 

синхронні комунікації

  • Служба надсилає запит і чекає відповіді.
  • Викликач блокується до відповіді або тайм-ауту.
  • Просто реалізувати й зрозуміти.
  • Тісне зв'язування: повільність чи збій нижче за течією може каскадувати.
  • Пом'якшуйте тайм-аутами, повторними спробами та «запобіжниками».
Розроблення застосунків на AWS

Шаблон: запит/відповідь

request response

  • Основний підхід для більшості інтерфейсів застосунків.
  • Передбачувана поведінка.
  • Негайний зворотний зв'язок для користувачів.
Розроблення застосунків на AWS

Асинхронна комунікація

 

асинхронні комунікації

  • Відправник не чекає відповіді.
  • Надсилає повідомлення або подію й продовжує роботу.
  • Одержувач обробляє повідомлення незалежно.
  • Слабке зв'язування: краща масштабованість і відмовостійкість.
  • Добре справляється зі сплесками трафіку й частковими збоями.
  • Виклики: дублікати, порядок, остаточна узгодженість.
Розроблення застосунків на AWS

Шаблон: розв'язування залежностей через чергу

  • Виробник надсилає повідомлення до черги.
  • Споживач самостійно витягує та обробляє повідомлення.
  • Запобігає каскадним збоям.
  • Виробник і споживач масштабуються окремо.

  на базі черги

Розроблення застосунків на AWS

Шаблон: черга воркерів

  • Кілька воркерів тягнуть повідомлення з однієї черги.
  • Повідомлення обробляються паралельно.
  • Дозволяє горизонтальне масштабування та вищу пропускну здатність.
  • Порядок повідомлень не гарантується.

черга воркерів

Розроблення застосунків на AWS

Шаблон: publish/subscribe

  • Видавці надсилають повідомлення до теми SNS.
  • Кілька підписників отримують одне й те саме повідомлення.
  • Миттєве розсилання багатьом споживачам.

 

шаблон publish/subscribe

Розроблення застосунків на AWS

Шаблон: fan-out

fanout

  • Одне повідомлення доставляється багатьом споживачам одночасно.
  • Широко використовується в архітектурі, керованій подіями.
  • Корисно, коли кілька служб мають реагувати на одну подію.
Розроблення застосунків на AWS

Упорядкування повідомлень

упорядкування повідомлень

  • Деякі навантаження мають обробляти повідомлення у правильній послідовності.
  • Amazon SQS FIFO і Kinesis підтримують упорядковану обробку.
  • Жорсткий порядок знижує пропускну здатність.
  • Балансуйте коректність і масштабованість.
Розроблення застосунків на AWS

Давайте потренуємось!

Розроблення застосунків на AWS

Preparing Video For Download...