Dec 13 2007

Don’t Make Me Think: Infrastructure for Web Development

When I was in college, my fellow classmates and I whined to each other about the gyrations it took to just get our development environments configured so we could do our homework … building a development environment was not the assignment.

Working as a web developer or web designer isn’t much different. Setting up your infrastructure and development environment is not billable time but sometimes it seems we spend an inordinate amount of effort creating an infrastructure that supports us in getting our work done with less distraction.

The past couple years, infrastructure has gotten easier and more cost effective using virtual machine environments combined with free Linux distributions such as Ubuntu that strive to be more user friendly. So now seemed like a good time re-evaluate how we were doing things and how we might do things differently to both increase productivity and reduce the environmental impact of our office.

Our General Infrastructure Requirements:

  1. A Linux development and test server for programming projects.
  2. A Windows webserver for .NET development
  3. Windows workstations for IE browser testing 1
  4. A design station: Apple computers have superior system-level image rendering and have long been the standard for design stations.
  5. A workhorse: this can double as your design station. If you need to run the many Windows-only business applications, this might be a Windows PC.
  6. A server for internal applications – this should be more stable than the development/test server.
  7. A router, preferably that combines wireless and print networking.
  8. And last, but certainly not least, we want to become more productive while reducing environmental impact of our office … which is a whole different topic I’ll cover another time.

Our starting point was

  1. A year ago, my computer was desperately old but I was too busy with work to really think through what our ideal infrastructure should be. So I quickly built 2 computers from scavenged parts with the intent of using them for a year. Well, that year is up!
  2. 1 Ubuntu machine which was my workhorse, running VMware with multiple installs of Windows and Linux for testing. I had built this a year ago reusing a cpu from a Dell
  3. 1 Windows server for .NET development. I had built this machine a year ago reusing another old cpu from a Dell.
  4. 1 linux server (a 5 year old Dell sc600) chugging noisily away in the closet. This was our development server
  5. 1 power pc used as a design station.

Functionally, what I needed was a multi-core computer that would let me run lots of virtual machines simultaneously for testing and development. I’ve subscribed to browsercam for years to test websites which is expensive. I need to be able to test websites on Windows, Mac and Linux and in multiple versions. When Apple switched over to the Intel processor, I decided to get an Intel-based Mac as soon as VMware released a mac version. So, the end result is:

  • We kept our PowerPC design station with Adobe Creative Suite, professional fonts and font manager, and various other design and multimedia tools.
  • I purchased an Intel Apple and migrated from my Ubuntu workstation to the Apple. This is experimental for me and is what prompted me to write this. I have to admit that I really miss my Ubuntu desktop but I’ll give the mac a fair try. I installed VMware Fusion on my mac, and created a number of VMs:
    • A standard LAMP+RoR+Plone installation (replacing my ancient Dell sc600)
    • A Windows workhorse install for mostly business applications such as QuickBooks, Microsoft Office, etc
    • Multiple installs of Windows for website testing in different versions of Internet Explorer
    • multiple installs of Ubuntu for various client projects that require different versions and packages installed on the server.2
  • Most of our internal knowledge management and productivity tools are php, java and ruby on rails web applications. I spent more time than I thought was reasonable setting up hosting on my mac (Leopard), so I ended up creating a separate Ubuntu VM which took about 15 minutes to setup. This is fine since with a quad core, I can comfortably run multiple VMs and all our internal knowledge management is browser based anyway so the vm just has to be on and have an IP address.
  • Anyhoo … right before I switched over to the Intel Apple our old Linksys router went belly up. We’ve been pretty loyal to the Cisco-owned Linksys over the years despite the Windows-only admin interface. But I didn’t want to waste money on obsolete technology like G-band so I bought the wireless N Linksys router ….. and promptly returned it.
    We did more research and discovered that with the Apple Airport Extreme, we’d get not only a wireless-N router that we could administrate from our macs, but also a built-in print server which was something else we’d never been satisfied with in our infrastructure (well, dissatisfied isn’t really accurate. We were never able to get our old linksys print server to work nicely with our mac).
    So, the upshot is we got the Apple Airport Extreme and it works great – absolutely no complaints. Both macs can print, I can print from my linux and Windows VMs and, most importantly, I don’t have to think about it.

The end result? pretty good! I replaced 3 older, noisy, energy consuming computers with 1 for a grand total of 2 computers in our office. Which is nice since there are only 2 of us who work in this particular office. This should save us some maintenance time, means we’re consuming less energy and the office is quieter now that our 2 computers are both water cooled. I put away my KVM switch and cleared my desk of cables – I’ll eventually sell it. I put the router and printer in the closet3 and rarely have to “power cycle” the router.

VMware Fusion isn’t perfect yet – I’ll write about the trade offs in a separate post

VN:F [1.9.3_1094]
Rating: 0.0/10 (0 votes cast)
  1. you can use various hacks for running multiple versions of IE on one machine … but the risks are:
    • they may not behave the same way as an installed version
    • a Microsoft update will break them
    • they don’t work consistently across Windows 2000, XP or Vista
    • when testing javascript behavior, I need to trust any errors are the javascript, not the browser install.

    []

  2. Although in most cases multiple versions of software can be run side by side in Linux, I find that it’s less time consuming and less fraught with weird errors that must be resolved to just run a separate VM for those special cases rather than running 4 different versions of Python, for example, on the same machine… []
  3. laser printers release some nasty particulates when printing largish documents. So it’s a good idea to place them in another room or enclosure. See “SF Gate article” Here’s a link to the Particle Emission Characteristics of Office Printers []