A cloud service model defines what type of service the cloud provides to users.
Infrastructure as a Service (IaaS)
IaaS clouds provide access to collections of virtualized computer hardware resources, including machines, network, and storage. With IaaS, users assemble their own virtual cluster on which they are responsible for installing, maintaining, and executing their own software stack. The most popular example is Amazon Web Services (AWS).
With IaaS, users are provided with raw compute resources which are typically virtual machines, including CPU, memory, storage, and network resources as well as the operating system. The IaaS user manages and controls everything except the underlying hardware and network resources.
Platform as a Service (PaaS)
PaaS-style clouds provide access to a programming or runtime environment with scalable compute and data structures embedded in it. With PaaS, users develop and execute their own applications within an environment offered by the service provider. Popular examples include Microsoft Azure and Google App Engine.
With PaaS, a software development environment is delivered to users with software development tools and the necessary CPU, memory, storage, and network resources. Users are limited to the languages and tools provided by the PaaS provider and application portability is not guaranteed.
Software as a Service (SaaS)
SaaS-style clouds deliver access to collections of software application programs. SaaS providers offer users access to specific application programs controlled and executed on the provider's infrastructure. Popular examples include Salesforce, DropBox, and Workday.
With SaaS, users have no control of the application infrastructure and do not have complete application management or control. The SaaS provider maintains the application and user data as well as provides the storage and/or backup. SaaS is a simple and quick way to implement applications.
