Since COVID-19 started, my wife and I switched to working remotely, with days filled with video conferences. The only way for my kid to connect to school and close friends is via the internet. At the end of the day, we are connected to the internet for news and entertainment as well. This is likely the same dynamic for others now as well. After some research, I found that my internet provider saw a surge in upstream (upload) traffic by 32% and downstream (download) traffic by 18%. As these shifts play out across the world it’s notable to me that I’ve yet to have an issue with my internet connectivity. How is this possible? The answer is familiar to IT professionals around the world: system scalability.
Before we dive into the details, let’s first focus on the current state of how the world has changed with the COVID-19 pandemic. COVID-19 caused many disruptions globally, such as falling gas prices, insurance refund claims, and many brick-and-mortar retailers shutting their doors (at least temporarily). According to Forbes, total internet usage pushed to about 70% as people increased their online entertainment usage, increased streaming by 12%, and online shopping for daily necessities skyrocketed by about 40%. With this kind of surge, the likelihood of a crash increases — but having the resiliency and scalability provided by cloud computing (not to mention the talent and effort of IT and operations personnel) it was seamlessly managed.
Companies with a good strategy in adopting cloud computing and a scalable architecture in place for their core business systems saw little disruption despite this unanticipated and sudden change. Their investments in digital transformation enabled them to quickly scale their applications and services to meet the sudden demands and ultimately serve their customers efficiently with little to no impact. For example, shelter-in-place orders increased the paid subscriptions for online entertainment by 32% according to Marketwatch. Companies like Netflix gained from this — with their stocks increasing by stock 14% in 2020, according to Forbes.
Not every business, however, has had the foresight or opportunity to embrace this shift, and there are still many businesses that are struggling to adapt to this change. Their current lack of scalability in their business and IT architecture has made adapting to this unforeseen change, especially hard — not only for them but their customers as well.
So what is scalability?
From a business point-of-view, scalability is the ability to serve customers seamlessly even when a sudden change in demand occurs. From an IT point-of-view, scalability is the ability to add/remove infrastructure resources needed by business applications to manage the increased/decreased demand in the number of business transactions.
Cloud computing by itself, however, doesn’t magically deliver scalability. Without a deliberate approach to design scalability into an architecture, business applications can fail to adapt to a spike in transactions leading to bad customer experiences, lost opportunities, and eventually impact revenue in a noticeable way.
There are three types of scalability options:
- Vertical scale or scale-up: Adding more compute or memory resources for your applications increases the maximum capacity of the server. When demand spikes, there should not be any noticeable change to your applications.
- Horizontal scale or scale-out: Adding more individual servers into a resource pool where your applications run.
- Diagonal scaling: Essentially a combination of vertical and horizontal scaling, this setup will scale vertically first until you reach a preset limit and then scale the system horizontally.
Scalability saves businesses by saving time
In traditional data center operations, to achieve scalability we had to procure the hardware, provision it, configure it, and test both the infrastructure and application prior to making it available in production. This requires significant time and resources — in addition to the downtime it causes during production rollout and the opportunity cost for business due to the time it takes. Now after doing all this, if your business demand decreases then organizations have no choice other than to absorb the cost.
In situations like COVID-19, this lack of adaptability can have a drastic impact when many services taken for granted come to a full stop. Many ports across the world are closed, impacting the global supply chain. This limits the supplies and makes it hard to procure the hardware in a timely fashion. Most governments have issued shelter-in-place policies which make it difficult to get the necessary resources to set up the new hardware, network configurations, etc. All this results in missed business opportunities.
In contrast, scalability in cloud computing is much more seamless for organizations to adapt as demand increases or decreases. This elasticity is managed behind the scenes on-demand with either prebuilt configurations managed automatically by the platform-as-a-service (PaaS) or by changing the configurations manually from wherever you are, by simply connecting to your cloud account via the internet. Given the massive infrastructure and the automation already put in place by SaaS providers like Salesforce, iPaaS providers like MuleSoft, and IaaS providers like AWS, adding compute, memory, or server capacity can be done quickly, efficiently, and remotely.
Expand your imagination as you expand your infrastructure
There are a wide range of benefits in architecting for scalability via cloud computing. For example:
- There is no need to devote time, attention, and scarce resources for procuring, provisioning, configuring, and testing.
- This helps manage the cost more efficiently since one would only pay for resources being used and for the duration it is being used.
- You can create new instances and environments when you need them (referred to as side-by-side scaling). For example, you can provision new DEV, TEST, QA instances by simply replicating the existing instance.
- You can take advantage of advanced deployment techniques like blue/green deployments, canary launches, and even create separate production environments for market tests with live audiences.
Best practices for using scalability in cloud computing:
- Leverage auto-scaling capability with supervision: Most cloud providers provide auto-scaling options. This allows us to manage the required resources appropriately as needed.
- However, I say “with supervision” meaning ensure the need for resources through proper monitoring. If you have an application that suddenly sees an increase in traffic demanding resources, auto-scaling can auto-provision the resources needed. But how do we know this is not some kind of denial of service attack?
- If you know you will see the increase during a particular time period the day, week, or month, you can use policies to manage your auto-scaling needs using schedule-based policies.
- Architect your solution for scalability: Not all applications can work as expected when scaled. This requires well-defined architecture and design patterns, such as distributed queues, Statelessness, Scalable storage needs, Pub-Sub, etc. that makes the applications work well when scaled.
- Use load balancers: It is important to have load balancers in the front which will receive the incoming traffic and manage the distribution of load across all the servers as you scale up or scale down.
- Have a robust testing strategy: Ensure you can test the scalability of your applications and the configurations put in place. Real business transactions contributing to revenue stream is not the place to test this.
As I close this topic, COVID-19 pandemic situation caused many changes in our world, our lives, and to the businesses. But I truly believe that some of these changes will become permanent. One such change for the businesses is making scalability in cloud computing will become a top priority.