Skip to content

Assignment 3

Nawaz Hussain K edited this page Dec 9, 2018 · 1 revision

Foodcode scaling architecture

  • We have used docker swarm to achieve fault tolerance, load balancing, elasticity, and high availability.

Quick Links

What all achieved?

  • Fault Tolerance
  • High Availability
  • Load balancing, service discovery achieved in the older releases.

Tool used to measure throughput and efficiency of the project: JMeter

Fault tolerance

  • We have specified the on-failure: restart as the policy for each container. When our container is deployed in the swarm, and it faces an issue or crashes due to the error, it is restarted and added to the swarm by docker swarm.

Load Balancing

  • Docker swarm uses a round-robin approach to balance the traffic between the all the replicas. As of this writing, we have three replicas of each microservice running on two nodes.
  • Below mentioned diagrams show our throughput and efficiency.

Elasticity

  • AutoScaling is not attained here as all the replicas created and run by docker. Therefore all the containers are always up and running. This makes the system highly available, but if the demands overflows the processing power of the replicas, our setup cannot scale itself up yet.

High Availability

  • Our application is highly available for the end user. As each microservice has multiple replicas running on two nodes, our system can handle 4000 simultaneous requests before breaking.

Our system

  • Our current system Current Replications

Load testing

Login and view all attributes Microservices

  • Throughput: login and retrieve all attributes does not break at 4000 samples. Login load for 100 pings
  • Login load for 100 pings
  • Login load for 1000 pings
  • Login load for 5000 pings

Python Search Microservice

  • Throughput: Search feature breaks at 4000 samples. Login load for 100 pings
  • Search load for 100 pings
  • Search load for 1000 pings
  • Search load for 5000 pings

Python Search Microservice

  • Throughput: Front End feature faces some lag at 4000 samples. Login load for 100 pings
  • FrontEnd load for 100 pings
  • FrontEnd load for 1000 pings
  • FrontEnd load for 5000 pings