Over the last few months I’ve been asked more and more this question: “What is Cloud Computing?” It seems the interest in cloud computing is a lot higher in 2011 when compared to last year. So, I decided to put some of my thoughts down in a series of posts and explain what I think cloud computing is all about and how you can take advantage of it. I’m very heavily involved in cloud computing and see cloud computing as the way to go despite a few hick-ups you might hear in the news.
First, let me explain my background in cloud computing. I started to explore cloud computing capabilities back in 2006 when Amazon first announced their set of Amazon Web Services (AWS). Later on, companies such as Google and Microsoft followed. The first time I heard about Amazon’s Simple Storage Service (S3), I was so excited about the possibilities. I was also excited about the cost. It is extremely inexpensive to start developing powerful cloud services and solutions.
As time went by, I explored most of Amazon’s AWS services with amazement as they were updated and new ones were released. I also briefly dabbled with Microsoft’s Azure and Google’s services; but, to this day, it is my strong believe that Amazon is the clear leader in providing the best cloud services and infrastructure in the market today. In fact, I go as far as to say that Amazon is much further ahead of Microsoft and Google combined. Amazon is the clear leader if you develop on a Microsoft stack or LAMP stack. Either way, I will try to explain a little more by what I mean in the following posts.
So, what is Cloud Computing then? From an architecture point of view, I would sum up cloud computing this way:
- A cloud computing solution is partitioned logically end-to-end
- A cloud computing solution offers an infinite storage capacity
- A cloud computing solution offers an infinite computing capacity
- A cloud computing solution can handle an infinite number of users at the same time
- A cloud computing solution is always available 24/7
- A cloud computing solution is available anywhere in the world with low latency
- And yes, a cloud computing solution offers certain tasks to be completed when connections are down
- A cloud computing solution offers multiple ways to access the information such as different devices and user interfaces (platform independent on the consuming side)
- A cloud computing solution expands and contracts with resources as demand increases or decreases
- A cloud computing solution offers very fast and native execution times on the user interfaces to provide the best user experience
- A cloud computing solution offers automatic backup and recovery options for consumers
These points above should be available in a modern cloud computing solution. Consider the points above the goals of a great cloud computing solution. The planning and designing of a cloud computing architecture makes the above assumptions. For example, a cloud computing solution acts like it has an infinite storage capacity available.
I’m coining the term “Cloud Computing Partitioning Pattern (CCPP)” and will explain next time what I mean by being able to partition a cloud computing solution in order to provide fast and successful operations from the time a request is received through a domain model all the way to persistence and back.
Until next time.