Technologies used: Angular8, Go, MongoDB database, AWS.
The repository has the following structure:
- Documentation - Individual API documentation, overall documentation, project journal and diagrams
- APIs - Go API source code
- frontend - AngularJS source code
| Name | Implementor |
|---|---|
| Login | Kowshhal |
| Menu | Anjana |
| Order | Shivangi |
| Payments | Pavani |
| Reviews | Naman |
Go to the frontend directory
cd Frontend
Build the docker image
docker build -t <image name> .
Run the docker image
docker run -p 80:4200 --name frontend --restart always -d <image name>
- X-axis scaling or Horizontal duplication refers to running multiple identical copies of the application behind a load
balancer. - We have demonstrated this aspect by running each API on multiple docker hosts. These docker hosts have been placed behind AWS Network Load Balncers to ensure that the service will remain up in the event that one of the servers running the API goes down .
- Y axis scaling refers to functional decomposition of a monolith service , that is breaking one huge service into multiple microservices.
- This aspect been implemented by separating all the services to function independently into the following APIs:
- Login API
- Menu API
- Order API
- Payment API
- Review API
- Z axis scaling refers to splitting similar data among different servers such thaat each server has 1/Nth of the data.
- This has been achieved in the case of this application by using MongoDB sharded cluster with 2 config servers, 2 sharded replica sets and 1 mongos query router server. MongoDb has been used to store login, item details, order details, payment details and reviews provided
- C : Consistency
A guarantee that every node in a distributed cluster returns the same, most recent, successful write. Consistency refers to every client having the same view of the data.
- A : Availibility
Every node that is up returns a response for all read and write requests in a reasonable amount of time. The key word here is every. To be available, every node on (either side of a network partition) must be able to respond in a reasonable amount of time
- P : Partitioning
Our system continues to function and upholds its consistency guarantees in spite of partitions. Network partitions are a fact of life. Distributed systems guaranteeing partition tolerance can gracefully recover from partitions once the partition heals
