Recently I met with the application development team from one of my enterprise customers & had a interesting discussion around how their day to day tasks will change if the enterprise decides to adopt cloud for their applications and whether the enterprise should adopt IaaS or PaaS? In this post, I am summarizing the (30 minute) discussion I had with the team.
IaaS compared to PaaS has reached a higher level of maturity and adoption. Many IT teams I meet on a regular basis have a fairly good understanding of what IaaS has to offer.
PaaS on the other hand is still confusing to many teams - everyone has their own definition, so in this post PaaS is referring to a general purpose platform that allows the enterprise to host their applications (JAVA, .Net, PHP ...) in a managed platform that abstracts the underlying infrastructure from the application developers. Advantage of this level of abstraction is that application developers do not have to concern themselves with the nitty gitties of the infrastruture and other common application operations/management tasks. In other words, the value proposition for PaaS in one line is that "The application developers can focus on their applications rather than the common IT aspects"
Hosting in IaaS versus PaaS
IaaS model offers the raw material for your IT needs - Compute, Storage & Network. The enterprise needs to have the skills to put these components together to build the infrastructure for their applications. This model provides almost the same level of flexibility as the enterprise owned data center except that the bare metal and some of the core software is not in control of the enterprise IT. The enterpise IT teams need to have the skills and tools to manage the application infrastructure on the cloud (i.e., operational costs).
PaaS model abstracts the underlying infrastructure from the application, as a result the application developers and/or management staff do not need to setup or manage the infrastrcuture setup required for the aplication. This simplifies the task of development and management of the applications.
For the sake of example lets consider a JEE web application that is identified as a candidate for migration to the cloud. Its been determined that technically this application may be moved to IaaS or PaaS (almost all commerical offerings support JEE runtime). The following schematic depicts the typical activities needed for migration of the application to IaaS and PaaS.
Clearly there is much more work and skills needed for IaaS compared to PaaS. The decision regarding which model to use will depend on multiple factors, some of which are:
- Need for flexibility, visibility & control which obviously is better with IaaS
- Operational cost for the maintainance of the applications which is going to be higher for IaaS compared to the PaaS
- Upfront cost which may be higher in the case of IaaS
- Application changes required for migration to the cloud - may be needed for PaaS depending on the specific platform
The decision to migrate to PaaS or IaaS should be made by considering the current as well as the future functional & non-functional requirements of the application. There will be scenarios (e.g., complex distributed application) that will align well with the IaaS model and then there may be other other scenarios (e.g., typical web application) that may align better with the PaaS models.