CodeJudge: Algorithmic programming challenges

Akash Girme

Source Code on Github
Visit Project

Application System Design

 

image  

Lets understand the flow of application

1. Client

2. API Server

3. Worker

4. Message/Job Queue

Flow Diagram

image

Sequence Diagram

image

 

Techniques & Methods for optimal workflow

Database schema

The database schema consists of six tables, each designed to capture different aspects of the application’s functionality. Here’s a detailed overview of the relationships among these tables: Database Tables and Relationships

Summary of Relationships

ER Diagram

image

Deployment

The application is deployed on DigitalOcean using Kubernetes, which facilitates the seamless creation of multiple replicas or instances of worker nodes. This capability allows for effective load distribution across several workers, particularly during periods of high demand.

Kubernetes Cluster Configuration

The Kubernetes cluster comprises several key components:

Email and Object Storage Services
For email services, the application utilizes AWS Simple Email Service (SES), while AWS S3 is employed for object storage. These services provide reliable and scalable solutions for handling email communications and data storage.

Enhanced Security Measures
To maximize security, Cloudflare is implemented as a forward proxy. This setup helps in protecting the application from various threats and enhances performance by caching content and reducing latency.

This architecture effectively leverages Kubernetes' capabilities for scalability and resilience while integrating robust cloud services for email and storage, along with security enhancements through Cloudflare.

Diagram

image

References

  1. Judge0: Robust, scalable, and open-source online code execution system.
  2. Isolate: Isolate is a sandbox built to safely run untrusted executables
  3. Online Judge System Design