Reliable, Scalable, and Maintainable Applications Summary - rFronteddu/general_wiki GitHub Wiki

An application has to meet various requirements to be useful.

  • Functional requirements describe what it should do
  • Nonfunctional requirements describe general properties like security, reliability, compliance, scalability, compatibility, and maintainability.

In particular

  • Reliability means making the system work correctly, even in the presence of faults that can be caused by hardware, software, and humans. Fault-tolerance techniques can hide certain types of faults from the end user.
  • Scalability means having strategies for keeping performance good, even when load increases. In a scalable system, you can add processing capacity to remain reliable under high loads.
  • Maintainability is about making life better for the engineering and operations teams who need to work with the system. Good abstractions can help reduce complexity and make the system easier to modify and adapt for new use cases. Good operability means having good visibility into the system's health, and having effective ways of managing it.