Distributed Job Scheduler

A distributed scheduling system designed to reliably execute delayed and recurring background jobs using a decoupled architecture.

Distributed Job Scheduler
Role
Backend / Systems Developer
Stack
Java, Spring Boot, PostgreSQL, Redis, Docker, Flyway, JPA / Hibernate
Type
Personal Project

The Challenge

Many applications rely on background jobs to handle delayed or recurring work, such as sending notifications or processing scheduled tasks. Building a reliable scheduling system requires careful coordination between job creation, execution timing, and fault-tolerant processing, especially when tasks must run asynchronously and at scale.

The Solution

This project is a distributed job scheduling platform designed to handle delayed and recurring tasks through a clean, decoupled architecture. The system separates job definition, scheduling, and execution into independent services, allowing jobs to be processed reliably while remaining scalable and resilient to failure.

A reliable and scalable approach to scheduling background work using a decoupled, service-oriented design.

The system was designed around a decoupled, service-oriented architecture to clearly separate responsibilities. By isolating the API, scheduler, and worker services, each component can evolve independently, improving maintainability and scalability while reducing tight coupling between job creation and execution.

Key Features
  • Delayed and recurring job scheduling
  • Decoupled API, scheduler, and worker services
  • Asynchronous job execution using a queueing layer

Technical Highlights

The platform uses PostgreSQL as the source of truth for job definitions and execution history, ensuring reliable tracking of job state. Redis is used as a queueing layer to decouple scheduling from execution, enabling asynchronous processing. Spring Boot powers each service, with JPA and Hibernate managing persistence and Flyway handling database migrations. Docker and Docker Compose were used to support local development and service orchestration.

Challenges & Learnings

One of the primary challenges was coordinating state across multiple services while maintaining consistency and fault tolerance. This project strengthened my understanding of distributed systems, asynchronous processing, and designing reliable job execution pipelines using queues and persistent storage.

Demo walkthrough