# Overview of Reliability #flashcard
- The degree to which a system can continue to function properly despite the presence of 'faults' (either software, hardware, or human intervention). No system is 100% fault-tolerant, since the scope of 'faults' can include events as extreme as nuclear bombs.
- A ability for a system to continue to operate as intended (across functionality and performance), even if issues in software, hardware, or human intervention arise. A highly reliable system would have strong [[Fault Tolerance]] to protect against errors (i.e., faults) and high [[Availability]] to protect against outages in its components. Reliability is an overarching term that describes the system's ability to keep functioning properly, regardless of the specific issue.
- In system design, the goal is to build reliable systems from unreliable parts. This requires things like redundancy to address availability and mechanisms for handling faults. The tradeoff for the availability may be consistency. The tradeoff for handling faults may be maintainability, complexity, and cost.
<!--ID: 1751507777748-->
# Key Considerations
## Types of Faults #flashcard
### Hardware Faults
No matter the level of preparation, hardware faults are inevitable across a distributed system. These include hard disks failing (which happens every 10 to 50 years), faulty RAM, and even someone unplugging your CPU. The key is to have redundancy in-place to handle these faults when they occur. There are also software fault-tolerance techniques that can be applined.
### Software Errors
Think - 'bugs'. This can include runaway processes that use some shared resource, like CPU time, memory, disk space, or network bandwidth.
### Human Error
Human's are unpredictable. An attempt to enumerate all potential types of human error could never work, because someone would still invent a new way to make a mistake. The key is to design a system that minimizes the opportunities for human error.
<!--ID: 1751507777750-->
# Implementation Details
# Useful Links
# Related Topics
- [[Monitoring]]
- Alerts
- [[Exception Handling]]
- [[Logging]]
- [[Exception Handling]]
- [[Fault Tolerance]]
## Reference
#### Working Notes
#### Sources