Fastify: o framework NodeJS rápido e seguro

Fastify: o framework NodeJS rápido e seguro

Introdução

Talvez a primeira reação ao se deparar com o tema deste artigo seja “Ah... mais um Framework JavaScript?!”

Imagem do personagem Stanley, da série The Office. O personagem é um homem de meia idade, negro, careca e com bigodes. Ele veste um terno da cor cinza, com gravata e uma blusa branca listrada. A expressão dele é de completo tédio e ele revira os olhos para demonstrar insatisfação.

Fonte: gfycat.com

Mas, calma! Você descobrirá como o Fastify pode ser útil no seu cotidiano como desenvolvedor(a), quais são seus principais recursos e como levantar um servidor! Vamos lá?

Cena do filme “Meninas Malvadas” que virou meme. A imagem mostra três mulheres num carro conversível, a do primeiro plano é caucasiana, loira e está sorrindo. No segundo plano, aparece uma mulher negra com cabelos castanhos e outra mulher caucasiana e loira. Há uma frase, como uma legenda que diz “Entre no carro, Dev. Vamos conhecer o Fastify”.

Fonte: imgflip.com

Banner da promoção da black friday, com os dizeres: A Black Friday Alura está chegando. Faça parte da Lista VIP, receba o maior desconto do ano em primeira mão e garanta bônus exclusivos. Quero ser VIP

O que é Fastify?

Fastify é um framework Back-End para JavaScript e pode ser utilizado com o ecossistema Node.JS - que conquista muitos adeptos a cada ano. Uma confirmação disso é que na pesquisa da State of JS de 2021 (pesquisa anual com milhares de desenvolvedores sobre tecnologias envolvendo JavaScript), a ferramenta aparece em 3º lugar no ranking de satisfação entre usuários, isso significa que 91% dos participantes que tiveram contato com o framework aprovaram sua estrutura para o Back-End e o utilizariam novamente.

Tudo bem, vimos até agora que o Fastify tem uma boa aderência entre as pessoas DEV, mas isso me fez lembrar algo que minha mãe sempre fala (e é uma marca pessoal dela, tipo um bordão mesmo): “tu és maria vai com as outras por um acaso?” - eu respondo: claro que não mãe, mas na verdade, lá no fundinho, eu estava querendo ir com a galera!

O vídeo em loop retrata um evento que ocorreu em Santos, que foi a corrida do personagem de anime “Naruto”. No vídeo, vários jovens correm sem destino com o corpo levemente apontado para frente e os braços inclinados para trás, reproduzindo a forma que o personagem corre.

Fonte: gfycat.com

Longe da discussão sobre efeito manada, ainda considero importante verificar, avaliar e testar uma tecnologia em franco crescimento. Nesse sentido, a grande aceitação é porque Fastify realmente cumpre o que promete, que é a velocidade nas requisições de suas aplicações.

Isso acontece porque o framework possui uma arquitetura baseada em plugins. Em outras palavras, tudo é um plugin no Fastify.

Dessa forma, há menor sobrecarga do que em frameworks como o express (mesmo que seja um framework minimalista), o que ajuda em muito no desenvolvimento de aplicações baseadas em microsserviços.

Além disso, devido a sua arquitetura, a ferramenta também garante maior segurança e performance, constituindo-se em uma boa experiência para a pessoa desenvolvedora.

Fastify é um framework web bem parecido com o express mas a inspiração do modelo de plug-ins veio do Hapi.

O encapsulamento permite que cada plug-in use suas próprias dependências e hooks se houver necessidade, e esse comportamento possibilita maior reusabilidade de software. Além disso, o completo encapsulamento para os plug-ins fornece um roteamento mais rápido devido a renderização mais veloz do JSON.

Outro ponto é que a arquitetura de plug-ins trata o código de forma assíncrona e garante seu carregamento e interrupção. O Fastify já apresenta grande compatibilidade e integração com React, banco de dados, suporte a GraphQL, dentre outros.

Por fim, Fastify anda de mãos dadas com NodeJS.

Cena do filme “Rocky”. O vídeo mostra o personagem Rocky, caucasiano e o personagem Apollo, negro. Ambos comemoraram e se abraçam numa praia, estão com shorts e blusas curtas, típicas para a prática de exercícios.

Fonte: giphy.com

Certo, agora está claro que o Fastify tem inúmeras vantagens... mas será que vale a pena aprender mais uma tecnologia e substituir o uso do já consolidado Express?

Fastify vs Express

Há muitos fatores que interferem na escolha de uma tecnologia, como o tamanho da sua aplicação ou o tipo de suporte necessário para mantê-la de pé. Isso se aplica também na sua escolha e necessidade, que podemos resumir na pergunta: quando posso usar o Fastify?

Como já vimos, a proposta do Fastify é ser rápido, e isso ocorre principalmente quando se trata de suas APIs HTTP. Em um teste simples, que envia um “Hello World”, o Fastify realiza 58063 requisições por segundo e passa muito a frente do Express, com 12050 requisições por segundos! Você pode conferir o teste aqui: https://www.fastify.io/benchmarks/

