Cluster
In system design Cluster is group of machines(running application processes) working together as one system. 1 app server in AZ1(Availability Zone), other in AZ2 but working together as 1 system
Maintainable / Maintainability
Over time, many different people will work on the system (engineering and operations, both maintaining current behavior and adapting the system to new use cases), and they should all be able to work on it productively.
Reliable / Reliability
System to continue to work correctly, even when things fail. When one
component dies, the redundant component can take its place while.
What things can go wrong?
| 1. Hardware Failures |
a. Hard Disk Failures: Add redundancy Disk, RAID configuration b. Power Failures: Use Generators or Dual power supply |
| 2. Software Failures |
a. High CPU, Memory, n/w BW: OOM killer, Autoscaling b. Outdated Software: Rolling updates c. Leaks, Ransomeware attacks How to void software failures? Good design patterns, use tested libraries, Monitoring, logging, alerting. |
Scalable / Scalability
Means System behaves normally under increased load
How to make system Scalable?
1. HPA (Horizontal Pod Autoscaling)
2. DB Scaling: Sharding/Partitioning DB