Enough hype! Lets clear the air.
I am going to try and provide simple analogies that will hopefully help you make sense of the terminologies associated with Cloud technologies and make them ‘stick’.
The Cloud my friends, is nothing but the Internet. Different vendors set up the Infrastructure, Platform and Software and make them available to us from remote locations over the Internet so that we as consumers do not have to go through the process of installing all these on our own machines. All we need to do is
- Hook up to the Internet
- Start using the vendor specific services (for some of the services, one might need to register, log on etc etc.)
- Think Gmail !
Generally speaking, the Cloud model is based upon 3 different layers/stacks
- Infrastructure As A Service (IaaS) – Deals with hardware/basic infrastructure
- Platform As A Service (PaaS) – Facilitates tooling support required for development and deployment of ‘cloud’ based applications
- Software As A Service (SaaS) – A ready-to-consume’application’ available on-demand
My very own definition of the Cloud (not perfect.. but I tried !)
“The Cloud is composed of computing layers which are ‘inter dependent’ modules which support the notion of delivering software as an on-demand service (SaaS) which is propelled by rapid development+deployment services rendered by the PaaS layer which in turn feeds upon the IaaS layer to provide the basic infrastructure services such as virtualization, servers, network, storage, scalability etc”
Dissecting the Cloud
Infrastructure As A Service (IaaS)
Think of IaaS as Your Laptop/Desktop!
It has the following components
- Storage (hard disk)
- Networking capabilities (network card)
- Operating System (Windows, Linux, MacOSX… whatever)
A laptop provides basic ‘computing infrastructure’ to its consumer. IaaS setup operates on similar lines:
- Provides ‘resources’ as an on-demand service
- What kind of resources? Servers, storage, network and underlying operating system
- IaaS is meant for multiple users who leverage a single piece of hardware.
- Just like you can enhance the computing capacity of your laptop/desktop (by adding more RAM, additional physical storage etc) an IaaS setup can also be scaled to meet the demands of the consumers.
- Companies want to concentrate more on their core business and services rather than go through the hassles of setting up huge data centers and maintain them! IaaS to the rescue. . . .
I have to mention Amazon EC2 !
Platform As A Service (PaaS)
What do you need in order to ‘develop’ applications using your laptop/desktop? e.g. Java EE web applications
You need a basic ‘platform’ to be able to perform your activities
- IDE (Eclipse, NetBeans etc)
- Java EE runtime i.e. a Java EE Application Server
- A Database for persistence (Oracle DB etc)
This is not an exhaustive list, but I hope you get the idea. Now the important analogy – PaaS itself is not very different from this
A PaaS vendor/provider
- Delivers ‘software creation/deployment platform’ over the web
- Provides a homogeneous environment and tools to support the entire software development cycle from development to testing, hosting as well as maintaining applications
- Abstracts the underlying complexities from the end user by exposing interactive web interfaces and even CLI tools
- Based on Multi-Tenant architecture wherein multiple users make use of the platform concurrently with each user having a unique working environment of his own
Open Shift by RedHat is free and pretty awesome!
Eclipse Orion – this Cloud IDE is worth a watch (not exactly PaaS)
Software As A Service (SaaS)
Well up until now, you got a super cool computing machine (your infrastructure), you are armed with the latest development tools (your platform). What do you do? Build and deliver awesome software ! What else?
So you have made that dream web app. Now you want to be rich? Of course…. What would you do in order to deliver your awesome web application from your laptop to consumers over the Internet?
- Sign up fora domain
- Configure your web/front end servers
- Publish you app!
- You need to be careful about up time and availability of you application though.
- Check on your machine, servers etc
SaaS makes this a breeze (for a consumer and a developer.
- Consuming on demand services over the Internet – as an end user
- No hassles of installing software on your systems, servers – get online.. that’s it!
- Forget about patching and upgrading your software – that is a major relief!
- Delivering software solutions over the Internet – from a developer perspective
- Builds on the services delivered by the IaaS layers and sometimes the PaaS layer (depending upon whether or not the software is actually developed on the cloud)
- SaaS vendors come up with Web APIs for other applications and systems to be able to integrate seamlessly — think REST APIs
Let me make this easy on myself…. Salesforce . . . One of the biggest players in the SaaS arena. Enough said!
Alright then. I hope you have a reasonable idea of what the Cloud is…. This by no means was supposed to be a whitepaper on Cloud Computing or something. Just enough for you to get an idea and start digging deeper
Until next time. . .