Note that this problem is from an earlier version of CS50 AP and is no longer supported or updated, but still may be a valuable addition to your classroom curriculum.
Degrees of Scalability
Research how scalable real world applications are.
First, take a look at how Dropbox scales.
Answer the following writing questions, giving both your answer and a justification. There is not necessarily a correct answer to each question, rather the important part is your justification for the choice(s) you make.
Let’s consider the popular social media site, Facebook, and see how scalable it is.
- Based on your knowledge of Facebook, do you think the website, its applications, and anything else it has are scalable?
- Do they allow for a large number of users with few bugs? Is all information accurately saved to their database? Would the server crash from overload?
- How do you think Facebook allows for such a large number of users? How do you think the servers divide the work (e.g., Do they scale vertically? Horizontally? Neither? Both?)?
- Do you think Facebook is scalable enough that they would no longer have to scale vertically to allow for more users? Remember to justify all answers.
Now let’s look into finance. Consider any online banking service you utilize.
- Based on your knowledge of your banking service, do you think that it is scalable?
- Does your banking service allow for a large number of users? Do you think it can handle a large number of users using its service at once or would it crash?
- With more users, comes more bugs and security risks? Does your banking service ensure security? Does it make sure that no two people can be logged in at once, even if they both try logging in at the same exact time? Can you think of any problems with their service and/or database?
- Which do you think is more scalable? Facebook or your banking service? Can you think of something that’s more scalable than the one you chose?
Last one! Choose another popular application unrelated to social media and finance and analyze its scalability like we did before. Open a text editor and create a file called
scalability (be sure that the file extension is either
.txt) and have at it!