The three major categories of cloud computing services are Software-as-a-Service (SaaS), Infrastructure-as-a-Service (IaaS) and Platform-as-a-Service (PaaS). The combined use of the three is sometimes called the SPI model (SaaS, PaaS, IaaS).
These categories are well-known and well-defined within the tech industry, but there are tons of related categories and subcategories of IaaS, PaaS, and SaaS, including Storage-as-a-Service (STaaS), Database-as-a-Service (DaaS), Communications-as-a-Service (CaaS), Network-as- a-Service (NaaS), Monitoring-as-a-Service (MaaS) and, of course, Backend-as-a-Service (BaaS or MBaaS).
PaaS and IaaS are similar in many ways but there are major differences between them. IaaS essentially provides raw computing resources while PaaS provides users with software, Virtual Machines (VMs) and usually handles all aspects of system administration for the user. While IaaS and PaaS both provide the user with a cost-saving, scalable cloud infrastructure, PaaS provides additional middleware utilities on top of the common IaaS services. The PaaS model can do everything the IaaS model can do, with the added benefit of managing underlying resources, application frameworks, and tools.
Pay special attention to the parts indicating what “you manage” and “others manage” (3rd party) in the following graphics to understand the level of abstraction of each kind of solution:
As a development team, as you move left to right in the graphic above you loose flexibility but gain in development speed. The more flexibility you need, the more overhead you have to take on to build out the necessary infrastructure on top of the lower level services:
IaaS Examples: Amazon EC2, Google Compute Engine (GCE), Joyent
Common IaaS Use-Case: extends current data center infrastructure for temporary workloads
PaaS Examples: AWS Elastic Beanstalk, Microsoft Azure, Heroku, Force.com, Google App Engine, Apache Stratos
Common PaaS Use-Case: provides you with proven computing platforms/stack which typically includes operating system, programming language execution environment, database, web server etc
SaaS Examples: Google Apps
Common SaaS Use-Case: use cases where you don’t want to worry about the installation, setup and running of the application and neither the management of infrastructure or platforms.
Note: most providers now offer solution un multiple levels (IaaS, PaaS, SaaS) so they should not be considered as exclusive segment providers.
Images and definitions were taken from DZone (thank you guys)