Lambda: CloudFront, Performance Flashcards
Как можно выполнять бизнес логику, препроцессинг запросов до попадания на сервер? Какие 2 варианта?
Есть возможность реализовать код в рамках Lambda функции.
И прикрепить его к Edge Location’у (к CloudFront Distribution
’у).
- CloudFront Function
- Lambda@Edge
Есть клиент, CloudFront Distribution и …
Запрос при этом делится на …
Origin
Viewer request, Origin request
Сравни CloudFront Functions и Lambda@Edge по:
- Доступные языки программирования
- Какую часть запроса можно менять
CloudFront Functions
- Легковесные функции на plain Javascript
- Нативная фича CloudFront’а (управляем всем кодом в CloudFront)
- Viewer request, Viewer response (Клиент - EdgeLocation)
Lambda@Edge
- Функции на NodeJS или Python, SDK и библиотеки
- Viewer request, Viewer response, Origin request, Origin response
Сравни CloudFront Functions и Lambda@Edge по:
- performance, время, одновременные запуски
CloudFront Functions
- Доли миллисекунд для запуска
- Миллионы запросов в секунду (масштабирование)
- Максимальное время выполнения < 1 ms
Lambda@Edge
- Тысячи запросов в секунду (масштабирование)
- Максимальное время выполнения 5-10 sec
Сравни CloudFront Functions и Lambda@Edge по:
- Доступ к телу запроса
- Доступ к EFS
CloudFront Functions
- Нет доступа к телу запроса
- Нет доступа к EFS
Lambda@Edge
- Есть доступ к телу запроса
- Есть доступ к EFS
Что такое CDN?
CDN (content delivery network) - сеть сообщающихся серверов, которая ускоряет загрузку тяжеловесного веб-сайта.
Ключевые слова для CloudFront Functions
hight performance, high scale,
only user request / user response,
fast execution, primitive processing,
plain JS
Примитивная работа с Cache Key, HTTP Headers, URL, JWT токеном.
Но супер-быстро, супер-производительно, супер-масштабируемо.
Ключевые слова для Lambda@Edge
Более основательная, полноценная работа с использованием внешних библиотек, доступом к AWS сервисам, EFS.
Но менее производительно, дольше выполняется.
Основные UseCases для CloudFront Functions
- Создание
CDN
для снижение latency - Оптимизация ключа кэша (Edge Location Cache Key)
- Изменения HTTP Header’ов (добавить, убрать в запрос, в ответ)
- Изменения URL (перенаправление)
- Проверка authorization прав (валидация JWT токена)
Какие возможности есть у Lambda@Edge, которых НЕТ у CloudFront Functions?
- Можно настраивать CPU, Memory
- Можно подключить SDK и 3-rd party библиотеки
- Можно взаимодействовать с другими AWS сервисами по сети
- Есть доступ к телу запроса и EFS
Какие минусы есть у Lambda@Edge, которых НЕТ у CloudFront Functions?
- Дольше время выполнения (5-10 секунд, а НЕ доля миллисекунды)
- Менее производительно, тысячи запросов в секунду
В чём суть идеи Lambda Execution Context?
Execution Context - это временный runtime environment,
в котором можно инициализировать зависимости для Лямбда функции,
которые она будет повторно использовать при последующих вызовах.
Что можно сделать в Execution Context? Например?
- Создать объект соединения с БД
- Создать HTTP клиент, SDK клиент
Как хранить в контексте тяжёлый файл? Каков лимит на его размер?
/tmp папка - это часть execution context’а
10 ГБ максимум
multiple invocation = reuse
/tmp
Временное или постоянное хранилище? Как зашифровать файл?
ephemeral временный (если нужен постоянный - S3, EFS)
KMS Data Keys