Skip to content

feat: Implementación Sistema de Procesamiento de Transacciones con CQRS y EDA - Kenny Luque #481

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 8 commits into
base: main
Choose a base branch
from

Conversation

khaeldev
Copy link

Descripción

Este PR introduce la implementación del sistema de procesamiento de transacciones basado en microservicios, siguiendo patrones CQRS y EDA. Configura la infraestructura necesaria y los dos servicios principales: Transaction Service y AntiFraud Service.

  • Servicios Creados:
    • transaction_service: Microservicio NestJS con API GraphQL y REST para crear y consultar transacciones. Implementa CQRS con PostgreSQL (escritura) y Redis (lectura/caché).
    • antifraud_service: Microservicio NestJS que consume eventos Kafka (Debezium) para validar transacciones y publica resultados en Kafka.
  • Infraestructura (Docker Compose):
    • Configuración de PostgreSQL (Write DB) con wal_level=logical.
    • Configuración de Redis (Read Cache).
    • Configuración de Kafka y Zookeeper.
    • Configuración de Kafka Connect con Debezium para CDC desde PostgreSQL.
  • Flujo de Eventos:
    • Implementación del flujo vía Kafka/Debezium para la validación anti-fraude asíncrona.
    • Implementación de la actualización de la caché Redis basada en eventos de Debezium y resultados de anti-fraude.
  • API:
    • Definición del schema GraphQL (createTransaction, getTransaction) en Transaction Service.
    • Implementación de Resolvers y lógica de servicio asociada.
    • HTTP REST incluido.
  • Contenerización:
    • Añadidos Dockerfile optimizados (multi-etapa) para ambos servicios NestJS usando pnpm.
  • Documentación:
    • Añadido README.md principal con instrucciones de configuración y ejecución paso a paso.
    • Añadidos README.md detallados para cada microservicio (transaction_service, antifraud_service) con descripción de API, flujos y diagramas.

architecture-diagram

…ndling and configuration

feat(cache): add Redis cache configuration and implement caching logic in transaction service

fix(consumer): update transaction consumer to handle validated transactions and improve error handling

refactor(transaction): streamline transaction controller and service methods for better readability and performance

chore(constants): update Kafka topic constants to reflect new naming conventions

test(utils): add utility function for checking required keys in objects
- Removed unused dependencies from package.json and pnpm-lock.yaml.
- Updated Kafka module to subscribe to new topic KAFKA_TOPIC_TRANSACTION_DEBEZIUM.
- Refactored ValidationController to handle Debezium events and removed GetTransactionDto.
- Simplified cache update logic in ValidationService.
- Added Dockerfiles for antifraud_service and transaction_service.
- Adjusted docker-compose.yml to use relative paths for env files.
- Updated configuration for Kafka consumer group IDs.
- Enhanced TransactionConsumerController to process Debezium messages.
- Implemented Redis caching in TransactionService and TransactionModule.
- Cleaned up tsconfig.json output directory structure.
…integration

- Create README.md with service description, architecture, and API documentation.
- Implement CreateTransactionInput DTO for transaction creation with validation.
- Define GraphQL types for Transaction, TransactionTypeInfo, and TransactionStatusInfo.
- Establish structure for handling transactions using CQRS pattern with PostgreSQL and Redis.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant