Bom, vou deixar aqui minha opiniao,eu vi muita gente elogiando o golang e de facto não dá para tirar esse mérito. Porém recentemente eu e um colega é estamos trabalhando em um projeto não é muito grande, a proposta inicial era construir com go lang e o framework gin, de facto não foi tão difícil(nao tínhamos tanta experiência com o ecosistema,foi mais difícil definir uma estrutura de pastas que nao ficaria confuso), meu colega é backend e sou full stack de acordo que as coisas começaram a ficar maior será mais difícil manter todo o código sozinhos e o Dx nao era assim muito bom,no caso pra gente que queria se mover rápido. Dai comecei a considerar outras opções o que me fez conhecer o fastify (com Typescript) vi que bem simples e que o ecosistema e bem completo , comecei a ver coisas que implementamos em go que muito mais fácil.. por exemplo validação de payload e respostas.. setup de api com openapi e swagger gerado automaticamente. Dai começamos a migração, como nosso sistema ainda não esta em produção foi bem mais fácil…
E a perda de performace?
Depois das pesquisas entendi que o Go é muito bom com processamento de tarefas pesadas que exige muito da CPU , mas a performance é similar com o node quando se trata de IO. Minhas fonte(https://youtu.be/KTS21m7U8NE?si=oPhmAR4FBVLtAszS)
Resumindo
Minha recomendação se quer construir algo simples e rápido fastify ou hono só bem simples de usar e ir direto para o problema que resolver Essa é apenas minha opinião com o conhecimento e pequena experiência que tenho.
Benefícios de ecossistema
Ao fazer a migração para fastify encontramos um boilerplate com um vídeo incrível com fastify, pino , zod , drizzle orm, postgress entre outros… até configuração com granafa e prometheus O video ( https://youtu.be/m1sNz9Fw_vY?si=8SkNfU-aYjRHHu8U)
Eu tenho Fastify como meu framework preferido dentro do ecossistema do NodeJS, e dentro do ecossitema do GO, gosto muito do Fiber (é o "Fastify" do Golang).
Mas realmente, Fastify é muito completo. O charme dele é justamente ser poderoso e ao mesmo tempo simples, o fato dele suportar o AJV nativamente para validar quase qualquer coisa no ciclo da request (quase toda sua regra de negócio pode ficar dentro dos schemas tranquilamente) é um diferencial e tanto, coisa que não vi nenhum framework no GO fazer parecido. Fora que, graças a isso, é muito tranquilo gerar automaticamente uma especificação OpenAPI e a partir disso pra gerar uma documentação com Swagger por exemplo.
No GO, o que a gente faz geralmente é usar a biblioteca nativa validator
para criar validações personalizadas, mas não é tão legal quando o AJV.