Software Engineering
Introduction
You are in the DevOps group at a government agency where the organization runs a case management application. They are having performance problems running the application in-house (a web server in their own data center), and there is too much downtime. They are looking to your advice about whether they need to procure one or more new web servers (Dell) or they should move to a cloud service.
There are about 1200 concurrent users on the application each day, most of them at remote locations.
Details of the application
The application has a major web interface with a menu allowing the user to create a new case, update a case, find a specific case, or search for a case by a variety of terms.
Main Menu
The current front-end application requires 0.5 GB of memory to run each instance and each instance can handle a maximum of 300 concurrent users.
New Cases
20% of the users create a new case when they access the system. The “new case” component calls 4 different services to collect different parts of the required information. Each service is called sequentially so only 1 service is in memory at any one time. The new case component stays in memory and takes 1.2 GB of memory. The maximum load it can take is 150 users. The maximum size of each of the services called is 0.5 GB and it can handle 50 users at the same time.
Update Cases
About 30% of the users are simply updating one or more of the pages created as above. Again,the component has 4 different services representing each of the different parts of the information. As above, each service is called sequentially so only 1 service is in memory at only one time.
The “update case” component stays in memory and takes 0.75 GB of memory. The maximum load it can take is 300 users. The maximum size of each of the services called is 0.4GB and it can handle 300 users at one time.
Find Specific Case
About 30% of the users merely use the application to retrieve data on a specific case. The component is a stand-alone application. The maximum load is 80 users and the size of the component is 0.5 GB of memory.
Search Cases
The remaining 20% of users are performing searches to identify one or more relevant cases. The search system has a service to handle each of the five different search terms (e.g. topic, name, location, date, and prosecution status).
Searches can involve 2 of these topics at the same time so 2 service instance can be in memory at the same time. The search case outer module stays in memory (1.5GB) and so does 2 of the 5 services (0.4 MB) each. The module and services have maximum local factor of 100 users.
Non-Functional Considerations
Downtime has been a factor so the government organization wants to have at least 2 different VMs or servers. Each VM/server must have enough memory to carry the entire load in the case of failure of one of the machines (e.g., a hard disk failure).
Memo
Draw a component diagram of the application making for each module the number of instance that are necessary to adequately support the estimated workload.
Prepare a spreadsheet identifying the various component memory requirements and calculate the total memory requirements, allowing for the multiple instances necessary to support the anticipated concurrent users.
Prepare a memo to the CIO (Elizabeth Jones) with a copy to the CFO (Nathan Andrews) which summarizes the features of the 2 options, including the time it might take to provision them.
Include information on the urgency of the requests as the inspector general will be doing an audit in 3 months’ time.
In the last paragraph detail your recommendation, attached a spreadsheet showing your calculations, and the component diagram.
Notes:
In addition, the application requires a Registry/Load Balancer and this is a 1.2 GB application and should be in memory at all times.
The application will require about 3 TB of data and has a service to retrieve data for each part of the system which requires 2GB of memory. It has capacity of handling 600 users.
You may recommend the cloud service of your choice but your memo should justify why you selected the cloud provider, there should be at least 3 justifications.