Making Your Infrastructure and Applications Available and Scalable

  • May 19, 2021

In the process of growing your business, you have most likely learned that meeting customer demand and being consistently available to your customers are two of the most important things your business must do. Furthermore, you probably already know that the cloud enables both. In fact, both are some of the main reasons businesses are moving to the cloud. It’s anticipated that 94% of the internet workload will be in the cloud by 2021.

In short, being available and meeting demand refer to Availability and Scalability. While these terms speak to different concepts, you won’t have high availability without scalability. You need both in order to have the right resources in place when you and/or your users need them. So what are Availability and Scalability?

Availability is associated with reliability, fault tolerance, and disaster recovery. It means your services are always ready when needed. It is key to the perception your users will have about your service. They want to be confident it will be reliable and not cause them costly downtime. Infrastructure will fail. It isn’t possible to have everything work 100% of the time. It’s vital for your business to reduce the impact of failures and the MTTR.

Scalability, on the other hand, is about growing your service to meet demand or decommissioning services when demand decreases. The demand for provisions or decommissions could be cyclical, seasonal, related to some special event, etc. The main benefits include adapting to changes in workload or demand and being able to optimize costs because you can dynamically provision for what you need.

You Can’t Buy Availability

Your process must integrate availability, and your application must collaborate with it. Availability must be part of your infrastructure and/or applications from the very beginning of development.
Understand Your Metrics
Metrics will help you know if your infrastructure or application has high availability. Review your data and check if you have redundancy. The metrics you will want to monitor are:

  • Uptime
  • RTO (Recovery Time Objective)
  • RPO (Recovery Point Objective)
  • SLI (Service Level Indicator)
  • SLO (Service Level Objective)
  • SLA (Service Level Agreement)

 

Backups and Disaster Recovery

Disaster recovery is how to manage backups and how to manage your infrastructure to rebuild (maybe) in other regions if needed. Your backups must be in multiple locations. Backups, RTO, and RPO must match business needs. All your infrastructure must be redundant and multi-AZ. You should be able to use your automation to rebuild your infrastructure in another region.

Autoscaling and Managed Databases

While we talk about autoscaling when we think about scalability, it can assist HA, not only support the additional load. A managed database also provides HA in addition to FT, Point-in-Time-Recovery. AWS RDS. Object Storage like S3 can be protected with Glacier backups, delete protection flags, versioning.

Scalability is A Must-Have

There is no one way to have a scalable infrastructure. Auto-scaling via adding or removing resources, like AWS Auto Scaling groups, caching via CDNs, and app or DB caching will all work. What is most important is that your infrastructure and applications be scalability-friendly. This means Cloud-Native apps must be stateless in order to ensure that adding and removing instances is trivial, and sessions must be stored in the central/shared place.

Testing

Scalability needs testing. You need to do load testing. So simulate expected load (or even more than expected) to understand how your auto-scaling works. Testing will also help you understand where your application or platform crashes in case of unexpected load.

Criteria for Autoscaling

There are multiple criteria for autoscaling, including CPU, memory, or a custom metric of your application. For example, in a machine learning application, some events are stored in Kafka to be processed. Cluster scales in and out based on the number of messages queued.

The metrics you use for auto-scaling or how you create the scalable infrastructure are up to you and your business. Building availability and scalability into your infrastructure and applications from day one are essential for your clients and customers to trust and use your products.