Do Node ao Deno no Serverless com Architect

Heitor Ramon Ribeiro
How Kovi Work
Published in
4 min readJun 1, 2020
Deno-saur

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.

ES6 Import no Deno

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:

Comando de Inicialização da Lambda com Deno

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.

Código exemplo em Deno (https://github.com/kovihq/deno-serverless)

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.

TL:DR;

Usando o Architect, você pode criar uma Lambda com o Deno, a partir do comando no terminal:

Comando de Inicialização da Lambda com Deno

Repositório de exemplo

--

--

Heitor Ramon Ribeiro
How Kovi Work

Senior Software Engineer @ Kovi | Building for web since IE4 | Author of Vue.js 3 Cookbook [Packt (https://bit.ly/2QEUofl) | Amazon (https://amzn.to/32KEQw8)]