Meanings of Scalability, Availability, and Reliability in Software Engineering

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

Source from

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

Source from

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


要查看或添加评论,请登录

Muhammad Rivaldy的更多文章

社区洞察

其他会员也浏览了