Стилі архітектури та шаблони комунікації
Розроблення застосунків на AWS
Ricardo Sueiras
Principal Technologist
Ваш інструктор
Що таке архітектурні шаблони?
Повторюваний розв'язок для типової проблеми.
Шаблони підказують, як поєднати служби AWS.
Архітектура визначає роботу застосунку під навантаженням.
Є кілька ключових архітектурних шаблонів.
Моноліти
Єдине, тісно зв'язане ціле.
Одна кодова база, одне розгортання.
Спочатку просто розробляти.
Масштабування болюче: масштабуєте все разом.
Мікросервіси
Невеликі незалежні служби: кожна відповідає за одну бізнес-можливість.
Розгортайте, масштабуйте та оновлюйте кожну службу окремо.
Компроміс: більше операційної складності й взаємодій між службами.
Serverless
Інфраструктуру не керуєте: лише код і конфігурацію.
Будуйте з керованих сервісів AWS.
AWS забезпечує виділення ресурсів, масштабування й обслуговування.
Компроміс: ліміти часу виконання, «холодні старти», залежність від постачальника.
Майже нуль операційних витрат і авто-масштабування.
Архітектура, керована подіями (EDA)
Компоненти спілкуються через події, а не прямими викликами.
Подія фіксує те, що сталося (оформлене замовлення, отриманий платіж, відправлення).
Виробники випромінюють події.
Споживачі підписуються на потрібні їм події.
Тісно і слабо зв'язані системи
Сучасні хмарні застосунки складаються з кількох служб.
Служби мають обмінюватися даними та координувати роботу.
Синхронна комунікація — тісне зв'язування.
Асинхронна — слабке зв'язування.
Синхронна комунікація
Служба надсилає запит і чекає відповіді.
Викликач блокується до відповіді або тайм-ауту.
Просто реалізувати й зрозуміти.
Тісне зв'язування: повільність чи збій нижче за течією може каскадувати.
Пом'якшуйте тайм-аутами, повторними спробами та «запобіжниками».
Шаблон: запит/відповідь
Основний підхід для більшості інтерфейсів застосунків.
Передбачувана поведінка.
Негайний зворотний зв'язок для користувачів.
Асинхронна комунікація
Відправник не чекає відповіді.
Надсилає повідомлення або подію й продовжує роботу.
Одержувач обробляє повідомлення незалежно.
Слабке зв'язування: краща масштабованість і відмовостійкість.
Добре справляється зі сплесками трафіку й частковими збоями.
Виклики: дублікати, порядок, остаточна узгодженість.
Шаблон: розв'язування залежностей через чергу
Виробник надсилає повідомлення до черги.
Споживач самостійно витягує та обробляє повідомлення.
Запобігає каскадним збоям.
Виробник і споживач масштабуються окремо.
Шаблон: черга воркерів
Кілька воркерів тягнуть повідомлення з однієї черги.
Повідомлення обробляються паралельно.
Дозволяє горизонтальне масштабування та вищу пропускну здатність.
Порядок повідомлень не гарантується.
Шаблон: publish/subscribe
Видавці надсилають повідомлення до теми SNS.
Кілька підписників отримують одне й те саме повідомлення.
Миттєве розсилання багатьом споживачам.
Шаблон: fan-out
Одне повідомлення доставляється багатьом споживачам одночасно.
Широко використовується в архітектурі, керованій подіями.
Корисно, коли кілька служб мають реагувати на одну подію.
Упорядкування повідомлень
Деякі навантаження мають обробляти повідомлення у правильній послідовності.
Amazon SQS FIFO і Kinesis підтримують упорядковану обробку.
Жорсткий порядок знижує пропускну здатність.
Балансуйте коректність і масштабованість.
Давайте потренуємось!
Розроблення застосунків на AWS
Preparing Video For Download...