Workload Patterns for cloud computing
Yesterday I was talking to one of our partners about cloud computing in general and more specific about Windows Azure . During the discussion I told them how I look at the workloads that are specifically suitable for running on a cloud platform. After I finished explaining and finally shut up the partner said: “That is a great way to look at applications or workloads and weather or not it makes sense to move them to the cloud! Do you have this in a whitepaper?”.
Eventually I found this blogpost it is also from a Microsoft employee. In my opinion this post is essential when you are thinking about cloud computing and what workloads make sense to migrate partly or entirely to the cloud.
This will be the first draft of that document. I’ll be working with the partner to draft this into a formal whitepaper. If you have an opinion about this please leave a comment or send me a mail so I can incorporate it in the document. So here we go!
Before we can talk about workloads ideally suited for cloud computing we need to define cloud computing. Right now there are a lot of definitions of cloud computing flying around and everybody tries to define cloud computing in such a way that it fits their business model.
If you talk to VMWare cloud computing is virtualization, for Cisco it is all about the network, Google will tell you search is cloud computing and Microsoft is talking about software plus services to emphasize that all cloud computing is driven by software.
We want to say something about cloud computing in general so we want a source that is more or less independent. I personally think that the cloud computing definition of Gartner is a great one.
“Gartner defines cloud computing as a style of computing where scalable and elastic IT-enabled capabilities are delivered as a service to external customers using Internet technologies.”*
Cloud computing is a deployment model that has certain advantages in elasticity, connectivity and business model. Other deployment models are on-premise installation or outsource/hosted model. The following workload patterns have the greatest benefits of these cloud platform characteristics.
Applications or workloads that have a relatively short period of activity and after they have produced a result can be switched of.
Batch processing, data crunching or calculations are typical activities of applications of this pattern. A real life example is a company called Riskmetrics.
This company runs Monte Carlo simulations for its customers. In stead of running these simulations in their own datacenter where the hardware is idle when they are not running a simulation they have build their application on a cloud platform. If there is work they start as many machines they need to perform the work in the time they have. They run the calculations and then switch them off again. They are only paying for these machines when they are actually doing work.
The obvious advantage for workloads with this pattern is that you don’t have to pay for hardware when it is sitting around idle. The other advantage is that you can scale a lot bigger than you would be able to in your own datacenter.
Bursting Predictable and Unpredictable
When you are running a successful web retail operation you probably have your peak demand during the holiday season. After a couple of years you will have a fairly good idea how much bigger the demand will be during this period than during the rest of the year. This can be up to 800% higher than any other day of the year.
What do you scale your infrastructure to? Of course to this peak demand because this is when the money is made. The downside of this is that the rest of the year 80% of your infrastructure is sitting idle taking up resources because this infrastructure has to be maintained.
This scenario is ideal for a cloud solution. We call it predictable bursting because you know when the peak demand will be. Come end of November the number of nodes running your infrastructure is increased to the required levels and mid January it is scaled down again. The resources required to maintain this infrastructure can now be used to build new features or add value to the platform.
The other bursting scenario is called unpredictable bursting. In these cases you don’t know when the peak demand will be. An example is a news site. They never know when the plane crash or terrorist attack will be. They do know that if that happens they require a lot more capacity.
A cloud platform allows you to scale your infrastructure when such an event happens.
Growing Fast or Scale cheap, Fail cheap
This is the scenario of the tech startup. Imagine a service that allows you in a very short message (say 140 characters) that allows people to know what they are doing or thinking. Suddenly your service becomes a great hit and the infrastructure you
are running it oncan’t cope. You are not able to scale your infrastructure to the demand and the service breaks when it is being most used.
The problem is that you never know if your service will be such a success. If the boys and girls at Twitter would have scaled for the demand that they are seeing now they would have never launched and their initial investment would be incredible high. So you want a platform that is able to scale fast and cheap but does not have the initial investment you would have if you were going to buy hardware.
This is exactly what a cloud platform can provide. You can scale your infrastructure very close to the actual load that is being used on the platform. If the application has been architected right this will keep the fail whale away without breaking the bank.
Connected applications
Another workload pattern I think has great benefits from running in the cloud are connected applications. The obvious reason is one of the characteristics Gartner attributes to cloud computing. “deliverd using internet technologies”. In other words most cloud platforms are located on the internet and are therefore easy to connect to from any other application or device that is connected to the internet.
There is a common knowledge in IT infrastructure which says:” If two systems need to communicate through organizational or network bounderies add a third system both can communicate to.” As an Example I would like to use Windows Live Messenger or Skype (whichever you prefer the pattern is the same). There are two clients running on a desktop. One running behind a corporate firewall and the other is running in a home network behind the home gateway. Think of the tasks you would have to achieve to setup a network connection between those two clients to exchange data (files, voice, video). The easier one is publishing an endpoint in the home gateway router and publishing it to the client. Now imagine the call to the corporate IT department: “Would you be so kind to open up the firewall to TCP port XYZ on my client?” So what do applications like Windows Live Messenger and Skype do? They add a third system. Both clients can hav outbound internet traffic so they connect to the third system. By setting up that connection the third system can patch them through so to say.
You can have your application connect to other applications (at your customer, business partner, affiliate network) using this pattern. The third system would be a cloud application.
Commodity workloads
The workloads described above are workloads of custom application that would be deployed to a platform as a service solution like Windows Azure, Amazon EC2 or Google App Engine. The final pattern isn’t really a pattern but I think that without it this article would not be complete. There are workloads that are so commonplace that migrating them to a cloud platform makes sense. E-mail is such a workload. There is nothing strategical about running your own E-mail platform so move it to the cloud. Buy it as a Service.
I think this is a useful yardstick when thinking about new IT projects. Cloud computing is here to stay but it is not the holy grail, neither the end to world hunger. It is a deployment model that has certain distinct advantages. Looking at these advantages there are 5 types of workloads that benefit most from migrating to a cloud platform. These are On,Off, Bursting, Growing Fast, Connected Applications and Commodity Workloads.
As I said at the beginning for me this is the starting point of more thinking in this direction so if you have an opinion about this please leave a comment.
*Gartner – Five Refining Attributes of Public and Private Cloud Computing – 5 May 2009
it helps me,easy to understand,thx
Thanks for the post. Can you please help me with as to which tools can I use to help me identify the pattern? If I am with the client who is not able to answer the pattern type, can I use some tools to find the same?
Really well explained. You made it so easy with examples.