A single point of failure (SPOF) is a part of a system that, if it fails, will stop the entire system from working.[1] SPOFs are undesirable in any system with a goal of high availability or reliability, be it a business practice, software application, or other industrial system. If there is an SPOF present in a system, it produces a potential interruption to the system that is substantially more disruptive than an error would elsewhere in the system.
Overview
Systems can be made robust by adding redundancy in all potential SPOFs. Redundancy can be achieved at various levels.
The assessment of a potential SPOF involves identifying the critical components of a complex system that would provoke a total systems failure in case of malfunction.[2] Highly reliable systems should not rely on any such individual component.
For instance, the owner of a small tree care company may only own one woodchipper. If the chipper breaks, they may be unable to complete their current job and may have to cancel future jobs until they can obtain a replacement. The owner could prepare for this in multiple ways. The owner of the tree care company may have spare parts ready for the repair of the wood chipper, in case it fails. At a higher level, they may have a second wood chipper that they can bring to the job site. Finally, at the highest level, they may have enough equipment available to completely replace everything at the work site in the case of multiple failures.
Possible SPOFs in a simple setup
Using redundancy to avoid some SPOFs
Completely redundant system without SPOFs (note: assumes generator and grid sources are each rated at N, each UPS is rated at N, and "A/C" and "Electrical" are in and of themselves completely fault tolerant systems)
Computing
This section needs to be updated. The reason given is: Needs updating for public cloud computing. Please help update this article to reflect recent events or newly available information.(May 2022)
A fault-tolerant computer system can be achieved at the internal component level, at the system level (multiple machines), or site level (replication).
One would normally deploy a load balancer to ensure high availability for a server cluster at the system level.[3] In a high-availability server cluster, each individual server may attain internal component redundancy by having multiple power supplies, hard drives, and other components. System-level redundancy could be obtained by having spare servers waiting to take on the work of another server if it fails.
Since a data center is often a support center for other operations such as business logic, it represents a potential SPOF in itself. Thus, at the site level, the entire cluster may be replicated at another location, where it can be accessed in case the primary location becomes unavailable. This is typically addressed as part of an IT disaster recovery program. While previously the solution to this SPOF was physical duplication of clusters, the high demand for this duplication led multiple businesses to outsource duplication to 3rd parties using cloud computing. It has been argued by scholars, however, that doing so simply moves the SPOF and may even increase the likelihood of a failure or cyberattack.[4]
Paul Baran and Donald Davies developed packet switching, a key part of "survivable communications networks". Such networks – including ARPANET and the Internet – are designed to have no single point of failure. Multiple paths between any two points on the network allow those points to continue communicating with each other, the packets "routing around" damage, even after any single failure of any one particular path or any one intermediate node.
Software engineering
In software engineering, a bottleneck occurs when the capacity of an application or a computer system is limited by a single component. The bottleneck has lowest throughput of all parts of the transaction path. A common example is when a used programming language is capable of parallel processing, but a given snippet of code has several independent processes run sequentially rather than simultaneously.
Performance engineering
Tracking down bottlenecks (sometimes known as hot spots – sections of the code that execute most frequently – i.e., have the highest execution count) is called performance analysis. Reduction is usually achieved with the help of specialized tools, known as performance analyzers or profilers. The objective is to make those particular sections of code perform as fast as possible to improve overall algorithmic efficiency.
Computer security
A vulnerability or security exploit in just one component can compromise an entire system. One of the largest concerns in computer security is attempting to eliminate SPOFs without sacrificing too much convenience to the user. With the invention and popularization of the internet, several systems became connected to the broader world through many difficult to secure connections.[4] While companies have developed a number of solutions to this, the most consistent form of SPOFs in complex systems tends to remain user error, either by accidental mishandling by an operator or outside interference through phishing attacks.[5]
Other fields
The concept of a single point of failure has also been applied to fields outside of engineering, computers, and networking, such as corporate supply chain management[6] and transportation management.[7]
The concept of a single point of failure has also been applied to the fields of intelligence. Edward Snowden talked of the dangers of being what he described as "the single point of failure" – the sole repository of information.[9]
Life-support systems
This section needs expansion. You can help by adding to it. (October 2019)
A component of a life-support system that would constitute a single point of failure would be required to be extremely reliable.
^ abLever, Kirsty E., Madjid Merabti, and Kashif Kifayat. "Single Points of Failure Within Systems-of-Systems."14th Annual Post Graduate Symposium on the Convergence of Telecommunications, Networking and Broadcasting (PGNet). Vol. 183. 2013.