Thursday, July 5, 2012

About Cloud Computing

Let me express my understanding of (computing) cloud, that is so much and long talked about. I've come to this understanding today, while talking to my wife - she's great listener of my thoughts like this. Well, I like to explain things to her. I understand them better then :)

First, as to me, the term (computing) cloud, is over used. Mostly everybody uses it for mostly every internet service. That is not absolutely wrong. Because cloud picture is widely and long used to depict internet. Ok, but modern (computing) cloud, must be something else.

Second, (computing) cloud exists on different (3) levels, Infrastructure, Platform and Softwre, all used as  a Service. Iaas, PaaS and Saas for short. What it means?

I think Amazon if not the first, but definitely is the most noticeable provider of IaaS with their Elastic Computing Cloud (EC2). I base on them my understanding. I guess the main "cloudy" thing of their service is elasticity. So, I take it as base. Computing cloud on infrastructure level gives its users feeling of endless computing capacities, by number of smaller computer joined together, in cluster, like into cloud. You get virtually computer. And you can get possible more of them, on demand, interconnected. That's cloud on infrastructure level. That's IaaS.

Further, Platform as a Service, or cloud platform, must be something very similar. Instead of computer, you get application platform. Like Heroku. You can not any longer do everything what you could do on your own computer. Instead you get very strict rules, or predefined environment, or set of them. You can only host your (web) application, written in limited number of programming languages, using limited number of development frameworks and also limited access to peripheral devices. Like you may not be allowed to write on disk or open sockets. But what you get? Virtually endless horizontal extensibility. You app can serve as many requests per second as you would like to pay, but without any efforts to scale. Increase your computing power and cloud platform will do the rest for you. It will copy your application(s) to new computers and balance load between them. That's PaaS.

Finally, SaaS. That was most tricky for me. And I've tired once already to think about it in context of multi-tenancy. So, now, looking from bottom up, I think, it must be more clear what differs Software as a Service from software/web service. As to me, software should use term 'cloud' if and only if it allows you to serve your users needs, not yours. Imagine, you get virtually e-shop, and your friend uses the same e-shop software service. But you both have your own end-user interface, your own products and your own customers. And what's important, when you get more customers, you ask your e-shop software service provider to increase computing power, and that's all you need to grow. So, at Software level, you can not develop your own applicaiton, but you can use what's offered for your business. Some other example - online surveys solutions. Think about it.

Cloud software on Cloud platform in (computing) Cloud - 4Cast?


No comments: