In: Computer Science
Let us consider the case of John, an entrepreneur and the CEO of a startup, named “Home Service”. The company started a small scale service where a couple of signed-up workers of the company were giving various services to the dweller of Ballarat, a city in Victoria. The services include plumbing, electric works, gas appliances’ works, and car wash. The people are Ballarat dwellers (roughly 20k in total) needed to download the software from App Store/Google Store and try to find someone in Ballarat who can provide the required service. They post a job in the app with estimated pricing, and then the interested workers pick the task. Then they go after a couple of rounds of message exchange through the app to understand the weight of the work and they finalize the total costing for that. The app then takes a service charge for the task, while the workers receive the remaining money. The business got tremendous popularity among the inhabitant of the city while people from other cities were also looking for services. Currently, John’s system is receiving around 10 requests per hour for various services.
As mentioned above, due to selecting only one city and a fixed number of services, John’s current system is like a simple computer where he deployed all his codes. To be more specific, the webserver, backend API codes, and a database server are installed in one virtual machine (VM) in the cloud, while the mobile apps are deployed in the Apple store and Google store.
John has decided to extend his business by outspreading the service area to all over Australians and to incorporate more services like catering, food delivery, carpet cleaning, gardening, and many more. To incorporate the above requirements, John’s current platform (i.e., one VM with everything installed in that VM) is not capable of meeting the future requirements.
You are hired by John to extend his current platform to a distributed system so that your proposed system will be capable to deal with millions of users, thousands of workers, hundreds of services, and thousands of requests per hour to the system.
You have to propose a new distributed system so that it can cope with future demand. You are not required to draw any diagram, rather you should mention how many (roughly) new VM, Database servers/Web servers are required to deploy. Most importantly, you have to discuss thoroughly how your PROPOSED system takes the advantages of a distributed system (i.e., Resource sharing, sharing of hardware and software, Openness, Concurrency, Scalability, Fault tolerance, Transparency).
A Distributed System is a system in which multiple systens connected to the network and allow resource sharing and perceive the system as a single integrated computing facility. This system consist of multiple software components but run as a single system.
John first offer the service like plumbing , electric work, gas appliances works and car wash to the people of Ballarat , a city in Victoria by app HOME SERVICE. Web servers for network communication, application server like Oracle, Realtime communiction server , FTP server plays an important role in the above case study.
As initially only single system is enough to keep record of users and services as John system receives 10 requests per hour.
But now John wants to extend the service providing by adding Catering, Food delivery, Carpet cleaning,Gardening etc and not only in Ballarat but throughout Australia.
For this we require Distributed System in which multiple users are connected and share resources across the network.
The main purpose of using distrubuted system is its advantages like
multiple nodes can be easily connected and extended easily.
if one node fails then it does not effect other nodes of the network .
The distributed system used by the John to extend the services of its app "Home Service" plays very imporatant role:
Heterogenity:
We use middleware at the software layer so that various programming languages, Hardware devices such as computer , tablets, mobile phones etc. , various operating system and different networks like local network, wireless network communicate with each other.
For this communication we must use internet protocols that mask the differences of the underlying network and middleware deals with differences in operating system and hardware.
Transparency :
The system should perceived as a whole system rather than a collection of independent components.
Means various services offered by John should be comprise in one Application and the complexity of the database regarding the services like car washing, plumbing , electric work etc . are hidden from the users.
Scalability
The main advantage of using distributed system is the scalability. We can easily extend our nodes as the number of users increases.
As various services as well as geographical area get increase in above case study so various nodes regarding catering, food delivery, carpet cleaning,gardening can be added easily.In future also multiple nodes can be easily added without any change in structure.
CONCURRENCY
multiple users access the shared resources at the same time and this is only possible because of distributed system. For example multiple usere can access car washing and carpet cleaning at the same time during holidays and in order to provide safe concurrent environment the operation must be synchronized in such a way that data remain consistent and it can be achieved by using semaphores used in various operating systems.
Fault Tolerance
By redundancy or by creating multiple files of the data items and store them in various locations we can provide efficient services to the clients . we can create multiple copies of the information regarding the employees and the services with which they assosciate helps us to provide services to the clients even in case of systwm failure.Fault tolerant softwares assures the system reliability by using software techniques such as RB scheme and NVP .