12/25/2012

Dive into the Cloud: brief technology introduction


Cloud Computing is one of the most speculated terms in IT industry last couple of years. We call "cloud" lots of things, sometimes absolutely different. We're starting the series of posts, dedicated to large set of technologies somehow related to Cloud Computing. We start our journey from the very beginning: let's define cloud and understand what does it mean.

Historical excursus

Cloud sounds like something very new. But history tends to be cyclic: if something is happening there is probability that it was already happening before. Before we start, let's get back in time and see if cloud is really something new, or it is just something very old and known. We will travel in time for more than hundred years, to 1882. This year Thomas Edison, one of the most famous inventors of the 19th century, launched Edison Electric Light Station - first ever public electric power plant. You might be wondering, how does it related to Cloud Computing? Well, let's take a look how people used electricity before first power plants were launched. 
Thomas Edison
It was quite a big challenge to have electric power at that time. If you need electricity in 19th century you have to buy steam-powered electricity generator. You also have to buy coal for it. And don't forget to hire someone to feed it with coal and repair the generator if it is broken. And yeah, if it is broken - you just don't have electricity at all. And what is really awkward: you have to find place for it and then suffer from it's noise and stink. Sounds like not a very nice perspective, right? 
And here comes Edison. His company offered people to pay for electricity, produced somewhere far away from their houses and delivered to them via wires. There is no coal. There is no workers. Finally, there is no stink and noise. We could only imagine how those victorian gentlemen were standing in queues shouting "Sir, could you please take my money?". Nowadays, we would say that it was massive win of Edison's startup. 
If you compare Cloud Computing with traditional in-house IT infrastructure you will probably find out that computing power is very similar to electricity. With traditional infrastructure you have to buy servers. You also have to pay for electricity. You have to hire system administrator. Nothing works if server is broken. Finally, server room is very noisy place. The only difference: servers don't stink. Usually. In case you use clouds you don't care about all of these problems. You just pay money and service provider does all the job for you. 

Definition

Cloud Computing is quite a fuzzy term. Lots of people mean very different things when they talk about cloud technologies. One might be wondering, why does it happen? It is like in the ancient story about blind men and an elephant:
Once an elephant came to a small town.  People had read and heard of elephants but no one in the town had ever seen one.  Thus, a huge crowd gathered around the elephant, and it was an occasion for great fun, especially for the children.  Five blind men also lived in that town, and consequently,  they also heard about the elephant.  They had never seen an elephant before, and were eager to find out about elephant.
Then, someone suggested that they could go and feel the elephant with their hands.  They could then get an idea of what an  elephant looked like. The five blind men went to the center of the town where all the people made room for them to touch  the elephant.
Later on, they sat down and began to discuss their experiences.  One blind man, who had touched the trunk of the elephant, said that the elephant must be like a thick tree branch.  Another who touched the tail said the elephant probably looked like a snake or rope.  The third man, who  touched the leg, said the shape of the elephant must be like a pillar.  The fourth man, who touched the ear, said that the elephant must be like a huge fan; while the fifth, who touched  the side, said it must be like a wall.

They sat for hours and  argued, each one was sure that his view was correct.  Obviously, they were all correct from their own point of view, but no one was quite willing to listen to the others.  Finally, they decided to go to the wise man of the village and ask him who was correct.  The wise man said, “Each one of you is correct; and each one of you is wrong.   Because each one of you had only touched a part of the elephant’s body.  Thus you only have a partial view of the animal.  If you put your partial views together, you will get an idea of what an elephant looks like.”
The moral of the story is that each one of us sees things exclusively within one’s point of view.  We should also try to understand other people’s points of view.  This will enable us to get a proper perspective on different  situations and events.
What can we learn from this ancient story? One's understanding of something is highly dependent on theirs perception of the thing. Those people who use SaaS say that Cloud is SaaS. Those who use VMware products say that Cloud is Virtualization. Those who use Apple products say that Cloud is synchronization service for their mobile devices. All of them are right. Cloud could be very different. But we need some kind of definition just to be on the same page when we talk about it. There are several of them, but here at ELEKS we usually use only one, called OSSM:


  • On-demand: resource is already setup and ready to be deployed
  • Self-service: customer chooses what they want, when they want it
  • Scalable: customer can choose how much they want and ramp up if necessary
  • Measurable: there’s metering/reporting so you know you are getting what you pay for

