Arquitetura de microserviços oferece escalabilidade, resiliência e autonomia para equipes, mas exige disciplina e boas ferramentas. Com agentes de IA, você pode implementar um sistema de microserviços completo — de serviços individuais à comunicação via mensageria — em uma fração do tempo. Neste tutorial, você vai aprender a criar microserviços com Node.js e agentes de IA usando Claude Code e Codex de forma orquestrada.
O que vamos construir
Vamos desenvolver um sistema de e-commerce baseado em microserviços com:
- Serviço de Usuários: cadastro, autenticação, perfis (Porta 3001)
- Serviço de Produtos: catálogo, estoque, categorias (Porta 3002)
- Serviço de Pedidos: carrinho, checkout, histórico (Porta 3003)
- Serviço de Pagamentos: processamento, reembolsos (Porta 3004)
- Serviço de Notificações: email, push (Porta 3005)
- API Gateway: roteamento, autenticação, rate limiting (Porta 8080)
- RabbitMQ: mensageria entre serviços
Imagem sugerida: Diagrama de arquitetura mostrando os 5 serviços, API Gateway, RabbitMQ e bancos de dados independentes.
Arquitetura e setup com Claude Code
Claude Code planeja e configura todo o monorepo de microserviços.
Monorepo setup
claude "Crie um monorepo de microserviços com npm workspaces. Estrutura raiz: - packages/api-gateway/ - packages/service-users/ - packages/service-products/ - packages/service-orders/ - packages/service-payments/ - packages/service-notifications/ - packages/shared/ (tipos e utilitários comuns) - docker-compose.yml na raiz Cada serviço deve ter: package.json, tsconfig.json (extends do raiz), src/index.ts, Dockerfile. Shared deve ter: types (eventos, dtos, erros), utils (logger, retry, circuit breaker)."
API Gateway com Claude Code
O API Gateway é o ponto de entrada único. Claude Code implementa com Express e http-proxy-middleware.
claude "Crie packages/api-gateway/src/index.ts com: 1. Express server na porta 8080 2. Proxy reverso para cada serviço: /api/users -> service-users:3001, /api/products -> service-products:3002, etc. 3. Middleware de autenticação global (JWT validation) exceto rotas públicas (/login, /register) 4. Rate limiting com express-rate-limit (100 req/min por IP) 5. Request logging com morgan 6. CORS configurado para frontend 7. Circuit breaker: se serviço responde 5xx por 10 segundos, retorna 503 com fallback 8. Health check aggregator: GET /health checa todos os serviços"
Serviços core com Claude Code
Claude Code cria cada serviço com sua lógica de negócio e banco de dados independente.
Serviço de Usuários
claude "Crie packages/service-users/src/index.ts com: 1. Express server na porta 3001 2. Rotas: POST /register, POST /login, POST /refresh, GET /profile, PUT /profile, GET /users (admin) 3. Prisma ORM com SQLite (ou PostgreSQL via env) 4. JWT com access (24h) e refresh (7d) tokens 5. Hash de senha com bcryptjs (salt 12) 6. Validação com Zod 7. Ao criar usuário, publica evento 'user.created' no RabbitMQ"
Serviço de Produtos
claude "Crie packages/service-products/src/index.ts com: 1. Express server na porta 3002 2. Rotas: CRUD de produtos, CRUD de categorias, busca, filtros 3. Prisma ORM com banco independente 4. Upload de imagens (local ou S3) 5. Ao atualizar estoque, publica 'stock.updated' 6. Escuta 'order.created' para reservar/baixar estoque"
Serviço de Pedidos
claude "Crie packages/service-orders/src/index.ts com: 1. Express server na porta 3003 2. Rotas: POST /cart/add, GET /cart, POST /checkout, GET /orders, GET /orders/:id 3. Saga pattern para checkout: cria pedido (PENDING), publica 'order.created' 4. Escuta 'payment.confirmed' -> muda para CONFIRMED 5. Escuta 'payment.failed' -> muda para FAILED, publica 'order.failed' 6. Escuta 'stock.reserved' e 'stock.failed' para coordenar"
Mensageria com Codex
Codex gera o código de comunicação via RabbitMQ de forma padronizada.
RabbitMQ setup
opencode "Crie packages/shared/src/rabbitmq.ts com: 1. connect(): conecta ao RabbitMQ (URL da env RABBITMQ_URL) 2. createChannel(): cria canal de comunicação 3. publishEvent(exchange, routingKey, payload): publica evento JSON 4. consumeEvent(queue, routingKey, handler): consome eventos com auto-ack 5. createQueue(queue, options): cria fila com DLQ (dead letter queue) 6. Tipos de eventos: user.created, user.updated, product.created, stock.updated, order.created, order.confirmed, order.failed, payment.confirmed, payment.failed, notification.email Use amqplib com reconnect automático e tratamento de erros."
Serviço de Notificações
opencode "Crie packages/service-notifications/src/index.ts: 1. Express server na porta 3005 2. Consome eventos do RabbitMQ: - 'user.created': envia email de boas-vindas - 'order.confirmed': envia confirmação de pedido - 'payment.failed': envia alerta de pagamento - 'stock.low': envia alerta para admin 3. Template de email com handlebars (pastas templates/) 4. Logger estruturado com winston"
Docker e orquestração
Claude Code gera docker-compose.yml para rodar todos os serviços localmente.
claude "Crie docker-compose.yml na raiz com serviços: 1. rabbitmq: image rabbitmq:3-management, portas 5672 e 15672 2. postgres-users: banco do serviço de usuários 3. postgres-products: banco do serviço de produtos 4. postgres-orders: banco do serviço de pedidos 5. postgres-payments: banco do serviço de pagamentos 6. service-users: build local, depende de postgres-users e rabbitmq 7. service-products: build local, depende de postgres-products e rabbitmq 8. service-orders: build local, depende de postgres-orders e rabbitmq 9. service-payments: build local, depende de postgres-payments e rabbitmq 10. service-notifications: build local, depende de rabbitmq 11. api-gateway: build local, depende de todos os serviços Todos os serviços devem ter healthcheck e restart: unless-stopped. Rede interna: microservices-network. Volumes para persistência de dados."
Testes de contrato e integração
Codex gera testes de contrato para garantir que serviços se comunicam corretamente.
opencode "Crie packages/shared/src/contracts/eventContracts.ts com schemas Zod para cada evento:
1. UserCreatedEvent: { userId, email, name, timestamp }
2. OrderCreatedEvent: { orderId, userId, items: [{ productId, quantity, price }], total, timestamp }
3. StockUpdatedEvent: { productId, quantityBefore, quantityAfter, change, timestamp }
4. PaymentConfirmedEvent: { paymentId, orderId, amount, method, timestamp }
Crie tests/contracts/eventValidation.test.ts validando que cada evento gerado pelos serviços segue o schema."
FAQ — Perguntas Frequentes
Preciso saber arquitetura de microserviços para usar agentes de IA?
Sim. Os agentes geram o código, mas você precisa entender conceitos como comunicação assíncrona, consistência eventual e API Gateway.
Claude Code ou Codex para microserviços?
Claude Code é melhor para arquitetura geral, API Gateway e serviços complexos. Codex é mais rápido para serviços CRUD simples e testes.
Os agentes geram código para comunicação entre serviços?
Sim. Claude Code implementa comunicação via RabbitMQ ou HTTP com circuit breaker. Basta especificar o padrão no prompt.
Microserviços com agentes funcionam no Windows?
Sim. Docker Compose orquestra os containers no Windows. Claude Code gera toda a configuração Docker.
Dá para orquestrar Claude Code e Codex no mesmo sistema?
Sim. Com o Orquestra, você define papéis e coordena múltiplos agentes no mesmo canvas infinito.
Construa microserviços com agentes hoje
Neste tutorial, você aprendeu a criar microserviços com Node.js e agentes de IA usando Claude Code e Codex. Do API Gateway à mensageria via RabbitMQ, cada etapa foi acelerada pelos agentes.
O Orquestra conecta Claude Code, Codex e outros agentes no mesmo canvas infinito no Windows 11. Baixe o Orquestra e comece seu teste grátis de 7 dias.
Links internos recomendados
- APIs REST com Agentes de IA — base para seus microserviços
- TypeScript React com Agentes de IA — frontend para seus microserviços
- Testes Automatizados com Agentes de IA — aprenda a testar microserviços
Pronto para orquestrar seus agentes?
Baixe o Orquestra para Windows 11 e comece a coordenar seus agentes de IA em um canvas infinito. Grátis por 7 dias.