Requirements Definitions
Availability
- percentage of the time where server is online and functioning
- measured in number of 9s e.g. 99.9% available
- Service Level Objective (SLO) - mainly on availability and reliability
- Service Level Agreement (SLA) - consequence if the object is not achieved, such as AWS cannot ensure availability of their service
Reliability, Fault Tolerance and Redundancy
- Reliability - Probability that the system won't fail
- DOS (Denial of Service attack)
- Fault Tolerance - Incase on server is down, other server can still carry computation and action
- Redundancy - Extra resource such as a server
Through put
- Amount of information the server can handle over period of time
- request per second or byte per second
- for databases - queries per second
- single point of failure - no horizontal scaling
Latency
- amount of time does the entire operation take
- how long does each request take
- CDN - content delivery network
Scalability
- ability for server to handle increased work load without compromise performance
- Request workload
- database workload
- Dimension
- Size scalability: A system is scalable in size if we can simply add additional users and resources to it.
- Administrative scalability: This is the capacity for a growing number of organizations or users to share a single distributed system with ease.
- Geographical scalability: This relates to how easily the program can cater to other regions while maintaining acceptable performance constraints. In other words, the system can readily service a broad geographical region, as well as a smaller one.
Maintainability
-
the probability that the service will restore its functions within a specified time of fault occurrence
- Operability: This is the ease with which we can ensure the system’s smooth operational running under normal circumstances and achieve normal conditions under a fault.
- Lucidity: This refers to the simplicity of the code. The simpler the code base, the easier it is to understand and maintain it, and vice versa.
- Modifiability: This is the capability of the system to integrate modified, new, and unforeseen features without any hassle.
-
Move Data
- from one machine to another
-
Store Data
- Database
- Blob store
-
Transform Data
- Transform log, distill useful informations