Skip to content
This repository has been archived by the owner on Sep 8, 2024. It is now read-only.
/ codemore Public archive

Archived mono-repo for codemore.io microservices.

License

Notifications You must be signed in to change notification settings

abyanmajid/codemore

codemore.io (ARCHIVED)

This project was my first attempt at building a cloud-native microservices architecture that in theory is scalable and maintainable. This project is DISCONTINUED DUE TO ABUNDANT INCOMPLIANCES WITH IMPORTANT DEVOPS PRINCIPLES AND BEST PRACTICES.

The old architecture

In codemore.io, all client requests are sent to the broker service (which serves as an API gateway) with a JSON payload. The broker service will then redirect this request via gRPC to the correct microservice. The following mermaid visualizer depicts the architecture:

graph TD
    Client["<b>Client</b>"]
    Feed["<b>Feed</b><br>(WebSocket)"]
    Broker["<b>Broker</b><br>(REST)"]
    Auth["Third-Party Auth"]
    S3["Cloud Storage"]
    Epsilon["Epsilon CMS"]
    Account["<b>Account</b><br>(REST)"]
    Course["<b>Course</b><br>(REST)"]
    Progression["<b>Progression</b><br>(REST)"]
    Compiler["<b>Compiler</b><br>(gRPC)"]
    Judge["<b>Judge</b><br>(REST, Goroutined gRPC)"]
    CF["<b>Content Fetcher</b><br>(gRPC)"]
    Mail["<b>Mail</b><br>(gRPC)"]
    MongoDB["<b>MongoDB</b>"]

    Client <--> Feed
    Client <--> Auth
    Client <--> S3
    Client <--> Broker

    Broker <--> CF
    Broker <--> Compiler
    Broker <--> Judge
    Broker <--> Account
    Broker <--> Course
    Broker <--> Progression
    Broker <--> Mail

    Account --> MongoDB
    Course --> MongoDB
    Progression --> MongoDB
    Judge <--> Compiler
    Judge <--> MongoDB
    CF <--> Epsilon
    Epsilon --> MongoDB
Loading