Architecture
We followed the microservices architecture, as it is a modular and scalable approach for building applications. We divided the system into several independent and loosely coupled services, such as the chargeback service, the notification service, the evidence service, etc. Each service had its own database, API, and logic, and communicated with other services through Kafka. We used Docker and Kubernetes for containerizing and orchestrating the services, and Jenkins and GitLab for continuous integration and delivery.