Por outro lado, o Express possui uma documentação muito completa, é extremamente popular entre empresas e na própria comunidade que até integra as stacks conhecidas como MEAN (MongoDB, Express, Angular, e Node) e MERN (MongoDB, Express, React, e Node).

De qualquer forma, já entendemos que o Fastify busca elevar a experiência com o NodeJS com um código mais limpo, velocidade e menor sobrecarga.

No entanto, se você é um apaixonado pelo Express e já se sente confortável com o framework, simplesmente é possível consumir alguns middlewares que fornecem compatibilidade com Express. O interessante mesmo é saber se a ferramenta faz sentido para você. Ok?

A imagem em loop mostra um homem branco de terno e gravata, o personagem Michael da série The Office. Ele está sorrindo em direção a câmera e aponta os dedos indicadores em sua direção, seus polegares estão levantados.

Fonte: pa1.narvii.com

Primeiros passos com Fastify: Hello World

Vamos conhecer sua aplicação na prática — com um começo super rápido?

Aqui vamos subir um servidor e enviar um “Hello, World” para dar sorte.🍀🤞

Instale o Fastify com NPM:

npm install fastify

Depois crie um arquivo server.js e adicione o código abaixo:

// Para realizar a requisição do framework e instância-lo: 

const fastify = require('fastify')({ logger: true })

// Declare uma rota
fastify.get('/', async (request, reply) => {
  return { hello: 'world' }
})

// Para rodar o servidor!
const inicio = async () => {
  try {
    await fastify.listen(3000)
  } catch (err) {
    fastify.log.error(err)
    process.exit(1)
  }
}
inicio()

E, finalmente, inicie o servidor com:

node server

Você pode testá-lo com:

curl http://localhost:3000

Parabéns! Agora você tem seu servidor super rápido rodando na porta 3000!

Vídeo em loop que mostra um grupo de três pessoas comemorando. No primeiro plano há um homem caucasiano com blusa azul, camiseta marrom e calças jeans. No segundo plano há duas mulheres, a do canto esquerdo é caucasiana, usa um cardigã cinza, blusa quadriculada e calça escura; a do canto direito é latina, cabelos escuros, usa uma jaqueta de couro e calça escura. As duas mulheres vibram e a do canto direito abraça e levanta o homem que está no centro.

Fonte: primogif.com

É claro que não é somente isso que o Fastify fornece, você pode encontrar muito mais na documentação oficial como o uso de CLI, validações com o uso de Schemas em JSON ou mesmo o suporte ao TypeScript.

Conclusão

O framework Fastify é uma excelente opção para o desenvolvimento Back-End e muitas empresas como Microsoft, Skeelo, e flash (algo legal é que a documentação até ensina como sua empresa pode aparecer na página oficial do fastify link. Propaganda gratuita para sua organização).

Dessa forma, vale muito a pena compreender seu funcionamento e conhecer seus principais recursos. Vamos conferir alguns?

  • Sintaxe: Fastify apresenta uma sintaxe clean para a escrita de código assíncrona nos controllers;
  • Alta performance: framework com foco na velocidade e dependendo da complexidade do código, pode realizar até 30 mil requisições por segundo;
  • Extensível: os hooks, plugins e decorators possibilitam a extensão de suas aplicações;
  • TypeScript: suporte a declaração de tipos em TypeScript;
  • Open-Source: a ferramenta é de código-aberto e também faz parte da OpenJS foundation.
Diagrama de principais recursos do fastify. Desenho de homem caucasiano vestindo um casaco vermelho usando o notebook no centro da imagem, com setas para círculos coloridos, cada um com uma cor e uma seta correspondente, são eles - da esquerda para direita: sintaxe amigável, em um círculo azul; alta performance, em um círculo marrom; extensível, em círculo roxo; typescript, em um círculo amarelo; Open-source, em círculo laranja.

Fonte: Elaboração própria

Por fim, a grande ideia por trás do Fastify, além de sua velocidade, é o encapsulamento para plug-ins, pois facilita a divisão de sua aplicação em vários microsserviços sem precisar refatorar todo seu projeto. Algo que facilita muito a vida da pessoa desenvolvedora durante manutenção de código ou para ampliação de seu projeto.

E você, o que acha? Já usou Fastify alguma vez ou gostaria de ver mais conteúdo sobre o tema por aqui?

Compartilha sua opinião no discord da Alura: Link para o Discord da Alura.

E então, vamos aprender mais?

Camila Pessôa
Camila Pessôa

Oi oi, sou a Camila ! Ingressei na área de tecnologia por meio da robótica educacional e comecei os estudos em programação com desenvolvimento web e foco Back-end com Node.js. Adoro ler, assistir séries/filmes, animes, jogar e passear ao ar livre com minha filhota.Tenho tenho grande paixão por educação e tecnologia, pois acredito que essa combinação é transformadora! :)

Veja outros artigos sobre Programação