📚 Pré-requisitos Teóricos: este projeto aplica conceitos ensinados na Especialização em Backend com Go & Gin. Recomendado revisar antes de iniciar.

🐹 Microsserviço gRPC de Alta Performance com Protocol Buffers

v1.0 — Go gRPC, Protobuf v3, HTTP/2 Multiplexing, RPC Binário, Streaming Bidirecional

Série Prática Golang — Projeto Especializado


🏛️ Visão Geral & Arquitetura Visual

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.

Arquitetura do Projeto 🐹 Microsserviço gRPC de Alta Performance com Protocol Buffers

📁 Estrutura de Pastas Anti-Colisão

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

🧑‍💼 Engenharia de Software & Especificação Formal

1. Histórias de Usuário (User Stories)

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

2. Requisitos do Sistema

Requisitos Funcionais (RF)

Requisitos Não-Funcionais (RNF)


3. Diagrama de Casos de Uso

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

4. Matriz de Rastreabilidade (RTM)

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

🛠️ Implementação Guiada

ℹ️ 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.


🚀 Como Executar no Laboratório

1. Navegue até a subpasta do projeto

cd catalogo_projetos/backend_golang_03_grpc_microservices/api-grpc

2. Execute via Go Toolchain

go run .

🏁 Matriz de Checkpoints de Conclusão

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 ✅