E-BANK is a banking management application developed using a microservices architecture. It allows managing customer bank accounts and operations such as credit and debit. This application is composed of several microservices developed with modern technologies.
- discovery-service: Discovery service using Spring Cloud Netflix Eureka.
- gateway-service: API Gateway using Spring Cloud Gateway.
- customer-service: Customer management microservice.
- account-service: Bank account management microservice, developed using CQRS and Event-Sourcing architecture with Axon Framework.
The architecture of this application is based on microservices, which allows for scalability and easier maintenance. The account-service
microservice uses CQRS (Command Query Responsibility Segregation) and Event-Sourcing to efficiently and reliably manage bank account operations.
- Java
- Spring Boot
- Axon Framework
- Axon Server
- MySQL
- Docker
- Kubernetes
- Jenkins
- Nexus
- SonarQube
- Maven
- Git
- Docker: Ensure Docker is installed and running.
- Kubernetes: A Kubernetes cluster should be configured and accessible.
- Jenkins: Jenkins should be installed to run CI/CD pipelines.
- Maven: Maven should be installed to build the Java projects.
- Git: Git should be installed to clone repositories.
git clone https://github.com/BrodyGaudel/devops.git
cd devops
Use Maven to build the Java services:
cd discovery-service
mvn clean install -DskipTests
cd ../gateway-service
mvn clean install -DskipTests
cd ../customer-service
mvn clean install -DskipTests
cd ../account-service
mvn clean install -DskipTests
docker build -t mounanga/discovery-service ./discovery-service
docker build -t mounanga/gateway-service ./gateway-service
docker build -t mounanga/customer-service ./customer-service
docker build -t mounanga/account-service ./account-service
Ensure your Docker credentials are configured in Jenkins.
docker push mounanga/discovery-service
docker push mounanga/gateway-service
docker push mounanga/customer-service
docker push mounanga/account-service
Deploy the services to the Kubernetes cluster:
kubectl apply -f k8s/discovery-service.yaml
kubectl apply -f k8s/gateway-service.yaml
kubectl apply -f k8s/customer-service.yaml
kubectl apply -f k8s/account-service.yaml
kubectl apply -f k8s/mysql-service.yaml
kubectl apply -f k8s/axon-server.yaml
The Jenkins pipeline is defined in the Jenkinsfile
and includes the following stages:
- CLONE: Clone the Git repository.
- INSTALL: Build the services with Maven.
- TEST: Run unit tests.
- PACKAGE: Package the services.
- IMAGE: Build Docker images.
- PUSH: Push Docker images to Docker Hub.
- DEPLOY: Deploy the services to Kubernetes.
- SonarQube: Used for code quality analysis.
- Nexus: Used as a repository manager for Maven dependencies.
Contributions are welcome! Please submit a pull request for any improvements or fixes.
This project is licensed under the MIT License. See the LICENSE file for details.
For any questions or assistance, please open an issue on the GitHub repository.
Thank you for using E-BANK!