O desempenho é uma preocupação constante para desenvolvedores que trabalham com APIs. Em um mundo cada vez mais exigente, onde a latência pode definir o sucesso ou fracasso de uma aplicação, escolher o framework correto pode fazer toda a diferença.
Embora o package padrão net/http seja conhecido por sua performance e simplicidade, o framework Fiber consegue, em muito cenários, ir além, sendo uma alternativa promissora para construir APIs rápidas e eficientes.
Neste post, exploraremos como o Fiber pode melhorar o desempenho de suas APIs, faremos uma comparação com o go-chi e apresentaremos benchmarks para você tomar a melhor decisão para o seu projeto.
O que é o Fiber?
O Fiber é um framework web para Go, inspirado no popular framework Node.js, o Express. Ele se destaca por sua simplicidade, facilidade de uso e, principalmente, por seu foco em performance.
Abaixo listo as 5 principais características do Fiber.
- Extremamente Rápido: Construído sobre a biblioteca fasthttp, que é conhecida por ser mais rápida que a biblioteca
net/httppadrão do Go. - API Simples: A API do Fiber é muito semelhante ao Express, tornando fácil para desenvolvedores que vêm do mundo Node.js se adaptarem.
- Middleware: Oferece uma ampla variedade de middlewares prontos para uso.
- Flexível: Suporte para roteamento dinâmico, grupos de rotas e várias outras funcionalidades avançadas.
Para finalizar a apresentação do Fiber, fiz uma pequena comparação em relação ao router mais famoso, o go-chi.
| Aspecto | Go Fiber | go-chi |
|---|---|---|
| Desempenho | Mais rápido, devido ao uso do fasthttp | Usa o net/http, mais lento que fasthttp |
| API | Semelhante ao Express | Mais próximo do padrão Go |
| Facilidade de Uso | Mais simples para iniciantes | Mais verboso e idiomático em Go |
| Middlewares | Diversos middlewares prontos | Precisa de bibliotecas externas para alguns |
Hello World com Fiber
Para entender um pouco melhor a simplicidade do framework Fiber, vamos escrever um programa bem simples.
A API abaixo irá retornar a string “Hello, World!” ao receber uma request do tipo GET no path /.
package main
import (
"github.com/gofiber/fiber/v2"
)
func main() {
app := fiber.New()
app.Get("/", HandleFiber)
app.Listen(":3000")
}
func HandleFiber(c *fiber.Ctx) error {
return c.SendString("Hello, World!")
}
A fim de comparação, vejamos o mesmo exemplo usando o go-chi.
package main
import (
"net/http"
"github.com/go-chi/chi/v5"
)
func main() {
r := chi.NewRouter()
r.Get("/", HandleChi)
http.ListenAndServe(":3000", r)
}
func HandleChi(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("Hello, World!"))
}
Note que, como o Fiber não utiliza o package net/http, a assinatura do método que trata a request é completamente diferente do padrão da linguagem.
Outro ponto importante é o retorno. No caso do go-chi, mais uma vez utilizamos as funções padrões da linguagem, enquanto o Fiber oferece seus próprios métodos para envio da resposta.
Fiber vs go-chi
Agora, para saber se realmente há diferença na questão de performance das duas APIs, vamos comparar o desempenho de ambas usando a ferramenta wrk.
Os testes foram realizados com 12 threads, com 400 conexões, durante 30 segundos.
FIBER
Running 30s test @ <http://localhost:3000>
12 threads and 400 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 1.31ms 1.44ms 34.30ms 87.36%
Req/Sec 29.76k 2.32k 45.38k 71.21%
10682379 requests in 30.10s, 1.29GB read
Requests/sec: 354898.14
Transfer/sec: 44.00MB
GO-CHI
Running 30s test @ <http://localhost:3000>
12 threads and 400 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 2.69ms 3.53ms 85.75ms 87.88%
Req/Sec 18.79k 1.50k 31.44k 73.17%
6739209 requests in 30.07s, 835.51MB read
Requests/sec: 224139.01
Transfer/sec: 27.79MB
Como podemos ver, a latência média do Fiber deve um desempenho 52% melhor, ficando na casa de 1.31ms, enquanto o go-chi ficou em 2.69ms.
Na questão requests por segundo, o desempenho médio do Fiber foi 58% superior, atendendo uma média de 29.760 requests/seg, enquanto o go-chi atendeu uma média de 18.790.
O que Considerar ao Utilizar Fiber
Embora o Fiber ofereça um desempenho superior, há pontos que precisam ser considerados antes de adotá-lo.
Prós
- Desempenho Imbatível: Ideal para aplicações que precisam lidar com um alto volume de requisições.
- Fácil de Usar: API intuitiva e similar ao Express.
- Grande Comunidade: Vários middlewares disponíveis.
Contras
- Não segue os padrões do Go: Para desenvolvedores acostumados com o estilo idiomático do Go, a API do Fiber pode parecer menos natural.
- Overhead de Integração: Por ser baseado em fasthttp, pode ter algumas incompatibilidades com bibliotecas que usam
net/http.
Conclusão
Go Fiber é uma excelente escolha para quem busca desempenho extremo em APIs. Com uma API simples e uma performance imbatível, ele pode ser a diferença entre uma aplicação ágil e uma lenta. No entanto, é importante considerar se as necessidades do projeto realmente justificam a escolha.
Gostou do conteúdo?
- ✅ Inscreva-se na nossa newsletter para receber mais dicas práticas sobre Go, Kubernetes e desenvolvimento de software diretamente no seu e-mail!
- 🚀 Torne-se um assinante pago do blog e tenha acesso a conteúdos exclusivos, como tutoriais avançados, estudos de caso e muito mais!
Faça parte da comunidade!
Receba os melhores conteúdos sobre Go, Kubernetes, arquitetura de software, Cloud e esteja sempre atualizado com as tendências e práticas do mercado.
Livros Recomendados
Abaixo listei alguns dos melhores livros que já li sobre GO.

