Enterprise LMS EdTech Platform with Video Conferencing + Microservices Backend

  • Microservices LMS running on Ubuntu VMs with Docker Compose
  • Edge routing via TraefikNGINX → API Gateway → services
  • Service discovery using Eureka, caching with Hazelcast
  • Event-driven backbone with Apache Kafka, RabbitMQ, coordinated by Apache ZooKeeper
  • Auth handled by UAA with MongoDB
  • Integrated video infra using BigBlueButton cluster behind Scalelite
  • Self-hosted CI/CD: Jenkins + Private Docker Registry + GitHub
  • Designed for low cloud cost, high control, and production reliability on bare Ubuntu servers

This architecture was designed for a learning management platform that required microservices scalability, real-time communication, video conferencing, and strong internal service coordination — without the high cost of managed cloud services.

Instead of relying on expensive managed Kubernetes or PaaS offerings, the entire platform runs on carefully planned Ubuntu servers using Docker Compose, reverse proxies, service discovery, and event streaming components to achieve cloud-like architecture on cost-effective infrastructure.

The request flow

User → Traefik → NGINX (Web-FE) → API Gateway → UAA (auth) → Microservices → MongoDB

CI/CD flow

Developer → GitHub → Jenkins Pipeline → Private Docker Registry → Docker Compose rolling update on Ubuntu servers

User traffic first lands on Traefik, which handles TLS termination and dynamic routing. Requests are forwarded to NGINX serving the frontend, which then communicates with the API Gateway. The gateway is the single entry point to all backend services and communicates with UAA for authentication and authorization before routing traffic to internal microservices.

This layered routing ensures clean separation of concerns and production-grade traffic control without needing a cloud load balancer.

To enable microservices to communicate reliably without hardcoding endpoints:

  • Eureka provides dynamic service registration and discovery
  • Hazelcast enables distributed caching and session sharing
  • Kafka and RabbitMQ handle asynchronous event processing
  • ZooKeeper coordinates distributed messaging components

This combination allows the system to behave like a mature cloud-native system while running on simple Ubuntu hosts.

Multiple domain services such as analytics (GraphQL), reporting, scheduling, transcoding, and core school services run as isolated containers. All services communicate through the gateway and messaging backbone, ensuring loose coupling and high resilience. Authentication and identity are managed by UAA backed by MongoDB.

A major requirement was live classes. For this:

  • Multiple BigBlueButton servers were deployed
  • Scalelite acts as the load balancer distributing sessions
  • Integrated directly with the LMS services for class scheduling and session management

This provides a fully controlled, scalable video setup without relying on third-party SaaS meeting tools.

Developers push code to GitHub. Jenkins pipelines build Docker images and push them to a private Docker registry hosted on Ubuntu. Docker Compose then pulls updated images and performs controlled rolling updates. This provides a full DevOps lifecycle without GitHub Actions, ECR, or Kubernetes — drastically reducing operational cost.

  • No managed Kubernetes, no managed DB, no managed load balancers
  • Runs entirely on Ubuntu VMs
  • Open-source stack for discovery, messaging, routing, and CI/CD
  • Minimal vendor lock-in
  • Predictable infrastructure cost with maximum architectural control

 

  • Service-to-service communication without Kubernetes
  • Distributed caching and discovery on bare VMs
  • Scaling BigBlueButton sessions reliably
  • Secure internal networking between dozens of containers
  • Automating deployments without cloud tooling

The result is a production-grade, event-driven, microservices LMS that delivers cloud-level architecture, video conferencing, and CI/CD automation — while running on a highly economical Ubuntu server setup.