Concurrency in Go. Desenvolvimento de aplicações paralelas em Go
238 páginas
Portuguese
PDF
4.5

Concurrency in Go. Desenvolvimento de aplicações paralelas em Go

Concurrency in Go. Desenvolvimento de aplicações paralelas em Go

Autor:

Ano:

Resumo:

Introdução

O livro «Concurrency in Go. Desenvolvimento de aplicações paralelas em Go» (título original — Concurrency in Go: Tools and Techniques for Developers) de autoria de Katherine Cox-Buday — é um dos guias mais conceituados sobre programação concorrente na linguagem Go. Publicado em 2017 pela editora O'Reilly, rapidamente se tornou um livro de cabeceira para desenvolvedores que buscam dominar goroutines, canais e padrões complexos de sincronização. Em 238 páginas, a autora não apenas explica a sintaxe, mas mergulha o leitor na filosofia de paralelismo adotada em Go e ensina a escrever código confiável, eficiente e seguro.

Sobre o que é este livro

O livro é construído como uma jornada sequencial, dos fundamentos às técnicas avançadas. A primeira parte é dedicada às bases teóricas: o que é concorrência, como ela difere de paralelismo, o modelo de memória do Go e os primitivos básicos de sincronização (mutexes, WaitGroup, atômicos). Em seguida, a autora passa ao tema central — goroutines e canais — mostrando como construir sistemas compostos e escaláveis com eles. Atenção especial é dada aos padrões: pipeline, fan-in/fan-out, or-done-channel, tee-channel, bridge-channel e outros. O livro termina com a análise de exemplos reais — desde um simples web crawler até a implementação de um pool de workers e graceful shutdown. Cada capítulo contém exemplos práticos de código e alertas sobre erros típicos (deadlock, race condition, vazamento de goroutine).

Para quem é este livro

O livro é voltado para desenvolvedores Go que já conhecem os fundamentos da linguagem (sintaxe, tipos, funções). Será útil tanto para iniciantes que estão começando a entender goroutines, quanto para engenheiros experientes que desejam sistematizar conhecimentos e aprender padrões avançados. Se você escreve microsserviços, utilitários de rede, processadores de fluxo de dados ou qualquer sistema onde desempenho e processamento paralelo são importantes — este livro é para você. Também será útil para desenvolvedores de outras linguagens (Python, Java, C#) que estão migrando para Go e desejam entender sua abordagem única para concorrência.

O que o leitor aprenderá

  • Fundamentos da concorrência em Go: modelo de memória, goroutines, canais, select, pacote sync.
  • Padrões de programação paralela: pipeline, fan-out/fan-in, or-done, tee-channel, bridge-channel.
  • Gerenciamento do ciclo de vida de goroutines: graceful shutdown, contextos (context.Context), cancelamento de operações.
  • Prevenção de erros: deadlock, race condition, vazamento de goroutine, bloqueios mútuos.
  • Teste de código concorrente: go test -race, mocks, teste determinístico.
  • Exemplos reais: web crawler, pool de workers, sistema de processamento de eventos.

Pontos fortes do livro

A primeira e principal vantagem é a profundidade e estruturação. O livro não apenas lista APIs, mas explica por que certas decisões foram tomadas em Go (por exemplo, "não se comunique compartilhando memória; compartilhe memória se comunicando"). A segunda é a orientação prática: cada padrão é acompanhado de código que pode ser executado e modificado imediatamente. A terceira é o foco na componibilidade: a autora ensina a construir sistemas complexos a partir de componentes simples e bem isolados. A quarta é a linguagem clara e exemplos excelentes; mesmo conceitos complexos (como or-done-channel) são explicados de forma simples. Por fim, o livro contém dicas valiosas sobre depuração e perfilamento (pprof, trace), algo raro em outros guias.

A quem é recomendado

Eu recomendo fortemente este livro a todos que programam em Go e desejam ir além do "Hello, World". Ele será especialmente útil para:

  • Desenvolvedores Backend que criam serviços de alta carga;
  • Engenheiros DevOps que escrevem ferramentas em Go (CLI, agentes, coletores de métricas);
  • Estudantes e professores de cursos

Recommendations