Imagine we have been given the task of implementing a social network in the style of X (formerly Twitter), where users can post messages and follow other users. This will be a…
- 03.01Case Study: Social Network Home TimelinesImagine we have been given the task of implementing a social network in the style of X (formerly Twitter), where users can post messages and follow other users. This will be a…
- 03.02Describing PerformanceMost discussions of software performance consider two main types of metric:
- 03.03When an Overloaded System Won’t RecoverIf a system is close to overload, with throughput pushed close to the limit, it can sometimes enter a vicious cycle where it becomes less efficient and hence even more…
- 03.04Latency and Response Time“Latency” and “response time” are sometimes used interchangeably, but in these notes we will use these and a few related terms in a specific way (illustrated in Figure 2-4):
- 03.05Average, Median, and PercentilesBecause the response time varies from one request to the next, we need to think of it not as a single number, but as a distribution of values that we can measure. In Figure…
- 03.06Use of Response Time MetricsHigh percentiles are especially important in backend services that are called multiple times as part of serving a single end-user request. Even if you make the calls in…
- 03.07Reliability and Fault ToleranceEverybody has an intuitive idea of what it means for something to be reliable or unreliable. For software, typical expectations include the following:
- 03.08Fault ToleranceWe call a system fault-tolerant if it continues providing the required service to users in spite of certain faults occurring. If a system cannot tolerate a certain part…
- 03.09Hardware and Software FaultsWhen we think of causes of system failure, hardware faults quickly come to mind:
- 03.10Humans and ReliabilityHumans design and build software systems, and the operators who keep the systems running are also human. Unlike machines, humans don’t just follow rules; one of their strengths…
- 03.11How Important Is Reliability?Reliability is not just for nuclear power stations and air traffic control; more mundane applications are also expected to work reliably. Bugs in business applications lead to…
- 03.12ScalabilityEven if a system is working reliably today, that doesn’t mean it will necessarily work reliably in the future. One common reason for degradation is increased load. Perhaps the…
- 03.13MaintainabilitySoftware does not wear out or suffer material fatigue, so it does not break in the same ways as mechanical objects do. But the requirements for an application frequently…
- 03.14Recap: Defining Nonfunctional RequirementsIn this topic we examined several examples of nonfunctional requirements: performance, reliability, scalability, and maintainability. Through these topics, we also encountered…