Microservices - POC
The FinVista Nexus project is designed to be a scalable and resilient application, utilizing modern technologies to ensure high performance and reliability.
We use MySQL as our primary database to store all persistent data.
Our backend services are written in Java and built with Spring Boot, leveraging Spring Cloud for service discovery, configuration, and more. Eureka is used for service registration and discovery.
For messaging, we use RabbitMQ, and for event streaming, we leverage Kafka.
The project uses OAuth2 for secure authentication and authorization.
All services are containerized using Docker and managed with Kubernetes. We also use Docker Compose for local development and testing.
APIs are documented using Swagger and OpenAPI for easy testing and integration.
For monitoring, we use Grafana along with OpenTelemetry for tracing. Resilience4j is implemented to ensure fault tolerance in our services.
Spring Cloud Gateway is used as the API Gateway to route requests to various microservices.
We utilize Helm for deploying applications on Kubernetes.
mvn clean install -Dmaven.test.skip=true
mvn spring-boot:run
mvn spring-boot:build-image
mvn compile jib:dockerBuild
docker build . -t devmayank8/finvistanexus-accounts:1.0.1-SNAPSHOT
docker run -d --name fvn-accounts -p 8080:8080 devmayank8/finvistanexus-accounts:1.0.1-SNAPSHOT
docker run -d --name fvn-accounts -p 8080:8080 -p 5005:5005 devmayank8/finvistanexus-accounts:1.0.1-SNAPSHOT
docker run -d --name fvn-accounts -p 8090:8090 -p 5010:5010 devmayank8/finvistanexus-loans:1.0.1-SNAPSHOT
docker run -d --name fvn-accounts -p 9000:9000 -p 5015:5015 devmayank8/finvistanexus-cards:1.0.1-SNAPSHOT
docker run -d -it --rm --name fvn-rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3.13-management
docker run -d --name fvn-redis -p 6379:6379 -d redis
docker run -d -p 7080:8080 --name fvn-keycloak -e KEYCLOAK_ADMIN=admin -e KEYCLOAK_ADMIN_PASSWORD=admin quay.io/keycloak/keycloak:25.0.1 start-dev
docker image push docker.io/devmayank8/finvistanexus-accounts:1.0.1-SNAPSHOT
docker pull devmayank8/finvistanexus-accounts:1.0.1-SNAPSHOT
docker ps -a
docker login -u <username>
docker logout
docker history <image_name>
docker rm <image_id>
docker conatiner logs -f <container_id>
docker exec -it <container_name> bash
docker conatiner inspect <container_id>
docker container stats
docker conatiner prune
docker system prune
docker-compose.yml
filedocker-compose up -d
docker-compose down -v
docker-compose stop
prod
profile instead of default--spring.profiles.active=prod
qa
profile instead of default spring profile and changing the value of build.version
--spring.profiles.active=prod --build.version=2.0.1
qa
profile instead of default spring profile and changing the value of build.version
-Dspring.profiles.active=qa -Dbuild.version=3.0.1
prod
profile instead of default spring profile and changing the value of build.version
SPRING_PROFILES_ACTIVE=prod;BUILD.VERSION=5.1.0;
ab -n 10 -c 2 -v 3 http://localhost:8072/fvnbank/cards/api/contact-info
Kickstart your project using the Spring Initializr. This tool helps you generate a Spring Boot project with the necessary dependencies and configurations.
Document your APIs with ease using SpringDoc OpenAPI.
Deploy and manage your applications at scale.
Follow modern best practices for building software-as-a-service apps.
Design your domain-driven applications efficiently.
Deploy your applications to the cloud.
Implement service mesh for better microservices management.