Go with the Domain: Criação de software empresarial moderno em Go
Go with the Domain: Criação de software empresarial moderno em Go
Resumo:
Introdução
O livro «Go with the Domain: Building Modern Business Software in Go» (autores: Robert Laszczak, Miłosz Smółka, 2021, 298 p.) — não é apenas mais um tutorial sobre sintaxe Go. É um guia prático para a aplicação de Domain-Driven Design (DDD) e princípios de Clean Architecture no ecossistema Go. No momento do lançamento, o livro se tornou um dos primeiros a conectar sistematicamente a filosofia do design orientado a domínio com o Go idiomático, evitando abstração excessiva e "overengineering". É direcionado a desenvolvedores que já programam em Go e desejam passar de "código que simplesmente funciona" para aplicações empresariais sustentáveis, testáveis e escaláveis.
Sobre o que é este livro
O livro é construído em torno de um exemplo real — um sistema de gerenciamento de pedidos (order management system). Os autores conduzem sequencialmente o leitor por todas as etapas: desde a identificação de contextos delimitados (Bounded Contexts) e modelagem de eventos de domínio até a implementação de repositórios, serviços e camadas de transporte (HTTP, gRPC, filas de mensagens). Atenção especial é dada à expressividade idiomática do código: os autores mostram como usar interfaces Go para definir portas e adaptadores, como evitar o "modelo anêmico" e como organizar pacotes corretamente para não violar os limites do domínio. Cada capítulo contém exemplos práticos, diagramas e comparações entre código "ruim" e "bom".
Para quem é este livro
- Desenvolvedores Go com experiência de 1 ano ou mais, que desejam se aprofundar em arquitetura.
- Arquitetos de software em busca de padrões específicos para implementar DDD em Go.
- Tech leads e team leads responsáveis pelo design de microsserviços.
- Desenvolvedores migrando de outras linguagens (Java, C#) para Go e que desejam aplicar DDD sem "frameworks pesados".
O que o leitor aprenderá
- Fundamentos de DDD aplicados ao Go: Entity, Value Object, Aggregate, Domain Event, Repository, Factory.
- Clean Architecture (arquitetura hexagonal) em Go: como separar domínio, aplicação e infraestrutura.
- Testes de lógica de domínio sem mocks, usando testes tabulares e interfaces.
- Trabalho com transações e concorrência no contexto de DDD (padrão Unit of Work).
- Integração com sistemas externos através de portas-adaptadores (HTTP, gRPC, Kafka).
- Organização de código em monorepositórios e módulos Go.
- Tratamento de erros no domínio: criação de tipos de erro personalizados, erros contextuais.
- Event Sourcing e CQRS — introdução básica e exemplo de implementação.
Pontos fortes
- Abordagem prática: o código do livro pode ser imediatamente adaptado aos seus projetos.
- Expressividade idiomática: os autores não impõem o estilo Java, mas mostram como o DDD parece "no estilo Go" (interfaces pequenas, composição, dependências explícitas).
- Estrutura clara: cada capítulo termina com um resumo e uma lista de "o que lembrar".
- Foco em testes: um capítulo inteiro é dedicado a testes de domínio e infraestrutura.
- Modernidade: o livro usa Go modules, context.Context, middleware, generics (embora antes do lançamento do Go 1.18 — mas os autores dão dicas de adaptação).
Para quem é recomendado
O livro é leitura obrigatória para todos que constroem em Go sistemas empresariais complexos (ERP, CRM, fintech, logística, marketplaces). Será útil tanto para aqueles que estão começando a implementar DDD quanto para profissionais experientes que desejam ver o "meio-termo" entre DDD puro e o pragmatismo do Go. Se você está cansado de "serviços-deus" e quer escrever código que seja fácil de modificar para novos requisitos de negócios — este livro é para você.