Увидел тут в комментах, что не всем понятно, про какие edge-лямбды иногда я говорю. Ок, погнали.
Лямбды можно условно разделить на два вида:
1 Классические лямбды, о которых обычно и говорят. Призваны заменить «обычный» бэкенд, запускаются в тех же датацентрах, где расположены виртуалки, базы данных и т.д. Стоят дороже, умеют больше.
2 Edge-лямбды. Расположены на серверах CDN, их задача быть как можно ближе к пользователю. Стоят дешевле, умеют меньше (зато как быстро!), функциональность наращивается с помощью богатого API от провайдера.
Иначе говоря, после того как люди вытащили статику на CDN и научились отдавать её максимально быстро, стало очень обидно, что иногда прежде чем отдать статику, надо сначала медленно сходить на сервер и что-то мелкое там посчитать/проверить. И тут возникла идея поставить такие маленькие миддлварки перед статикой. Причём сделать это максимально дёшево.
Не сказать, что идея совсем новая, например, популярное решение вытащить часть логики в nginx чтобы она даже не долетала до ноды. Можно вот по наличию определённой куки или заголовка раздавать разный контент (такое вот A/B). Или вернуть редирект. Или проверить авторизацию. А теперь всю эту логику можно положить в JS-код и закинуть в edge-лямбду.
Что можно ещё сделать? Можно запилить прокси, которое будет отдавать браузеру данные с другого бэка, в который иначе не достучаться из-за CORS-политик. Можно сделать умный кэш (Cloudflare даёт доступ к Cache API и даже к Key/Value хранилищу).
Можно ли целиком построить простое приложение на edge-лямбдах и статике используя различные облачные API в качестве бэкенда? Думаю да, возможностей куча. Но это, конечно, не полноценное приложение на node.js, в отличие от классической лямбды. Вот Cloudflare Workers хороший пример — крутятся на V8 с минимальной обвязкой, а для ускорения запуска и удешевления эксплуатации создают пользовательские контексты в V8 изолятах.
Круто, конечно, вот только это совсем уж вендор-лок.
Лямбды можно условно разделить на два вида:
1 Классические лямбды, о которых обычно и говорят. Призваны заменить «обычный» бэкенд, запускаются в тех же датацентрах, где расположены виртуалки, базы данных и т.д. Стоят дороже, умеют больше.
2 Edge-лямбды. Расположены на серверах CDN, их задача быть как можно ближе к пользователю. Стоят дешевле, умеют меньше (зато как быстро!), функциональность наращивается с помощью богатого API от провайдера.
Иначе говоря, после того как люди вытащили статику на CDN и научились отдавать её максимально быстро, стало очень обидно, что иногда прежде чем отдать статику, надо сначала медленно сходить на сервер и что-то мелкое там посчитать/проверить. И тут возникла идея поставить такие маленькие миддлварки перед статикой. Причём сделать это максимально дёшево.
Не сказать, что идея совсем новая, например, популярное решение вытащить часть логики в nginx чтобы она даже не долетала до ноды. Можно вот по наличию определённой куки или заголовка раздавать разный контент (такое вот A/B). Или вернуть редирект. Или проверить авторизацию. А теперь всю эту логику можно положить в JS-код и закинуть в edge-лямбду.
Что можно ещё сделать? Можно запилить прокси, которое будет отдавать браузеру данные с другого бэка, в который иначе не достучаться из-за CORS-политик. Можно сделать умный кэш (Cloudflare даёт доступ к Cache API и даже к Key/Value хранилищу).
Можно ли целиком построить простое приложение на edge-лямбдах и статике используя различные облачные API в качестве бэкенда? Думаю да, возможностей куча. Но это, конечно, не полноценное приложение на node.js, в отличие от классической лямбды. Вот Cloudflare Workers хороший пример — крутятся на V8 с минимальной обвязкой, а для ускорения запуска и удешевления эксплуатации создают пользовательские контексты в V8 изолятах.
Круто, конечно, вот только это совсем уж вендор-лок.