I can haz environments? Woes of a web warrior 5
This blog post is more than 4 years old, so the content may be out of date.
So, you want a new website? What do you think the odds are of getting a site that you're happy with…a near certainty? 1 in 2? 1 in 6? I can't say that I have all the answers, but I do have some stories to tell - and I hope these tales will help you beat the odds.
So, why did I write this series? I'll admit it is partly a rant, and partly a sales gimmick…On the one hand these tales illustrate some of the risks of building websites. On the other hand, I am a busy guy, I can't help everyone, and I do like to see websites built right, even when I'm not involved. After all, I never know if I might end up using them! Whether you're working with me or not, I hope these tales will help you avoid some of the pitfalls that await even the wary.
- "We know best"
- If it's worth doing once, it's worth doing again and again and again
- Agility is the answer
- "The Grid"
- I can haz environments?
I can haz environments?
A multi-million pound project…a team of business analysts…teams of on-shore and off-shore developers…a separate test team…you'd think that of all projects, this would be well-planned.
When it comes to developer environments, there are a few different approaches. You can use a single "developer environment" that all the developers work on, but this only works for the smallest of teams and projects. Scaling up from this, it's really a choice between hosted dev VMs, or local dev environments (whether VMs, WAMP/XAMP/MAMP, etc). Local dev environments require a reasonably powerful computer, and that each developer can set up and maintain a local dev environment (of whatever flavour happens to be chosen).
Local development environments are complex to set up. Add in dozens of integration points, a number of additional systems (varnish, memcache, mail systems, a message queue, test systems) and you've got something approaching the limits of even expert developers. So how do most teams handle this? Virtualisation. Tools such as puppet or chef to provision and configure the machines. All the developers need to do is connect.
So in week 1 of the project, when I get 4 developers joining my team, how is it that I then find out that their laptops aren't powerful enough to run even the smallest of VMs, and that we don't have any resources to get hosted developer environments? Well, I came up with a quick solution…go out, buy a server, stick it in a rack, install VMWare's ESXi, launch a bunch of VMs. Total cost, maybe £5,000 for the server, and another £5,000 for a year's colo. But no. Corporate policy dictates otherwise. After 3 months, corporate decides to spend over £150,000 on 1 year's private cloud hosting with Rackspace (which, by the way, doesn't give us a fraction of the control that we'd have had, and has an SLA that means a new VM can take 2 days to provision). That's after 3 months of a dev team struggling to make do with VMs limping along on ill-equipped laptops. 3 months of inefficiency. 3 months of most devs using outdated VMs. 3 months of waste. Oh, and finally choosing an inferior platform at 15 times the cost.
Developers *need* development environments. Hardware is cheap. Colo is cheap. It should be an easy decision. Don't throw money away. And especially don't leave a team of developers twiddling their thumbs for 3 months whilst you make up your mind.