Define System Requirements (functional, non-functional)
Non-functional requirements define the qualities of a system. These can be things like availability, scalability, resiliency, atomicity, or security. They drive technology choices, algorithm selection, and strategies. “How a system is supposed to be”
Functional requirements are the “business” requirements. The behavior of the system. “What a system is supposed to do.”
What does it mean for a system to be reliable?
high availability + correctness + timely response
What does it mean for a system to be highly available?
small downtime
What does it mean for a system to be fault tolerant?
close to zero downtime (usually achieved through redundancy). System knows how to handle unexpected failures, like dependency failures or load spikes.
This is also known as a “resilient” system.