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.

Sensacional, por mais que esteja atrelada a um contexto específico da necessidade que vocês passaram, existe algo muito importante de se notar, que é priorizar a engenharia que gera valor, talvez a busca por uma validação mantenha um foco necessário em entregar o resultado necessário para lucrar com o projeto se entendi bem, isso gera uma necessidade. A escolha foi adequada a necessidade do projeto, que é muitas das vezes com Js/Ts de integrar com serviço de terceiros, produtividade neste caso foi o que ficou claro para mim. Mas existe uma opção interessante no mercado o encore.ts ou encore.go, e tenho que bater palma para este projeto, porque ele contem todas as coisas que vocês mencionaram, e mais um pouco, mas é um projeto que esta em constante mudança. Fiquei animado, para saber o que estão "cozinhando", sucesso!