Escala e velocidade em Golang com Fiber

Um dos grandes desafios em se definir soluções em tecnologia, quando falamos especificamente de desenvolvimento de software, é encontrarmos um consenso que atende todos os critérios, tais como, escalabilidade, velocidade, facilidade de manutenção, entre outros.

Fato é que há sempre uma melhor solução para um cenário específico. Jamais devemos considerar uma solução padrão que resolve todos os cenários. Diante disso, comento aqui sobre o Golang, usando o Fiber (https://gofiber.io/), que se entitula um framework para API’s para Golang e que se apresenta como o mais rápido para a linguagem.

Vamos então aos pontos. Simplesmente falar que é rápido é fácil, então precisamos entender algumas questões aqui. O Golang se assemelha ao C, poderíamos dizer que se originou dele. O C, por sua vez, é uma linguagem que trabalha compilada, resulta em código de máquina, diretamente, sem necessidade de interpretadores, como o Java, que utiliza a JVM.

Quando falamos de API, portanto, temos diversas variáveis no contexto, desde rotas expostas por controllers até a camada de repositório, de acesso à banco de dados, tomando como base por exemplo o uso de DDD (Domain Driven Design), onde temos uma estrutura bem definida, clara, baseada em domínios e que nos ajudam em uma arquitetura de microserviços.

Ok. Mas o que o Fiber tem de bom? Para API’s que atendem escopos específicos, desafiadores quando queremos uma escala alta de requisições, o Fiber abstrai parte do desenvolvimento, conectando rotas (endpoints) com interações diretas com banco de dados. Isso explica o comparativo que eles colocam no site, demonstrando este ganho, baseado em 350 mil requisições por segundo.

Bom, seria perfeito se decidíssimos nossas soluções olhando simplesmente o gráfico de um determinado framework, principalmente quando divulgado pelo próprios produtores dele.

O que recomendo e pratico sempre é fazer um teste, o que comumente chamamos de “LAB” ou “PoC” (prova de conceito). E, após realizar alguns testes, comparando no meu caso uma mesma API desenvolvida com Go + Fiber e uma em Kotlin, é que inexplicavemente, usando o mesmo banco de dados, partindo de uma mesma rede com igual latência, o retorno da API em Golang retorna em média com 30% um menor tempo de resposta neste cenário. Importante dizer que estamos falando de milissegundos, que pode não ser algo tão gritante, mas quando pensamos em escala, isso passa a ser sim um ponto chave.

Em breve traremos aqui mais detalhes desta e outras PoC’s, mas de antemão, sugiro a quem estiver lendo este post, que acessem o site do Fiber e façam seus testes. Obviamente e mais uma vez salientando, a solução atenderá a alguns cenários e objetivos. Ter esta como uma das soluções, é positivo e pode ser mais uma solução no seu portfólio de ideias.

Bora codar!

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *