Punter Vicky
Punter Vicky

Reputation: 16992

Cloud Computing Terminology - IaaS , PaaS & SaaS

I went over a number of questions in Stackoverflow & on the web , which were very very useful. I had few questions on what I've read so far with regards to IaaS , PaaS & SaaS. However I have a lot of questions which may be very naive as I haven't seen any of these in action.

1) Is PaaS equivalent of a development environment where a software is developed / customized as opposed to IaaS which is an execution environment to run the developed the software (could be any env test or production)?

2) In case of PaaS , I saw apprenda as an example. As part of Apprenda , I saw .net , Java , IIS & SQL Server listed as part of platform. Does this mean that instead of having to install all these on my local machine or development box , I get to have a sort of remote machine where all the development tools are installed and I just have to go and program whatever I want to?

3) If I have not subscribed to IaaS for instance , how can I run the software developed using the platform that is exposed as a service?

4) I also read that PaaS can either be public or private (within company's firewall). If it is private , will the provider of PaaS basically set of up the platform for development on my company's infrastructure?

5) Can any website that provides be a capability to login be termed as SaaS? Eg: GMAIL , Yahoo Mail , Facebook etc.

6) Can Google Drive , Apple iCloud etc be termed as SaaS?

Upvotes: 3

Views: 1447

Answers (3)

Irwin
Irwin

Reputation: 12819

The NIST definition of Cloud Services in general is a great place to start when looking for answers. It gives the 5 characteristics of Cloud Services:

  • Broad Network Access
  • On-demand Self Service
  • Resource Pooling
  • Rapid Elasticity
  • Measured service

And then talks about service models, which are SaaS, PaaS and IaaS. Simply running your app in the cloud is not sufficient to say it's SaaS. So, it's not just apps being targeted at non-technical users, it's apps that cover those characteristics. A sub-point to resource pooling above is providing some sort of multi-tenanted capability when delivering the solution to users.

1) Is PaaS equivalent of a development environment where a software is developed / customized as opposed to IaaS which is an execution environment to run the developed the software (could be any env test or production)?

A PaaS solution does not have to be a development environment. It can provide the resource for some software being developed, without the developer needing to provision all the underlying facilities to enable the delivery of that resource. Eg, SQL Azure is a PaaS that lets developers have access to a relational DB service. The developer can write and invoke queries against it, without having to stand up SQL Server instances themselves.

2) In case of PaaS , I saw apprenda as an example. As part of Apprenda , I saw .net , Java , IIS & SQL Server listed as part of platform. Does this mean that instead of having to install all these on my local machine or development box , I get to have a sort of remote machine where all the development tools are installed and I just have to go and program whatever I want to? It should mean that you have access to the remote resources that your development tools can connect to and manage. The server (say SQL server) is not the same as the tool you use to access it, say SQL Server Management studio.

3) If I have not subscribed to IaaS for instance , how can I run the software developed using the platform that is exposed as a service?

You can't.

4) I also read that PaaS can either be public or private (within company's firewall). If it is private , will the provider of PaaS basically set of up the platform for development on my company's infrastructure? A private PaaS means that a company has setup private infrastructure to allow developers to use a resources that are part of the architecture of a solution that do not need to be managed by the developers themselves.

5) Can any website that provides be a capability to login be termed as SaaS? Eg: GMAIL , Yahoo Mail , Facebook etc.

No, not according to the NIST definition. Providing user login is not the same as enabling multi-tenancy. Simply put, if the app enables companies/teams with groups of users to use it, it's moving towards SaaS. So, think solutions like Slack, Gitter & Freshbooks.

6) Can Google Drive , Apple iCloud etc be termed as SaaS? Google Drive as part of Google Apps for Business, yes. Until you start seeing, "iCloud for business", no.

Upvotes: 0

huaminhluan
huaminhluan

Reputation: 851

I try to provide simpler answer and mapping with Azure deployment model

SaaS: Software as a service.

  • It's simplest, easiest, fastest method to host your web app/service into cloud.
  • Your web will be deployed automatically into some VMs and autoscale when needed.
  • You don't need to care about the VMs. Cloud provider will maintain them.
  • SaaS in Azure: Azure App Services (or Web App/Websites).

PaaS: Plafform as a service.

  • Cloud provider will create the pre-configured VMs which install all prerequisites (Ex: Windows Server 2012 with .Net 4.5 and IIS installed). These VMs will autoload your sites/apps when it's completely spin-off.
  • PaaS almost identical to SaaS except it allows you can remote desktop connect to the VMs, do some configuration tasks on there such as run custom startup scripts...
  • PaaS in Azure: Azure Cloud Services. Azure provides 2 kind of preconfigured VMs. They are Web Roles if you need host the website and Worker Roles if you need run background process.

IaaS: Infrastructure as a service.

  • Cloud provider will provide you dedicated VMs so you have full control to do any customization you want (you can customize the OS to the services and software...). It just like the VMs on-premises.
  • It's suitable if your app need to do a lot of customizations on the hosting environments to run.
  • IaaS in Azure: Azure Virtual Machines

Upvotes: 1

koma
koma

Reputation: 6566

PAAS : Platform as a Service

  • You don't care about the underlying hardware or OS.
  • You only care about your code, the platform takes care of the rest
  • Scaling is done for you
  • You have to adhere to some restrictions imposed by the platform
  • Pay for what you use (more traffick, storage used -> higher bill)
  • examples are Google AppEngine, Heroku, AWS Elastic Beanstalk

IAAS : Infrasctructure as a Service

  • You rent infrastructure where you choose the amount of memory, CPU, disk size, OS, ...
  • You setup the runtime environment will full choice from NodeJs, Redis or LAMP stack or any flavor you can think of.
  • You are responsible for configuring the rented infrastructure for high availability and scaling out
  • More freedom but more configuration (devops)
  • Pay for what you allocate (You setup your machines and choose your infrastructure beforehand)
  • examples are Google Compute Engine, Amazon EC2

But the world isn't that black and white. PaaS and IaaS grow towards each other. For example AppEngine managed VMS give you more freedom in choosing your underlying OS while still in a PaaS environment. And Google Autoscaler or Kubernetes brings managing your infrastructure to a more declarative level.

Finally SaaS products are oriented towards non-technical end users. So Apple iCloud, Google Drive, Gmail, Yahoo webmail are examples of SaaS.

Upvotes: 4

Related Questions