Simple but Robust end to end microservice architecture using SpringBoot.
This is a personal project where I’ve been experimenting with building a robust microservices architecture using a variety of modern technologies.
This project is composed of several microservices, each designed to handle a specific part of the application’s domain:
I’ve used a bunch of technologies that I’m particularly interested in. Here’s what powers this project:
Make sure you have the following installed on your machine:
Run the following commands to start the frontend application
cd frontend
npm install
npm run start
Run the following command to build and package the backend services into a docker container
mvn spring-boot:build-image -DdockerPassword=<your-docker-account-password>
The above command will build and package the services into a docker container and push it to your docker hub account.
Make sure you have the following installed on your machine:
Run the k8s/kind/create-kind-cluster.sh script to create the kind Kubernetes cluster
./k8s/kind/create-kind-cluster.sh
This will create a kind cluster and preload all the required docker images into the cluster, this will save you time downloading the images when you deploy the application.
Run the k8s/manisfests/infrastructure.yaml file to deploy the infrastructure
kubectl apply -f k8s/manifests/infrastructure.yaml
Run the k8s/manifests/applications.yaml file to deploy the services
kubectl apply -f k8s/manifests/applications.yaml
To access the API Gateway, you need to port-forward the gateway service to your local machine
kubectl port-forward svc/gateway-service 9000:9000
To access the Keycloak admin console, you need to port-forward the keycloak service to your local machine
kubectl port-forward svc/keycloak 8080:8080
To access the Grafana dashboards, you need to port-forward the grafana service to your local machine
kubectl port-forward svc/grafana 3000:3000