Skip to content

Latest commit

 

History

History
192 lines (173 loc) · 5.1 KB

README.md

File metadata and controls

192 lines (173 loc) · 5.1 KB

My Microservices Project Build Status

Click Here to view the Architecture Diagrams

Tech Used

  • Kubernetes 🕸 (Container Orchestration)
  • Docker 🐳 (Containerization)
  • Node, Express JS (Backend)
  • React ⚛ (Frontend)
  • Postgres 🐘 (Database)
  • Travis CI (Testing and Continuous Integration) 👷‍♂️

Kubernetes Cluster

Explanation

Service Tech Used Description
Client
  • React JS
  • Nginx Server
  • This is the front end of the app
  • The client container has Nginx installed with the built react code
  • Nginx serves the built react app from build folder
Auth
  • Node JS
  • Postgres SQL
  • Handles request to /api/auth
  • Registration and Login of Users
  • Check if user is student or teacher
Teachers
  • Node JS
  • Postgres SQL
  • /api/teachers Handles all functionality of teachers
  • Has separate DB. Hence independent of all services
  • Communicates with Students service using AMQP(Asynchronous Messaging Queue Protocol)
Students
  • Node JS
  • Postgres SQL
  • /api/students Handles all functionality of students
  • Has separate DB. Hence independent of all services
  • Communicates with Teachers service using AMQP
Ingress Nginx
  • Ingress Nginx Controller
  • Gateway between the outside traffic and our Kubernetes cluster
  • Routes traffic to appropriate service

Microservices Architecture

Explanation

Event Description
Annoucement
  • Teacher Creates an announcement. Stores in Teachers DB
  • announcement_created event is created. Passed to RabbitMQ via AMQP
  • RabbitMQ transfers this event to Student service
  • Student saves this announcement info in its DB
Comments
  • Student creates a comment. Stores in Student DB
  • comment_created event created. Passed to RabbitMQ via AMQP
  • RabbitMQ transfers this event to Teachers service
  • Teacher saves this announcement info in its DB
Auth
  • Auth services is independent. Does not create or receive any events
  • It maintains its own DB of users.

Teachers Service

  1. Teachers can view and create new announcements

  1. Teachers can see all comments made by students. Comments can also be deleted

Students Service

  1. Student can view all announcements

  1. Student can make a new comment on an announcement

Auth service

  1. Register or Login a new user (student and teacher)


Install and run locally

Setup the Ingress Nginx Controller

kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v0.48.1/deploy/static/provider/cloud/deploy.yaml

Check the installation

kubectl get pods -n ingress-nginx

Create all the Kubernetes Objects

kubectl apply -f k8s/

Check out the app on localhost:80