Este repositório contém:
- 📄 RFC (Request for Comments) – Discussões abertas sobre propostas de melhorias, mudanças técnicas ou novas funcionalidades. Aqui ocorre a colaboração antes de qualquer decisão.
- 🏛️ ADR (Architecture Decision Record) – Registra decisões arquiteturais tomadas. É o que ficou decidido após as discussões das RFCs.
- 🏗️ System Design – Documenta o projeto técnico de sistemas, descrevendo arquitetura, componentes, integrações, segurança e escalabilidade.
📄 RFC-001 - Adoção de Kafka para Comunicação entre Microserviços
Jakson Lima
02/06/2025
Em Discussão
Atualmente, nossos microserviços se comunicam via REST síncrono. Temos enfrentado problemas de escalabilidade, alta latência e falhas em cascata.
- Alto acoplamento entre serviços.
- Dependência da disponibilidade do serviço remoto.
- Crescimento da latência em horários de pico.
Adotar o Apache Kafka como solução de mensageria assíncrona para:
- Desacoplar serviços.
- Melhorar a resiliência e escalabilidade.
- Permitir comunicação assíncrona baseada em eventos.
- RabbitMQ: Mais simples, porém menos escalável.
- Google Pub/Sub: Solução gerenciada, porém aumenta dependência externa.
- Manter REST: Não resolve os problemas atuais.
- Curto prazo: aumento na complexidade.
- Longo prazo: maior resiliência e escalabilidade.
- Criar POC.
- Capacitar o time.
- Migrar gradualmente.
Aberto até 10/06/2025.
🏛️ ADR-005 - Adoção de Kafka como Broker de Mensageria
12/06/2025
Aceito
Durante a RFC-001, discutimos a necessidade de melhorar a comunicação entre microserviços.
Adotamos o Apache Kafka como broker de mensageria para comunicação assíncrona.
- Resolver problemas de acoplamento e resiliência.
- Suportar picos de carga.
- Evoluir para Event-Driven.
- Manter REST.
- Usar RabbitMQ.
- Usar Google Pub/Sub.
Positivas
- Maior escalabilidade e resiliência.
- Desacoplamento dos serviços.
Negativas
- Aumento da complexidade operacional.
- Curva de aprendizado.
- Necessidade de observabilidade mais robusta.
🏗️ System Design - Serviço de Processamento de Pagamentos
Jakson Lima
02/06/2025
Em desenvolvimento
Precisamos de um serviço escalável, seguro e resiliente para processar pagamentos de nossos clientes, garantindo alta disponibilidade e integridade das transações.
- Processar pagamentos com baixa latência.
- Garantir consistência e integridade financeira.
- Suportar picos de até 500 transações por segundo.
- Oferecer observabilidade e capacidade de auditoria.
- Processamento de pagamentos via cartão, boleto e PIX.
- Integração com gateways externos (ex.: Stripe, Adyen, bancos locais).
- Geração de relatórios financeiros.
- APIs para os times de backoffice e produtos.