Infrastructure as a Service might be considered as a riskfree service model for cloud computing. The vendor lock-in is limited as customers can move the virtual machine relatively easy to and from different clouds.
However, IaaS has quite a few pitfalls organizations considering IaaS should be aware of. These are:
- business case: compare apples to oranges
- no benefit of cloud advantages
- SLA not supporting single instance VM
- complexity of infrastructure
- lack of features
- required skills to manage infrastruture
- workarounds combining PaaS with IaaS
A business case for cloud is often too optimistic. People tend to compare apples to oranges. They forget that instances in cloud can be limited in performance. For example to have the required number of IOPS you might have to buy an overdimensioned, thus more expensive, instance than the business case calculated. Also the large sized VM’s with lots of memory and cores are often more expensive than on-premises. Mind on-premises instanced offer far better control over performance as there are no noisy-neighbors.
Cloud offers scale. Applications are able to handle any load because there is no restriction in the available compute, networking and storage resources. However, your application must be able to scale. Many legacy enterprise applications are not able to do horizontal scaling. Typically applications which are moved to IaaS are not able to scale horizontal (more instances) ! And not all cloud providers support vertical scaling (increase hardware spec) of an instance. So great you are running your applications in IaaS but scale might not be possible.
And this might hurt the business case.
To make a fair compare in on-premises versus cloud, the availability of the virtual machine should be equal. Many cloud providers do not offer features as vMotion/Live Migration. Some cloud vendors do not offer a SLA for single instance virtual machines. To have the same availability in cloud, you might have to use two instances where on-premises just one instance offers the required availability. This hurst the business case as well.
IaaS means you still have to design the virtual datacenter in the cloud. Think about designing network, storage and security. You still need capacity management, monitoring and so on. To implement this will take a lot of time, resources and requires skills. Likely the current IT-department lacks the skills to manage the cloud. Time and money needs to be spent on education!
For large enterprises which use micro-segmentation of applications cloud might have not the sufficient features. Azure Network Security Groups for example are limited in features, control, and has limits in number of NSG’s per subscription. NSG’s can become very difficult to manage without automation. Software defined networking on Azure is not yet available so organizations need to develop their own automation tools.
Cloud requires different culture and different skills. This is especially the case for IaaS in which still a lot of management is done by the customer. Make sure the IT-department is trained on cloud and make sure there are enough people which can help making the transition to cloud. You really do not want a single point of knowledge in your organization as the transistion will stall. A single point of knowledge and the holiday season might stall your cloud migration project for weeks.
Some organizations want to mix PaaS and IaaS. For example run Azure websites in PaaS and the database tier in IaaS. In Azur that can result in network issues. Some SaaS and PaaS based services in Azure use an older network (VNET 1) while IaaS deployed using Azure Resource Manager uses VNET 2. The connection between VNET 1 and VNET 2 can give performance and feature related issues.
Another example is using SQL as a Service in Azure. The SQL Database service can be cheaper than running SQL server in your IaaS instance. However there can be network issues.
Do your homework. Learn about cloud, make a proper business case!