📚 Pré-requisitos Teóricos: este projeto aplica conceitos ensinados na Especialização em Backend com Go & Gin. Recomendado revisar antes de iniciar.
v1.0 — Go gRPC, Protobuf v3, HTTP/2 Multiplexing, RPC Binário, Streaming Bidirecional
Série Prática Golang — Projeto Especializado
- ➡️ Projeto: 🐹 Microsserviço gRPC de Alta Performance com Protocol Buffers
- Subpasta Canônica:
api-grpc/
O projeto Microsserviço gRPC de Alta Performance com Protocol Buffers desenvolve um subsistema de comunicação inter-serviços de altíssima velocidade para ambientes de microsserviços distribuídos. A solução baseia-se em contratos formais com Protocol Buffers v3, transporte multiplexado sobre HTTP/2 e serialização binária compacta, proporcionando latência substancialmente menor do que APIs REST baseadas em JSON.
Os artefatos em Go, manifests e arquivos de configuração estão organizados na subpasta canônica api-grpc/:
catalogo_projetos/backend_golang_03_grpc_microservices/
├── assets/
│ └── arquitetura_golang_03.svg
├── api-grpc/
│ ├── main.go
│ ├── README.md
│ └── ...
└── index.md
| ID | Persona | Narrativa da Funcionalidade | Critério de Aceitação Principal | Prioridade |
|---|---|---|---|---|
| US-01 | Arquiteto de Microsserviços | Quero comunicação binária RPC ultra-rápida entre nossos serviços | Uso de gRPC sobre HTTP/2 com serialização compacta Protobuf. | Alta |
| US-02 | Desenvolvedor Backend | Quero contratos de interface imutáveis e código gerado automaticamente | Definição formal em arquivos .proto e geração de stubs com protoc. |
Alta |
| US-03 | Desenvolvedor Backend | Quero suporte a streaming bidirecional de dados contínuos | Métodos gRPC de streaming para envio de pacotes em tempo real. | Alta |
| US-04 | Engenheiro de Confiabilidade | Quero interceptors para logging, métricas Prometheus e autenticação mTLS | Pilha de interceptors gRPC unários e de stream. | Média |
| US-05 | Engenheiro de QA | Quero testes de contrato garantindo compatibilidade retroativa de mensagens | Validação de schemas com Protobuf sem breaking changes. | Média |
proto/usuario.proto com mensagens e métodos RPC.protoc.context.Context.flowchart TD
Client[(fa:fa-server Microsserviço Cliente)]
Proto[(fa:fa-file-lines Contrato Protobuf)]
Server[(fa:fa-gears Engine gRPC HTTP/2)]
subgraph AppGRPCServer ["🐹 Servidor gRPC Go (api-grpc)"]
UC01["Compilar Contrato .proto"]
UC02["Implementar Interface de Serviço"]
UC03["Atender Chamadas RPC Unárias"]
UC04["Gerenciar Streams Bidirecionais"]
UC05["Validar Payload Binário Tipado"]
end
Proto --> UC01
UC01 --> UC02
Client --> UC03
UC03 --> Server
Client --> UC04
UC04 --> Server
Server --> UC05
| ID Requisito | História de Usuário | Artefato de Código | Teste de Aceitação |
|---|---|---|---|
| RF-01 | US-02 | api-grpc/proto/usuario.proto |
Contrato formal Protocol Buffers |
| RF-02 | US-02 | api-grpc/proto/ |
Geração de código com protoc |
| RF-03 | US-01 | api-grpc/ |
Implementação do servidor gRPC |
| RF-04 | US-03 | api-grpc/ |
Cliente RPC de teste |
| RF-05 | US-04, US-05 | api-grpc/ |
Códigos de status e validação |
ℹ️ O trecho de código que ficava aqui não correspondia ao código do projeto e foi retirado. Consulte os arquivos em
api-grpc.
cd catalogo_projetos/backend_golang_03_grpc_microservices/api-grpc
go run .
| Checkpoint | Meta Técnica | Critério de Aceite | Status |
|---|---|---|---|
| CP-01 | Contrato Protobuf v3 | Arquivo .proto estruturado com mensagens e serviços |
PASS ✅ |
| CP-02 | Compilação Protoc | Código Go gerado sem erros de compilação | PASS ✅ |
| CP-03 | Servidor gRPC Ativo | Porta :50051 escutando requisições HTTP/2 | PASS ✅ |
| CP-04 | Chamadas RPC Unárias | Troca binária de mensagens validada | PASS ✅ |
| CP-05 | Tratamento de Context & Deadline | Timeouts aplicados com context.Context |
PASS ✅ |