Talakative is a Java Spring Boot application built for scalable and efficient communication services. It leverages Kubernetes for seamless deployment and auto-scaling, ensuring high performance and fault tolerance. Designed with a fully microservices architecture, Talakative utilizes Spring Cloud Gateway for API routing and Netflix Eureka for service discovery. The application is optimized for performance with Project Reactor, improving API response times by over 92%, and Kafka enables efficient, event-driven communication between microservices.
The system is resilient, employing Resilience4J for fault tolerance and Spring Boot Security with JWT for secure authentication. Centralized logging is managed via SLF4J, while various databases like Redis, PostgreSQL, MySQL, and MongoDB are Dockerized and integrated using Reactive Programming for asynchronous data handling
Ensure the following are installed before deploying Talkative:
- Kubernetes:
kubectl
& Minikube for local deployment or a cloud-based cluster. - Docker
- Java: JDK 17 or later.
- Maven
- Install Minikube for local testing or use a cloud provider.
- Start Minikube:
minikube start
- Verify the cluster status:
kubectl cluster-info
Pull pre-built images for all microservices:
docker pull dhruv21patel/microservice1:latest
docker pull dhruv21patel/microservice2:latest
...
- Package the application:
mvn clean package
- Build and tag Docker images:
docker build -t microservice1:latest ./microservice1 docker build -t microservice2:latest ./microservice2 ...
- Push images to Docker Hub (if required):
docker tag microservice1:latest <dockerhub-username>/microservice1:latest docker push <dockerhub-username>/microservice1:latest docker tag microservice2:latest <dockerhub-username>/microservice2:latest docker push <dockerhub-username>/microservice2:latest ...
The Depoyment files are given under the Kube folder. For each microservice there is a Depoyment,Scaling and Node folder which Deploys and make it available to other pods and node with service.yml also add the namespace according to your need , Make Sure to add NameSpace for Each microservice so other Services cannot access Databases other then that Service from that Node.
- Apply deployment configurations:
kubectl apply -f microservice1/deployment.yml kubectl apply -f microservice2/deployment.yml ...
- Apply service configurations:
kubectl apply -f microservice1/service.yml kubectl apply -f microservice2/service.yml ...
- Verify the deployment:
kubectl get pods kubectl get services
kubectl apply -f microservice1/scaling.yml
kubectl apply -f microservice2/scaling.yml
...
kubectl scale deployment microservice1 --replicas=3
kubectl scale deployment microservice2 --replicas=3
...
Retrieve service URLs:
minikube service microservice1 --url
minikube service microservice2 --url
...
For cloud deployments, use:
kubectl get svc
Talkative provides a scalable Spring Boot-based solution with Kubernetes. Use the provided YAML configurations to manage deployments efficiently for each microservice.