Налаштування AWS Lambda для продакшену

Розгортання застосунків в AWS

Dunieski Otano

Amazon Web Services Solutions Architect

У тесті все працювало

  • Функція пройшла всі тести
  • У продакшені виник таймаут і тротлінг
  • Код був коректний; проблема в конфігурації

Безсерверна функція, що пройшла тестування, але має проблеми в продакшені; налаштовуються повзунки пам'яті та таймауту

Розгортання застосунків в AWS

Налаштування Lambda, що важливі в продакшені

Центральний логотип Lambda з чотирма важливими продакшен-налаштуваннями: Memory з шкалою CPU, Timeout з годинником, Ephemeral Storage, Concurrency з паралельними інстансами функції

  • Memory: також масштабує CPU і мережу
  • Timeout: максимум секунд до завершення функції
  • Ephemeral storage: тимчасовий простір у /tmp
  • Concurrency: скільки виконується одночасно
Розгортання застосунків в AWS

Розмір пам'яті та зв'язок із CPU

  • Більше пам'яті = пропорційно більше CPU
  • CPU-обмежена функція працює швидше з більшою пам'яттю
  • Коротша тривалість може дати меншу вартість
  • Підбирайте розмір тестами, а не здогадками

Крива пам'ять-вартість: тривалість різко падає з ростом пам'яті й далі вирівнюється; загальна вартість має U-подібну форму, найдешевша точка позначена посередині

Розгортання застосунків в AWS

Concurrency: reserved vs provisioned


Reserved concurrency

  • Обмежує максимум одночасних виконань
  • Захищає залежні системи та інші функції

Provisioned concurrency

  • Попередньо прогріває інстанси, без cold start
  • Для функцій із чутливою до затримки, користувацькою взаємодією
Розгортання застосунків в AWS

Пакування конфігурації та спільного коду

  • Environment variables: конфігурація на середовище
  • Layers: спільний код і залежності для функцій
  • Extensions: запускаються поряд із функцією для інструментів
  • Тримайте конфігурацію поза пакетом розгортання

Опції пакування Lambda: змінні середовища для зовнішньої конфігурації, шари для спільних бібліотек між функціями та розширення, що працюють поряд із обробником для моніторингу чи секретів

Розгортання застосунків в AWS

Підключення Lambda до VPC

Lambda під'єднана до приватної VPC через ENI у приватних підмережах; група безпеки контролює вихідний доступ; NAT-шлюз надає підключення до інтернету

  • Приєднайте Lambda до private subnets для внутрішніх ресурсів
  • Lambda створює ENIs у вашій VPC
  • Security groups визначають, що вона може досягти
  • Для зовнішнього доступу потрібен NAT або VPC endpoint
Розгортання застосунків в AWS

Обробка збоїв з destinations і DLQ

  • Асинхронні виклики автоматично ретраять у разі збою
  • Lambda Destinations: маршрути для onSuccess та onFailure
  • Dead-letter queue: фіксує події, що так і не вдалися
  • Ніколи не «губіть» невдалу подію

Обробка збоїв асинхронної Lambda: цикл повторних спроб, що веде до Lambda Destinations з гілками onSuccess та onFailure, і черга dead-letter для подій після вичерпання спроб

Розгортання застосунків в AWS

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

Розгортання застосунків в AWS

Preparing Video For Download...