- Spring Boot
- Spring Cloud (Config, Gateway, Netflix)
- The 12-factor App
- Docker and DockerHub
- Resilience4j
- Zipkin
- Micrometer
- Prometheus
- Grafana
- Apache Kafka
- Connected with MySQL server running as a container
- Used FeignClient to invoke other microservices (card service and loan service)
- Connected with config server to get all configurations for all environments
- Implemented Netflix Eureka Client for service registration with the Eureka server
- Distributed tracing and log aggregation
- Monitored microservices metrics & health using Prometheus and Grafana
- Integrated Apache Kafka to save account info
Kind of the same implementation as the accounts service
Kind of the same implementation as the accounts service
- Load all configuration from a GitHub repository
- Served properties based on the environment
- RefreshScope for configuration changes with spring cloud bus(rabbitmq)
- Encrypt or Decrypt properties in config server
- Treated as service discovery where other microservices will be registered with it
- Other microservices can locate each by using Eureka Server
- Microservices/clients will send their heartbeats at regular intervals to the central server about their health
- Known as API gateway implemented using spring cloud gateway
- Handled custom routing requirements from a central place
For simplicity, I've used Kafka producer & consumer in account-service
. Created a rest endpoint to save account info in the database. The Kafka producer writes an event into a topic when a client hit the endpoint, and the Kafka consumer consumes the event and writes data into the database.
- Maintained docker-compose file for dev and prod environment
- Run all related services in a sequential manner using a single command
Maven Command | Description |
---|---|
"mvn clean install -Dmaven.test.skip=true" | To generate a jar inside target folder without executing any tests. |
"mvn spring-boot:run" | To start a springboot maven project |
"mvn spring-boot:build-image -Dmaven.test.skip=true" | To generate a docker image using Buildpacks. No need of Dockerfile |
Docker Command | Description |
---|---|
"docker build . -t codelabs/accounts" | To generate a docker image based on a Dockerfile |
"docker run -p 8081:8080 codelabs/accounts" | To start a docker container based on a given image |
"docker images" | To list all the docker images present in the Docker server |
"docker image rm image-id" | To remove one or more images for a given image ids |
"docker ps" | To show all running containers |
"docker ps -a" | To show all containers including running and stopped |
"docker container start container-id" | To start one or more stopped containers |
"docker container stop container-id" | To stop one or more running containers |
"docker container rm container-id" | To remove one or more containers based on container ids |
"docker compose up" | To create and start containers based on given docker compose file |
"docker compose stop" | To stop services |