Infrastructure as a Service (IaaS)
Infrastructure as a Service (IaaS) is when a provider spins up computers for you on demand with certain predefined virtual hardware configurations. It is mainly targeted at system administrators and DevOps staff who used to rack and stack hardware. There are varied providers in this space such Amazon EC2 or Google Compute Engine in the public cloud and OpenStack for private clouds. The idea is that you specify the amount of RAM, CPU, and disk space you want in your “machine” and the provider spins it up for you in a matter of minutes.
IaaS alleviates having to go through a long procurement process or fixed investment to obtain computers for your work. The drawback to this solution is that you are still responsible for installing and maintaining the operating system and server packages, configuring the network, and doing all the basic system administration. You still have to do sysadmin work rather than spending your time writing code. On the flip side you have more flexibility in determining your server and network architecture.
Software as a Service (SaaS)
Software as a Service (SaaS) requires the least amount of maintenance and administration for the people using it. With SaaS you just sign up for the service and start using it. You may be able to make some customizations, but you’re limited to what the service provider allows you to do. Common examples of SaaS are Gmail, Salesforce, and QuickBooks Online. While these services are useful because you can start working right away with little to configure or deploy, they are of limited use to programmers. They offer the least amount of customization of the three cloud services mentioned here.
Platform as a Service (PaaS)
Platform as a Service (PaaS) is the middle ground between IaaS and SaaS. It is primarily targeted at application developers and programmers. With PaaS, a few commands (which could be in a web console) trigger the platform to spin up all the “server” pieces you need to run your application. For example, a common server infrastructure is a web application with a database. To get all this spun up, you issue one command and OpenShift does all the networking and server installs, and creates a Git repository for you. The OpenShift administrators will keep the operating system up-to-date, manage the network, and do all the sys admin work—leaving the developer to focus on writing code.