You can use mnemonic phrase "Cloud is OSSM" (read it like 'awesome') to remember.
Let's try to apply it to several popular "clouds":
1. Amazon EC2. When you ask about new virtual machine it is ready to be deployed. It is completely self-service. You can choose how many instances do you want. And of course there are lots of reporting that allows you to measure usage. Passed.
2. Dropbox. When you ask about additional storage it is ready to be allocated for you. You can do it by your own. You can buy more space in case you want it. And you can see how much space do you really use. Passed.
3. Virtual server farm operated by your IT staff. If they have enough servers they are ready to deploy your VM on-demand. Usually you can't allocate new VM by yourself, you have to ask your IT guys to do it. It could be scalable, but usually it is not measurable: you don't have access to list of all your VMs and don't understand how they are used. Failed.

Basic vocabulary

There are few buzzwords that are usually used within same context with the cloud. We need to clarify them before we proceed to next topics about the cloud. 

Service models

SaaS. PaaS. IaaS. [Software|Platform|Infrastructure]-as-a-Service. What does it mean? What is a cloud and what is not? Well, technically you can build any of these in way it wouldn't be OSSM. But I wouldn't recommend you to do it.
Let's take a look at IT infrastructure. We can imagine it as technology stack with network layer at the bottom and applications at the top. Difference between traditional IT, IaaS, PaaS and SaaS is in management responsibilities between you and your vendor:

In traditional IT you manage everything, starting with network and finishing with apps. When you use some IaaS cloud service (think Amazon EC2) vendor does all hardware management for you. But you are still responsible for all software layers: operating system, database, frameworks, runtimes etc. PaaS is higher level option where vendor provides you with fully configured platform that runs your applications (usually it means you have to adtopt your apps somehow, but cost of adoption usually is not so big). SaaS is top-level service option: vendor manages all components of your IT stack. People usually tend to compare all three models, but we won't do it. All three models are useful, they just have different goals and user audience. 

Basically, IaaS is an option for system administrators (or operations team) who don't want to deal with hardware. With IaaS they can just create virtual infrastructure, programmatically configure it and have fun. PaaS is an option for software engineers that don't want to deal with system administrators. PaaS allows them to deploy their apps to abstract platform that incapsulates all the stuff, related to hardware, configuration and other things. And, finally, SaaS is cloud for end-users: they just got their software working and ready to use, without any involvement of IT stuff or developers. 

Hosting models

Another kind of buzzword usually used with the cloud is hosting models. People talk about public, private and hybrid clouds. What does it mean? 

Public cloud is a cloud infrastructure made available to the general public or a large industry group and owned by an organization selling cloud services. Private cloud is cloud infrastructure operated solely for an organization. It may be managed by the organization or a third party and may exist on premise or off premise. And finally, hybrid cloud is any combination of private and public clouds working together. Very simple, right?

Conclusions

Cloud computing is one of the most interesting areas of IT nowadays. Cloud market is growing very fast and producing new opportunities for businesses one by one.
Electric power analogy is very nice for better understanding of the future of the cloud computing. Almost no one have their own power generators nowadays. Same thing will happen with computing once: people will have thin terminals (e.g. mobile devices) that will be used for accessing massive computing facilities in the cloud.
Using OSSM definition you can check whether service is really cloud or you are victim of aggressive marketing that attach cloud label to anything in order to sell it. You can better understand key properties of cloud services when you build them.
Different service models allow you to manage only those parts of your IT stack you want to manage. With public, private and hybrid clouds you can share infrastructure with other people, own it completely or use some combination of the above.
See you next time. Stay tuned!

4 comments:

  1. Excellent article!

    ReplyDelete
  2. This blog provide very interesting information on Cloud Computing. According these days this information is very beneficial and useful for everyone.Thanks for sharing this great information with us.

    ReplyDelete
  3. Cloud computing is empowering, as anyone in any part of world with internet connection and a credit card can run and manage applications in the state of the art global datacenters; companies leveraging cloud will be able to innovate cheaper and faster.
    -------------------------------
    Aaron

    ReplyDelete

Note: Only a member of this blog may post a comment.