Meanings of Scalability, Availability, and Reliability in Software Engineering
Introduction
It’s an interesting topic for me because when you work with a whole system and many services. You will always need to be concerned about those things (scalability, availability, and reliability).
Let’s start to explain them.
Scalability
Scalability means the server that you handle can increase or decrease the workload in various cases. In this case, the server can easily handle low traffic with minimal cost or high traffic with maximum cost.
Examples of increased workload are:
- Users access your system simultaneously
- Your storage is almost full
- Increased number of transactions
Scaling mechanisms
There are 2 mechanisms when we want to scale our systems:
- Horizontal (Scaling out) means you can scale the software by adding another instance or server to fulfill the workload.
- Vertical (Scaling up) means you adding more power (specification) to your current server to fulfill the workload.
Availability
Availability also known as uptime means the ability of a system to fulfill every request from users when needed and the availability ensures that a system is continuously available to its users.
We need to notice the availability in the high-demand applications with 24/7 hours. In general, we know it as “The 9s of Availabilityâ€.
The 9s of Availability
领英推è
The formula of availability is:
Availability = Uptime / (Uptime + Downtime)
How to Improve Availability
There are several ways to improve your software availability, among others:
- Achieve geographic redundancy
- Leverage failover solutions
- Implement network load balancing
- Improve your incident management
Reliability
If the availability refers to the uptime of the system. On the other hand, reliability is the probability of failure-free operation of a computer program for a specified period in a specified environment. Reliability is a customer-oriented view of software quality.
The focus of reliability is how we can ensure the system runs well as expected in any conditions of users' behavior.
How to Improve Reliability
There are several ways to improve your software reliability, among others:
- Make a clear requirement before making changes
- Cover your service with proper testing
- Review every change to validate the human error
- Make a good standard for your project
References
- https://madappgang.com/blog/scalability-in-software-development
- https://itrexgroup.com/blog/what-is-software-scalability
- https://www.bmc.com/blogs/reliability-vs-availability
- https://www.blameless.com/blog/reliability-vs-availability
- https://fiixsoftware.com/glossary/system-availability
- https://users.ece.cmu.edu/~koopman/des_s99/sw_reliability
- https://www.geeksforgeeks.org/software-engineering-hardware-reliability-vs-software-reliability