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?!”
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á?
Fonte: imgflip.com
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!
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.
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?
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!
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.
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?