What is graceful degradation?
Graceful degradation is the ability of a computer, machine, electronic system or network to maintain limited functionality even when a large portion of it has been destroyed or rendered inoperative. The purpose of graceful degradation is to prevent catastrophic failure.
In a system that incorporates graceful degradation, even the simultaneous loss of multiple components does not cause downtime. Instead functionality is reduced to a level that can be supported by the remaining working components. However, there will generally be a decrease in operating efficiency, delivery speeds, feature availability or some other function of the system or service.
The term graceful degradation is commonly used in the context of networking and computing. For example, distributed applications often rely on multiple services to carry out its operations. If an application is designed for graceful degradation, it might define static service responses that can be used if one of the services stop responding.
Despite its common association with networking and computing, graceful degradation can apply to a wide range of scenarios. For instance, it can play a role in medical care, air traffic operations, power grid coordination, supply chain risk management and many other circumstances. Even a house with a backup generator is a form of graceful degradation. It provides a limited amount of electricity in the event of a power failure, helping to maintain the household's most important appliances and electronic devices.
Graceful degradation is sometimes considered to be equivalent to fault tolerance, but there is a significant difference between them:
- Fault-tolerant systems are designed so that if a component fails or a network route becomes unusable, a backup component, procedure or route immediately takes its place with little-to-no negative impact on the individual subscribers.
- Graceful degradation is an outgrowth of effective fault management, which is the component of network management concerned with detecting, isolating and resolving problems. Graceful degradation ensures that certain fundamental services continue to function, although usually at a diminished level.
Graceful degradation and fault tolerance are not mutually exclusive. Both can be incorporated into a larger protection strategy to ensure that service requirements are met. However, graceful degradation can often be less expensive to implement than fault-tolerant components, so some organizations might favor the less costly approach.
Graceful degradation and the internet
Graceful degradation is an important consideration in the design and implementation of large communications networks, including the internet. The internet grew out of the efforts of the U.S. government's Advanced Research Projects Agency (ARPA), now called the Defense ARPA. The agency was formed at the height of the Cold War in large part because of the Soviet Union's launch of Sputnik in 1957. The ARPA's goal was to invest in breakthrough technologies that could enhance national security.
One of the ARPA's most important initiatives was to create a large-scale computer network that could resist massive physical and electronic attacks, including global nuclear war. The U.S. military championed this effort and was joined by universities that wanted a way to carry out reliable and fault-tolerant communications between geographically distributed computers.
Out of this effort came the ARPANET network, the world's first public packet-switched computer network. Although the network was used primarily for academic and research purposes, it provided the conceptual underpinnings and network technologies that led to today's internet. Like ARPANET, the internet is built around the need for a resilient infrastructure that facilitates the exchange of data. If an internet router becomes unavailable, network traffic is directed to another router with little impact to the user, excluding increased latency.
The internet is not as resilient as some would like, however. Cyber attacks on critical infrastructure represent a growing threat that comes in multiple forms, including viruses, worms, botnets and denial-of-service attacks, any of which can cause considerable disruption to internet services, particularly at a regional level. Even so, because the internet was designed with graceful degradation in mind, it can continue to function reasonably well against these attacks. It's not certain whether this will be true in the foreseeable future.
Graceful degradation in web design
The term graceful degradation is often used to refer specifically to web design rather than the more general concepts of networking and computing. In the context of web design, it is specific to the practice of accommodating older browsers and technologies when building web applications while still delivering the advanced capabilities supported by newer browsers.
When an updated version of a browser or operating system is released, new features are often included to keep pace with the latest enhancements to internet standards and other technologies. For various reasons, some users continue to use their existing browsers rather than upgrade to newer versions. When a web application is designed with graceful degradation in mind, users with older browsers don't need to upgrade until they're ready (within reason).
The graceful degradation approach starts by designing the application to deliver the functionality necessary to meet the needs of users on modern browsers. At the same time, the application is built to degrade gracefully, that is, it includes the features needed to support older browsers so that users aren't forced to upgrade to use the application. The developer is not trying to deliver the best possible user experience on the older browsers, only ensuring that user can still access the website's basic functionality.
Graceful degradation is often compared to progressive enhancement, which takes an opposite approach to web development. Instead of starting with the advanced features supported on modern browsers, progressive enhancement starts with the most basic features supported on all browsers. The developer than adds the more advanced features, which are automatically available when the user accesses the application through a modern browser.