Масштабування та керування паралельністю

Безсерверні застосунки з AWS Lambda

Claudio Canales

Senior DevOps Engineer

Масштабування на одному рисунку

  • Більший попит -> більше паралельних запусків.
  • Кожен запуск використовує середовище виконання.
  • Паралельність = запуски, що тривають зараз.

Сплеск попиту -> більше середовищ

Безсерверні застосунки з AWS Lambda

Що таке паралельність?

  • Одна інвокація = одна одиниця роботи.
  • Паралельність = скільки працює зараз.
  • Якщо працює 10, паралельність = 10.

Паралельні інвокації

Безсерверні застосунки з AWS Lambda

Оцінювання потрібної паралельності

  • Практичне правило: concurrency = rps * duration.
  • Зменште тривалість, щоб зменшити паралельність.
  • Використовуйте це для безпечного вибору лімітів.

Формула паралельності

Безсерверні застосунки з AWS Lambda

Приклад: 50 rps за 200 мс

  • 200 мс = 0,2 секунди.
  • 50 * 0,2 = 10 паралельних виконань.
  • Швидший код = менше паралельних запусків.

Приклад розрахунку паралельності

Безсерверні застосунки з AWS Lambda

Ліміти: пул акаунта vs частка функції

  • Паралельність обмежено на рівні облікового запису.
  • Зарезервуйте частину пулу для критичної функції.
  • Інші функції ділять решту.

Пул паралельності облікового запису

Безсерверні застосунки з AWS Lambda

Reserved Concurrency: жорсткий ліміт

  • Запобіжний клапан.
  • Обмежує паралельну роботу.
  • Понад ліміт інвокації приглушуються.
  • Шумна функція не вичерпає місткість.

Жорсткий ліміт зарезервованої паралельності

Безсерверні застосунки з AWS Lambda

Throttling: як це виглядає

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

Сигнали приглушення

Безсерверні застосунки з AWS Lambda

Provisioned Concurrency: тепла місткість

  • Пул попередньо ініціалізованих середовищ.
  • Часто за alias.
  • Запити стартують швидше.

Теплий пул provisioned concurrency

Безсерверні застосунки з AWS Lambda

Cold start vs provisioned

Cold start

  • Одноразова затримка ініціалізації.
  • Перший запит оплачує налаштування.

Provisioned

  • Ініціалізацію виконано наперед.
  • Перший запит не платить за налаштування.

Шкала часу: cold vs provisioned

Безсерверні застосунки з AWS Lambda

Reserved vs provisioned (різні задачі)

  • Reserved керує навантаженням.
  • Provisioned керує затримкою старту.
  • Багато продакшен-функцій поєднують обидва.

Порівняння reserved vs provisioned

Безсерверні застосунки з AWS Lambda

Захист нижчерозташованих систем

  • База даних витримує обмежену кількість з'єднань.
  • Ліміт паралельності запобігає перевантаженню.
  • Сплеск трафіку може спричинити збій.

Ліміт паралельності захищає базу даних

Безсерверні застосунки з AWS Lambda

Сплески vs сталий трафік

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

Сплесковий трафік vs сталий стан

Безсерверні застосунки з AWS Lambda

Збої та повтори збільшують навантаження

  • Повторні спроби можуть підсилювати трафік.
  • Ліміти паралельності зменшують зону ураження.
  • Петля збоїв може перевантажити залежності.

Ретрі множать навантаження

Безсерверні застосунки з AWS Lambda

Простий робочий процес налаштування

  • Почніть із вимірювань.
  • Обмежуйте паралельність, коли з'являються приглушення чи тиск.
  • Додавайте теплу місткість, коли cold start шкодить затримці.

Виміряй -> обмеж -> підігрій

Безсерверні застосунки з AWS Lambda

Основні висновки

  • Паралельність допомагає мислити про масштабування.
  • Оцінка: rps * duration.
  • Reserved обмежує навантаження; стежте за приглушеннями.
  • Provisioned зменшує затримку cold start.

Ключові висновки про паралельність

Безсерверні застосунки з AWS Lambda

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

Безсерверні застосунки з AWS Lambda

Preparing Video For Download...