June 7, 2021

Last week I learned

Есть такой формат Today I Learned - когда люди рассказывают про какую-то интересную или новую (для них) штуку, про которую они сегодня узнали. У меня такие штуки есть, но я решил их собирать в один пост за неделю, а не публиковать их отдельно как твиты.

AWS Lambda Extensions Are Now Generally Available – Get Started with Your Favorite Operations Tools Today - AWS выкатил api для интеграции лямбд с внешними сервисами типа мониторинга, секьюрити, логирования и т.д. Не выглядит чем-то особенным, кажется что просто догоняют по фичам Vercel, где интеграции с внешними сервисами появились, наверно, год назад. А может и раньше. Но несмотря на это у AWS уже на старте анонсированных интеграций больше, чем есть до сих пор у Vercel.

Нашёл пост Serverless Next.js At The Edge в котором рассказывается про поддержку Next.js во фреймворке Serverless. Заявляется полная поддержка всех фичей Next 9 - SSR, prerendering, API routes, dynamic routes, client assets. Всё это работает на связке CloudFront, Lambda@Edge и S3. Деплой (кроме первого) обещают быстрый - около одной минуты. Говорят, что не используют CloudFormation и поэтому так быстро. Первый деплой медленный из-за разворачивания CloudFront. Сборка стандартная - next build. Вся получившаяся статика и сорцы складываются в S3 бакет. На уровне CloudFront настраивается роутинг и стратегии кеширования. CloudFront либо отдаёт статику напрямую с S3, либо запускает лямбду (сорцы которой тоже на S3), которая может либо выполнить код API роута, либо сделать SSR страницы. Для динамических роутов у них какой-то свой легковесный совместимый роутер, это самое непонятное место, надо отдельно смотреть. Репозиторий компонента https://github.com/serverless-nextjs/serverless-next.js. В планах есть поддержка других cloud-провайдеров, но судя по issue https://github.com/serverless-nextjs/serverless-next.js/issues/970 контрибьютеров (особенно знакомых с другими облаками) не хватает и скорой реализации этих планов ждать не приходится. Вообще в проекте всего пара активных контрибьютеров.

Начал пробовать использовать пакетный менеджер NixOS вместо Brew на MacOS. На этой неделе попробовал nix-shell для конфигурации локального окружения специфичного для конкретного проекта. Можно создать shell.nix скрипт в папке проекта, в котором описать какие пакеты и каких версий нужны и при запуске nix-shell он автоматически выполнит этот скрипт, установит нужные пакеты и добавит их в пути для текущей сессии. Но я видимо начал с не самого простого кейса - установки и запуска нужной для проекта версии PostgreSQL. В итоге потратил на это довольно много времени, но не могу сказать что всё идеально работает. Нужно будет ещё потратить какое-то время, чтобы получше разобраться и попробовать другие пакеты - nodejs и yarn и т.п.

https://www.facebook.com/alex.turkhanov/posts/10225855394148590 - заметка про статью по дисциплине инженерии технических и академических текстов. Первый раз про это слышу, надо будет почитать про это побольше.