AWS Cert: Scalability, Elasticity, and Availability

AWS Cert: Scalability, Elasticity, and Availability

These are key concepts not only when dealing with AWS, but in the general software engineering day-to-day tasks.

Elasticity 📈

Elasticity has to do with the ability of a service to raise resources and cut resources automatically. This means that an elastic resource like, for an example, EC2 instances, will deploy more EC2 servers during peak traffic and release them when no longer needed. This allows your system to adapt to surges on demand, like a rubber band that stretches to support more load.

Scalability ⏫

Now when it comes to scalability, is the ability of your resource to get bigger permanently or semi-permanently, like whenever you company grows and adds more servers to support that growth. Scalability can be either vertical or horizontal:

  • Horizontal scalability will be equal to adding more servers or resources to handle your demand.
  • Vertical scalability will be equal to beefing up your existing server, like adding more RAM, disk, and processing power.

In other terms:

Let's say you have a bag of 10 kilos of food for ducks and you have 2 ducks. Scaling it horizontally would mean adding more ducks to your collection, while vertical scalability would mean making your current ducks get bigger. Now, to choose between them will depend on your specific business requirements. If one duck handles 1 kilo of food per hour you might want do add more ducks to use less hours. But if the food is too big for your current duck's mouth to process, you might want bigger ducks.

Availability 🎯

Availability has to do with the accessibility, quantity, and capacity of resources. This includes things like redundant servers and deployments in multiple Availability Zones to allow ease of access of your service, without users facing slowness or even unavailability.

How to achieve all of that?

Many resources have autoscale options, like for and EC2, you will need an EC2 image, and then the autoscale will handle everything for you. You can further expand that with and Elastic Load Balancer in the application layer, so it will make your resources elastic and scale with network demand.

Recap

Availability, Scalability, and Elasticity are key concepts to have on the tip of your tongue. They all relate to one single topic: How resources respond to growth on demand, either momentarily or permanently.