Ch1: Cloud Computing Figure 1 - The XaaS pyramid[iii]IaaS providers offer hardware and the bare minimum software for users to develop on e.g. virtual servers, hard disk space. Users have broad control over the services offered by IaaS providers as they are able to configure settings to a very large extent and they are free to implement and utilize any form of software and programming environment on top of the services. An example of an IaaS provider is Rackspace (see Figure 2). Figure 2- Rackspace is an IaaS that allows users to start up a server and operating system of their choice[iv] For services offered by PaaS providers, users have very little control over their software and programming environment. This is because PaaS providers implement a software layer over the hardware they offer, forcing users to work with the providers' software layer. This is not necessarily a bad thing as PaaS providers reduce the technical expertise needed for users to create their own web application. An example of a PaaS provider is Google App Engine (see Figure 3). One can make use of Google App Engine to host an application on the web and make use of the database and file storage services provided by Google App Engine to complement their application. However, As Google App Engine is a PaaS, only Java and Python can be used to code the application.