What Are Reliability, Scalability and Maintainability?

Question
You want definitions of some I.T. terms. In the context of application/system design, what are reliability, scalability and maintainability?

Answer

Reliability: Dependability or suitable for production; the property of performing consistently over time; worthy of being trusted at all times due to fault tolerance. A system that can perform despite hardware failures or regional data center failures is said to have reliability.

Scalability: the property to rapidly adjust to greater or lesser workloads; elasticity.

To be scalable a system must handle increased demand with minimal performance penalty; the system must also be able to quickly reduce resource consumption (for the sake of saving monetarily) when workloads contract based on business demands. Scalability is achieved by adding or reducing (but not limited to) the following (usually automatically): processing power (e.g., the number of CPUs, the size of the cache(s) and speeds of the cache(s), memory power (e.g., size and/or speed), and networking bandwidth. A system is said to have scalability when it can scale up/down (changing the quality of the underlying computing component) or can scale out/in (changing the quantity of the underlying computing component) with little notice.

A system with the ability to expand or contract capacity suddenly (either through manual intervention or automated processes) is said to have scalability.

Maintainability: the property of being able to keep the system itself in a useful state throughout its operation; the trait of being able preserve efficiency after it is deployed, reconfigured or optimized.
A system is said to have maintainability if professionals can operate on the system once it is live and/or after changes are made to the system. A common subtrait of maintainable systems is the logical abstraction of components to reduce operational complexity (source page 23 of Designing Data-Intensive Applications by Kleppman).


The presentation of these definitions (and their presentation in a single article as they are here) was influenced by Chapter 1 of Designing Data-Intensive Applications by Kleppman.

Leave a comment

Your email address will not be published. Required fields are marked *