When discussing the reasons for moving to the cloud, scalability is often mentioned as a key benefit. But what do we mean exactly by “scalability”?
Let's say you've created an application that lets users resell Christmas and birthday presents they've received but aren't happy with. At the outset, your application is little-known, with around a thousand users logging on regularly. But over time, word of mouth started to spread. In the space of two years, your application grew from 1,000 regular users to over 80,000. Obviously, there is a consumption peak right after December 25th, where up to 200,000 users connect to your app and get rid of their unwanted Christmas gifts.
It looks like your company is doing great!
Well… Not so sure.
Chances are your company started with a couple of servers hosted on-premises, with the ability to handle the activity of about 10,000 users. When the application suddenly grew in popularity, the existing IT system became insufficient, performance decreased, users started to experience downtime. So, you had to install new hardware, and a larger part of your IT staff is now dedicated to the maintenance of your company’s pool of servers.
Later, anticipating the Christmas consumption peak, you've expanded your IT estate once again. Now, you have to maintain a large server fleet that is not needed most of the time, only to guarantee a good user experience in the week after Christmas. In other words, you are spending a lot of money for resources that are only useful one week per year, but increases the maintenance costs during the whole year.
That’s where scalability, and cloud computing, come into play.
Scalability refers to the ability of an organization to dynamically access more computing resources (data storage, processing power) when more capacity is needed. Conversely, when demand is lower, the organization is able to decrease its IT resources.
Scalability is often associated with cloud computing, as many cloud pricing models allow organizations to pay only for the IT resources they actually use. To finish with our example, a company that experiences a peak in demand one week a year may pay for a large amount of resources that week, and consume a much smaller amount the rest of the year.On premises, organizations need to assume the highest resource requirements all time of the year.
We saw that cloud computing can be a great enabler to make your IT scalable and save costs. However, if scalability is one of your key goals when moving to the cloud, or modernizing your cloud estate, there are a few aspects to consider to make sure that your cloud architecture will actually be able to scale smoothly and bring the cost-effectiveness you want to achieve. That’s what we’ll explore in the next sections of this article.
Cloud providers are presenting their customers with several pricing options. We can distinguish 4 common pricing models:
With this model, one of the most common, users pay for compute resources (such as virtual machines) based on actual usage. This provides more flexibility as it does not involve upfront costs or long-term commitments. Customers are only paying for the resources they consume.
This model involves users committing to a predefined amount of resources for a fixed term (one year, for instance). This model suits predictable workloads with steady resource requirements, and is a good choice for organizations with stable and long-term computing needs. Organizations also pick this model as it comes with significant discounts compared to on-demand.
Volume discount pricing incentivizes customers to achieve cost savings by using larger quantities of resources. As users scale their usage, the per-unit cost decreases. This model can be a cost-effective approach for organizations with substantial computing needs.
Finally, spot pricing can be described as an auction-based system, where users bid on unused compute capacity. Customers can access these resources at significantly lower costs than on-demand pricing but risk losing access if others bid higher. However, not every application or workload can tolerate the limitations of spot pricing.
As you can see, the variety of pricing options offered by cloud providers is meant to address the diversity of situations among organizations. Some businesses move to the cloud to achieve cost savings. In some cases, the spot pricing model might be the best model for them. However, for businesses where application availability is crucial, this is definitely not a suitable approach.
It could be tempting to pick cheaper options, but for organizations willing to achieve scalability in cloud computing, that might not be the best approach. On-demand pricing, although more expensive, is the one that offers the highest flexibility: here, organizations pay exactly for the amount of resources they consume. While this often comes with higher expenses, it is the most convenient model when dealing with irregular computing resource needs and resource consumption spikes.
On-demand pricing models are not all the same. Some options allow users to pay for every minute of resource consumption, while other options are based on hour intervals. Here again, the best approach depends on the level of scalability you need to achieve. An organization with very volatile and unpredictable workloads might decide to pay for compute capacity by the second.
We discussed the importance of choosing the right pricing model to achieve scalability in cloud computing. Another key criterion is the way you are building your applications in the cloud. Migrating through a lift-and-shift approach is probably not enough to make scalability happen. Applications often need to be redesigned to experience optimal scalability in the cloud. We’ll discuss two relevant examples of cloud-native application design in this last section.
One common driver for improving the scalability of applications is to avoid failure when demand changes. To achieve that, you need to make the right architecture decisions. For instance, you can replicate your resources across different landing zones at the same provider. This way, the application will stay available even if the service is disrupted in one zone.
Relying on additional virtual machines is a good starting point, but scalability itself still needs to be managed. To automate the process, organizations typically use a technology such as Kubernetes (either self-managed or as a PaaS solution from the cloud provider). This is done to automate the launch of new virtual machines when the workload increases, and the installation of the application on these virtual machines.
Another availability enabler is load balancing: when the incoming network traffic is higher than usual, this traffic will be automatically distributed among different servers at the cloud vendor. This makes sure that no resource will be overloaded during traffic peaks.
Scalability goals have to be considered when designing the architecture of your applications. The Infrastructure-as-Code (IaC) approach, for example, can help companies ensure consistent and repeatable deployments with less errors, through automated, version-controlled scripts. IaC facilitates rapid scaling by allowing organizations to dynamically provision and modify resources, adapting to changing demands.
Avoiding a monolith architecture pattern and opting for independent, loosely coupled components is also key to have more flexibility when scaling your applications. Here, the use of containers (for instance via Docker) ensures that the runtime for the program is the same everywhere. It acts as a “unified deployment layer”.
Cloud transformation and modernization initiatives are successful when they are driven by clear goals and priorities. While some organizations move to the cloud in order to achieve significant cost savings, others want to benefit from the scalability offered by cloud computing. Defining your main goals - and sticking to them - is crucial, as it will help you make the right decisions at every stage of your cloud transformation project.
If scalability is the main reason for your move to the cloud, this must be reflected in your decisions regarding the cloud pricing model, but also in the way you will re-architect some of your applications, in order to make them more scalable and resilient. This can be a long process, especially for large-scale companies, but it pays off! If done well, cloud is a great enabler to scale your applications dynamically, and achieve better cost-efficiency.
Txture is the central software platform to accelerate your cloud transformation and modernization initiatives. It helps you discover your current IT landscape through efficient data collection, and assess the cloud readiness of your applications. Unlike other solutions, Txture takes the unique business, security, compliance and technical requirements of each business application into account. This maximizes the business benefit of the cloud migration by reducing transformation risk and saving costs.
In this 5 minutes video, our colleague Joshua gives you a complete overview of the platform’s capabilities to achieve your cloud transformation with speed and confidence.
Want to learn more about how we can help you speed up your cloud transformation? Reach out to us, we’ll be happy to answer any questions.