There is plenty of information to understand when it comes to moving over to the cloud. There are key concepts that focus on the big picture then there are key concepts that are application-specific. In part 1, I went over some key concepts from the big picture perspective. In this post, I want to zoom in and focus on some key concepts for an application.
High Availability
High availability means keeping your entire solution running expectedly even when issues may occur. This shouldn’t be much of a concern for you on the cloud services side as they most likely have features built in to mitigate issues. Where you’ll need to be concerned with is your own application. If a region is down, would your application still be available for your customers?
Often when it comes to a cloud-based solution, your application will need to be running on more than one region to have high availability. As long as one instance of your application is running your application is available to your customers.
Scalability
Scalability is the ability to increase the instance count or size of existing resources. This is an area where the cloud really shines in comparison to running your own servers. You can on-demand increase or decrease the instance count to meet your needs; this is known as scaling out (increase) or in (decrease).
You also have the flexibility to increase or decrease the existing resources like CPU and memory; this is known as scaling up (increase) or down (decrease).
When it comes to scaling, it is important to take into account that it can be disruptive. Scaling out or in is non-disruptive as long as your application is stateless. While scaling up or down is always disruptive since the different hardware is swapped behind the scene.
Elasticity
Elasticity is the ability to scale resources based on fluctuations in traffic, load, or resource workload. Think of elasticity like a rubber band, it can stretch and shrink back to the original size. This process of scaling can be manual or automatic. You can usually define some sort of thresholds. The best part of elastic scaling is that you only pay for what you use, so if you only need more resources at peak hours, you’ll only be charged extra for that time.
Service Level Agreement
A service level agreement (SLA) defines the level of service you should expect from a cloud service provider. Since your application’s infrastructure will depend on the cloud service provider, it is important to understand what level of service you’ll receive. Depending on the level of service the resolution to resolving any issues can vary greatly. This is an area where it is really important to get right as it can make the difference between your services being down for a few hours or days.
I hope this post was helpful to you. If you found this post helpful, share it with others so they can benefit too.
What was your experience like when working with the cloud for the first time?
To get in touch, follow me on Twitter, leave a comment, or send me an email at steven@brightdevelopers.com.
Pingback: Key Concepts to Understand When Moving Over to the Cloud - Part 1 - bright developers