Among the three main categories of cloud computing services, Infrastructure-as-a-Service, or IaaS, can be considered the most basic and the most flexible. The IaaS cloud-computing model provides clients with the scalable hardware architecture they need to implement their own middleware and software on which to run their application. An IaaS provider delivers on-demand and scalable cloud infrastructure based on various operating systems, usually including Windows and Linux.
IaaS is ideal for users that want to implement their own software infrastructure and handle their own system administration, while not having to worry about housing, configuring or updating physical servers.
Customization: Since IaaS is just hardware and an operating system, the user is free to create and modify all aspects of the development environment and software architecture as they see fit.
Scalability: IaaS scales resources to meet demand as load fluctuates, while facilitating uninterrupted end-user experience.
Cost: The IaaS model allows the user to consume server resources on-demand, so they don’t have to buy more hardware during periods of increasing server load. An IaaS also eliminates the overhead cost of maintaining servers and updating operating systems.
More Work: Although you save money for the on-demand usage pricing with most IaaS solutions, and the hosting and physical maintenance is done for you, you still have to build, configure, and maintain your own middleware stack of development tools.
Definitions were taken from DZone (thank you guys)