When designing architecture on a cloud platform it’s vital to understand the workload. Having a good understanding of the resources you require will mean greater efficiency and less waste. Just because the cloud is ubiquitous and easy to use doesn’t mean it’s free – so wasted cloud resources cost money!
To avoid wasted resource and its associated cost, it’s essential to build a solution that’s elastic in nature and to operate using a ‘just in time’ provisioning model. This enables the platform to ‘self-provide’ additional capacity to meet demand with no human input. Deploying this model requires an understanding of the resources the platform will consume with minimal user load (at idle). We often rely on vendor guidelines for usage when we deploy on-premise solutions, and add a bit of contingency for spikes in demand. The problem with this architecture model on a cloud platform results in large amounts of underutilised resource, all adding to the monthly bill. Therefore, we have to look at such solutions in a different light: instead of looking at how much resource might be needed, we need to ask: “how little resource can I get away with provisioning and still have a functional platform fit for purpose?” We also have to decouple the application into logical building blocks so that layers within the solution can scale independently and in a granular fashion. We may find that in some solutions the web layer will be elastic, but the data layer perhaps less so, so scaling the web layer should happen independently to the data layer.
Once you understand how to build solutions in this manner, you’ll be able to extract the most from cloud technologies. I expect that most architects will be cautious to begin with, but as confidence builds, we will be able to scale our applications up and down and really push resource utilisation.
And remember, all of this is necessary because ‘cloud elasticity is a business requirement, not a technical requirement.’ This is one of the best quotes I heard at the Cloud Expo this year, and explains why we have to build cloud solutions in a fundamentally different way to on-premise solutions!