I’ll say from the outset that this post is not an attack against Amazon EC2, nor against IaaS in general. It is merely a consideration of use cases, and end games. Specifically, the Enterprise use case for EC2. I personally use EC2, and for my use case it’s bloody great. For startups, it must be a god send. Same for more mature businesses who are built around 1 or 2 internally developed applications, especially if they are web related. It must be a massive boon for students. But for the Enterprise? No.
Let’s start by looking at some application level requirements to get the most from EC2. First, your application needs to be designed for failure – that means scaling out rather than up, loose coupling of components, and statelessness of the endpoint. Second, you don’t want to run an EBS backed instance (and cop all the IO charges), you want to run the operating system on an S3 backed AMI – again that means statelessness within the OS, and complete automation on this layer from instance creation to destruction. Third, you want management and control over the base image itself to ensure your instances come up pre-patched, secure and ready for action.
The problem is very few Enterprise applications are built this way, operating systems as deployed in the Enterprise certainly are not. Why? Are all Enterprise IT employees stupid? All too often the blame for this is misdirected – it’s not the fault of the application owners, the in-house developers, nor the IT infrastructure people. Ladies and Gentlemen, I introduce you to… the accountants!