Something that strikes me as amazing is the almost universally consistent lack of environments for developers. As development becomes progressively more N-Tier and as N grows the task of development is becoming intertwined with that of hardware logistics.
I was speaking to a leading figure in Sales for Dell in Europe yesterday at IIBN and she told me me that these days Dell offer services as often as just ‘metal’ because businesses are finding the pain of managing their tens of thousands of computers unbearable. She also told me that the number of servers being sold is increasing rapidly and that virtualization is one of their hottest selling points.
I’ve experienced situations where getting a website running has required 27 different boxes, of 22 different types, running 4 different operating systems and connected via maelstrom of routing policies and protocols. Given this massive complexity having a Dev, Qa and Staging environment was a tall order. One that often wasn’t filled.
So why the profusion? Some of the answers are the same old cliches: legacy, turn-over, haste, etc. but what I really find interesting is that often the process of deploying an environment is manual. In this day and age to have the release of your software done manually is unforgivable not to mention time consuming.
Many of the giants of software; EBay, Amazon and Google are good examples, have mastered the art of hardware logistics[pdf]. Giving them a massive amount of substrate upon which to deploy their software. And I call it substrate because they have all taken the step of homogenizing their hardware. This means that you neither smart networks nor stupid networks, you have the best of both worlds with simple networks.
Amazon is actually taking steps to offer their substrate building prowess as a service via the Elastic Compute Cloud which lets you grow and shrink the size of your cluster with single WebService call. Much like their S3 infinite storage solution EC2 (as its called) is, in my opinion, the shape of things to come. Positive words from a man who still hasn’t got his beta invite!
So are we going to end up with just one computer for all? No; but we should strive for simplicity: less types of box, less types of connection and more rapid deployment. Developers are an expensive resource to have idle and good developers dislike being idle resulting in the best ones leaving.