A production-grade distributed microservices streaming platform built using Spring Boot, Kafka, and Kubernetes.
This project demonstrates how modern backend systems are designed using:
- 🧩 Microservices Architecture
- ⚡ Event-Driven Communication (Kafka)
- 🔍 Service Discovery (Eureka)
- 🌐 API Gateway Routing
- ☸️ Kubernetes Deployment
- 🐳 Containerization with Docker
This system simulates a real-world video streaming backend where:
- Users upload content
- Content is processed asynchronously
- Streaming is handled efficiently
- Analytics are generated from events
This project is designed to reflect real industry-level system design, covering:
- Scalable microservices
- Distributed communication
- Fault tolerance challenges
- Kubernetes orchestration
The system follows a microservices-based distributed architecture deployed on Kubernetes.
It is designed to handle high-throughput streaming workloads using asynchronous event-driven communication.
All incoming requests are routed through a centralized API Gateway, which:
- Handles routing
- Provides a single entry point
- Simplifies client interaction
Each microservice registers with the Discovery Server, enabling:
- Dynamic service lookup
- Loose coupling between services
- Resilience in distributed communication
The system uses Apache Kafka for asynchronous communication:
- Content ingestion → produces events
- Streaming & analytics → consume events
- Decouples services for scalability
Each service manages its own data:
- MySQL → persistent storage
- Redis → caching layer
- MinIO → object storage (videos/files)
All components are deployed using Kubernetes:
- Deployments → stateless services
- StatefulSets → Kafka
- Services → internal networking
- Ingress → external routing
- User hits
streaming.localvia Ingress - Request goes to API Gateway
- Routed to respective microservice
- Services communicate via:
- REST (synchronous)
- Kafka (asynchronous)
- Data stored and processed across services
distributed-streaming-platform/
│
├── api-gateway/ # API Gateway (Routing layer)
├── discovery-server/ # Eureka Service Registry
├── auth-service/ # Authentication & JWT
├── user-service/ # User management
├── content-service/ # Content metadata
├── content-ingestion-service/# Content upload pipeline
├── streaming-service/ # Streaming logic
├── video-processing-service/ # Video processing pipeline
├── analytic-service/ # Analytics & event processing
│
├── common-lib/ # Shared DTOs & utilities
├── kafka-kraft/ # Kafka setup (KRaft mode)
│
├── k8s/
│ ├── infrastructure/ # Kafka, MySQL, Redis, MinIO
│ ├── services/ # Microservice deployments
│ ├── ingress/ # Ingress configuration
│ └── namespace/ # Namespace setup
│
├── docker-compose.yaml # Local development setup
├── init-db.sql # Database initialization
├── images.txt # List of Docker images
├── prometheus.yml # Monitoring config
├── pom.xml # Parent Maven configuration
└── README.md
Each service is independently developed and deployed, enabling:
- Independent scaling
- Fault isolation
- Faster development cycles
Contains:
- DTOs
- Event classes
- Common utilities
👉 Ensures consistency across services
All infrastructure is defined declaratively under k8s/:
- Infrastructure layer (Kafka, DBs)
- Service deployments
- Networking (Ingress)
- Docker Compose → Local development
- Kubernetes → Production-like deployment
- Java (Spring Boot) — Core microservices framework
- Spring Cloud — Service discovery & gateway
- Spring Security + JWT — Authentication & authorization
- Apache Kafka — Event-driven communication
- Kafka KRaft Mode — Zookeeper-less setup
- MySQL — Relational database
- Redis — Caching layer
- MinIO — Object storage (video/files)
- Docker — Containerization
- Kubernetes (Minikube) — Container orchestration
- Ingress Controller (NGINX) — External routing
- Prometheus — Metrics collection
- Maven — Build tool
- Docker Compose — Local setup
| Service | Responsibility |
|---|---|
| API Gateway | Routes incoming requests |
| Discovery Server | Service registry (Eureka) |
| Auth Service | Authentication & JWT |
| User Service | User management |
| Content Service | Content metadata |
| Content Ingestion Service | Upload pipeline |
| Streaming Service | Streaming logic |
| Video Processing Service | Video processing |
| Analytics Service | Event analytics |
- Built a distributed microservices system from scratch
- Implemented event-driven architecture using Kafka
- Deployed complete system on Kubernetes (Minikube)
- Integrated API Gateway + Service Discovery (Eureka)
- Designed for scalability, modularity, and fault isolation
- Add CI/CD pipeline (GitHub Actions)
- Enable autoscaling (HPA)
Yash chauhan
Backend Engineer | Distributed Systems Enthusiast
If you found this project useful, consider giving it a ⭐ on GitHub.



