Fastify: o framework NodeJS rápido e seguro
![Fastify: o framework NodeJS rápido e seguro](assets/fastify-framework-nodejs-rapido-seguro/capa-fastify-framework-nodejs-rapido-seguro.png)
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.](assets/fastify-framework-nodejs-rapido-seguro/imagem1.gif)
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”.](assets/fastify-framework-nodejs-rapido-seguro/imagem2.png)
Fonte: imgflip.com
![Banner da Escola de Programação: Matricula-se na escola de Programação. Junte-se a uma comunidade de mais de 500 mil estudantes. Na Alura você tem acesso a todos os cursos em uma única assinatura; tem novos lançamentos a cada semana; desafios práticos. Clique e saiba mais!](assets/alura-matricula-maior-escola-tecnologia-brasil-mais-500-mil-estudantes/matricula-escola-programacao-alura-saiba-mais-versao-mobile.png)
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.](assets/fastify-framework-nodejs-rapido-seguro/imagem3.gif)
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.](assets/fastify-framework-nodejs-rapido-seguro/imagem4.gif)
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.](assets/fastify-framework-nodejs-rapido-seguro/imagem5.gif)
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.](assets/fastify-framework-nodejs-rapido-seguro/imagem6.gif)
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.](assets/fastify-framework-nodejs-rapido-seguro/imagem7.png)
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?