Do Node ao Deno no Serverless com Architect
Se pegarmos o Node e jogarmos as letras em um liquidificador, sairemos com o Deno. O novo runtime em Java(Type)Script feito em cima do Rust e V8, com um ponto chave bem importante, SEGURANÇA.
Feito pelo Ryan Dahl, o mesmo criador do Node, é como a V2 de um projeto. Em 2018 na JsConf da Europa, ele ja tinha feito uma palestra sobre as 10 coisas que ele se arrependia de ter feito no Node (https://www.youtube.com/watch?v=M3BM9TB-8yA), agora ele conseguiu refazer da melhor forma possível.
Acabou o NPM? E agora?
Parece estranho que agora não precisamos mais do NPM para gerenciar os pacotes em uma aplicação Java(Type)Script. Porém essa feature, é na verdade algo que já deveria estar sendo usada, e é conhecida como ES6 Imports. Com ela, não precisamos mais baixar o pacote e manter ele gerenciado em um arquivo padrão como o packages.json
. Todos os pacotes vão ser importados direto de uma URL, e eles vão estar em uma CDN, gerenciador de pacotes ou até mesmo em um repositório de versionamento.
Console agora também é um window
Antes no Node não tinhamos várias APIs que eram do namespace window
, e tínhamos vários problemas com libs que utilizavam deste namespace, pois ele não existia, quem era presente era o global
e isso era uma enorme dor de cabeça.
Isso não é mais problema para ninguém. Agora você pode pensar em Java(Type)Script como apenas uma linguagem. O window
esta presente como um todo, o seu console, agora também é um window
. Um exemplo disto, é que você pode executar um código com a Fetch API dentro da aplicação Deno sem nenhum problema.
Mas e o Serverless?
O Architect é um framework serverless que gerencia funções em Python, JavaScript e Ruby. Agora ele também tem em sua base de suporte o ambiente para Deno. Toda sua estrutura está preparada para os serviços da plataforma AWS, assim você pode utilizar de ferramentas como o S3, CloudFormation, Route 53, SQS, SNS, DynamoDB entre vários outros.
Configurando o Ambiente
Para usar do Deno com o Architect, temos de instalar antes alguns pacotes.
Primeiro temos de instalar o Deno. De acordo com a documentação oficial, a forma mais fácil de instalar o Deno é pelo terminal de comandos.
Instalando o Deno
Primeiro temos de instalar o Deno e deixar ele funcionando no computador.
Windows
No Windows você pode instalar usando o Chocolatey, Scoop, PowerShell ou Cargo.
Scoop: $ scoop install deno
Chocolatey: $ scoop install deno
Cargo: $ cargo install deno
PowerShell : $ iwr https://deno.land/x/install/install.ps1 -useb | iex
Linux
Nos ambientes Linux, você pode usar o Shell ou o Cargo para realizar a instalação.
Cargo: $ cargo install deno
Shell: $ curl -fsSL https://deno.land/x/install/install.sh | sh
MacOS
Para instalar dentro do MacOS, podemos utilizar o Shell, Homebrew e o Cargo.
Homebrew: $ brew install deno
Cargo: $ cargo install deno
Shell: $ curl -fsSL https://deno.land/x/install/install.sh | sh
Instalando o Architect
Agora temos de instalar o Architect como módulo global do NPM. Para isso temos de executar o comando no terminal:
NPM: $ npm install -g @architect/architect
Criando uma Lambda function com Deno
Vamos criar agora nossa primeira Lambda function utilizando o Deno como runtime de execução dela. Para isso temos de executar o seguinte comando no terminal:
O Architect vai gerar o projeto inicial, com o boilerplate pronto, algumas configurações já estarão presentes prontas para serem utilizadas e testadas.
Dentro da pasta gerada, vamos dentro da pasta src/http/get-index
e abrimos o index.ts
, neste arquivo vamos colocar o código.
Após isto, podemos executar o comando $ npm start
para executar o ambiente de desenvolvimento local e ver o resultado do retorno da API na url http://localhost:3333
Enviando para a AWS
Para enviar para produção o seu Lambda function com o Architect é bem simples e rápido. Você só precisa executar um comando: arc deploy
O Architect vai cuidar de gerar todo o processo de deploy, configuração do ambiente e infraestrutura necessária para sua Lambda ficar online e funcional.
No final ele vai te dar a URL que você pode acessar a Lambda em staging.