Padrões de Concorrência em Go: Worker Pools, Fan-Out e Pipelines

Domine padrões de concorrência em Go: worker pools, fan-out/fan-in, pipelines, rate limiting e context para cancelamento. Exemplos práticos e prontos para uso.

Go nasceu para concorrência. Goroutines leves, channels tipados e o modelo CSP (Communicating Sequential Processes) tornam Go uma das linguagens mais produtivas para escrever código concorrente. Mas goroutines e channels são primitivas — para resolver problemas reais, você precisa de padrões.

Neste guia, vamos cobrir os padrões de concorrência mais importantes em Go, com exemplos prontos para produção. Se você ainda não domina os fundamentos, comece pelo nosso guia de concorrência em Go.

Ler mais →

Go Performance: Profiling e Otimização de Alto Desempenho

Domine profiling e otimização em Go. Aprenda a usar pprof para CPU e memory profiling, escrever benchmarks com testing.B, identificar gargalos e aplicar estratégias avançadas de otimização. Guia completo com casos reais.

Performance é diferencial competitivo. Enquanto concorrentes lutam com latência, aplicações Go otimizadas processam milhões de requisições por segundo. Neste guia completo, você vai dominar as ferramentas e técnicas usadas por engenheiros da Google, Netflix e Uber para criar sistemas de alto desempenho.

Por Que Performance Importa em Go?

O Custo da Lentidão

MétricaImpacto no Negócio
+100ms de latência-1% de conversão (Amazon)
+500ms de latência-20% de tráfego (Google)
+1s de latência-11% pageviews (Bing)
3s de carga53% abandonam mobile

Em Go, cada microssegundo conta. Um serviço que processa 10M requests/dia economiza 2.7 horas de CPU por dia com apenas 1ms de otimização por request.

Ler mais →

Go e Redis: Cache e Session Store Completo

Aprenda a usar Redis com Go para caching de alta performance, gerenciamento de sessões e arquiteturas escaláveis. Guia completo com exemplos práticos.

Go e Redis: Cache e Session Store Completo

O Redis é um dos bancos de dados em memória mais populares do mundo, e quando combinado com Go, cria aplicações extremamente rápidas e escaláveis. Neste guia completo, você vai aprender a implementar caching de alta performance e gerenciamento de sessões usando Go e Redis.

Por Que Usar Redis com Go?

Antes de mergulhar no código, entenda por que essa combinação é tão poderosa:

Ler mais →

GOMAXPROCS Inteligente para Containers no Go 1.25

Go 1.25 introduz configuração automática de GOMAXPROCS baseada em limites de CPU de containers, evitando throttling e melhorando a performance em produção.

Go 1.25 inclui novos padrões de GOMAXPROCS que reconhecem limites de containers, proporcionando comportamento mais sensato para muitas cargas de trabalho em containers, evitando throttling que pode impactar a latência de cauda, e melhorando a prontidão do Go para produção.

Neste post, vamos explorar como Go agenda goroutines, como esse agendamento interage com controles de CPU de containers, e como Go pode performar melhor com consciência dos controles de CPU.

Ler mais →

Flight Recorder: Nova Ferramenta de Diagnóstico no Go 1.25

Flight Recorder no Go 1.25: capture traces de execucao circulares em servidores Go para diagnosticar gargalos de performance sem overhead em producao.

Em 2024, introduzimos ao mundo os execution traces mais poderosos do Go. Naquele post, demos uma prévia de novas funcionalidades que poderíamos desbloquear, incluindo o flight recording. Estamos felizes em anunciar que o flight recording está agora disponível no Go 1.25.

O Problema com Traces Tradicionais

O pacote runtime/trace fornece uma API para coletar traces de execução chamando runtime/trace.Start e runtime/trace.Stop. Isso funciona bem para testes e benchmarks.

Porém, em serviços web de longa duração — o tipo de aplicação pelo qual Go é conhecido — isso não é suficiente. Servidores web podem ficar no ar por dias ou semanas, e coletar um trace da execução inteira produziria dados demais.

Ler mais →

Green Tea: O Novo Garbage Collector do Go

Green Tea GC do Go 1.25 reduz overhead do garbage collector em ate 40%. Ative com GOEXPERIMENT=greenteagc. Ja em producao no Google, sera padrao no Go 1.26.

O Go 1.25 inclui um novo garbage collector experimental chamado Green Tea, disponível configurando GOEXPERIMENT=greenteagc no momento do build.

Muitos workloads gastam cerca de 10% menos tempo no garbage collector, mas alguns veem reduções de até 40%!

Já está em uso no Google em produção, então encorajamos você a testar. Baseado nos dados que temos agora, planejamos torná-lo o padrão no Go 1.26.

Como Funciona o Garbage Collection

O propósito do garbage collection é recuperar e reutilizar automaticamente memória que não está mais sendo usada pelo programa.

Ler mais →