5 Machines You Must Have in your Development Environment

December 5, 2006

I am going to write about the number and type of machines required for a development, testing and release environment. I am going to leave out machines dedicated to source code control and any database machines.

The minimum hardware requirements for any non-trivial development project are:

  • Developer workstation
  • Build machine
  • Non-developer Testing machine (SIT)
  • UAT machine
  • As-Live locked down environment

Developer workstation

The developer uses this machine to write code and perform initial testing. Devs need to have a great deal of things open on screen at once – multiple IDEs, documentation, web sites, remote desktop links to test machines – and so need plenty of screen “real-estate”. A minimum resolution of 2560*1024 (two 1280*1024 monitors) should be installed.

  • Minimum 1Gb RAM, Preferably 2Gb
  • Two lcd monitors, 17″ minimum, preferably 19″

Build Machine

This machine is responsible for building releases of checked-in code, and optionally running automated tests and deployment tests.

  • Accessible via Remote Desktop
  • Fast CPU, preferably multi-core
  • 500Gb of fast disk space, preferably more

Non-developer Testing Machine (SIT)

This machine is used to create an environment that is equivalent to “live” but includes any new changes in the most recent build. Some teams will call this their “SIT” environment. Since this is a group-owned/managed machine it should be accessible via Remote Desktop, and the team must have full Administrator rights on it, including the ability to change Group/Global policy objects. These rights insulate devs from changes that may be pushed out by over-zealous central IT teams who do not understand the development process.

No particular hardware requirements, although it should not be too dissimilar from “live” e.g., 1 CPU of the same class as live, similar level of memory. Hard disk space shouldn’t be such an issue since the machine should hold only the latest copy of the SIT code and any logfiles.

UAT Machine

This machine performs a similar function to SIT, although it should be more “locked down”, with an administrative environment that mirrors “live”. Hardware should be similar to SIT. Again, this machine is group-owned so must be group-accessible at all times.

As-Live Environment

This is one of the most important machines in your rack. It is imperative that you have an environment that is configured in exactly the same way as your “live” environment. It is impossible to track down production problems if you don’t have a stable and working environment. Rolling back the UAT machine to be the previous version is inefficient, and might impact another project’s critical path. Also you are impacted by any admin differences between UAT and live. Plus, if you work in a large enough organisation, your Audit department will love you for it.

Next time we will talk about maximising physical hardware through virtualisation.


3 Responses to “5 Machines You Must Have in your Development Environment”

  1. Tony said

    So in simpler terms: Development, Build, Testing, Testing, really good Testing?

    Excellent points on the Developer Workstation, they should probably be emphasized, and then again. I’ve heard of cases where a secretary would have dual 19″ LCDs to play Solitare on, while one of my peers was given a single 17″ for Software Development. Students are so under-appreciated sometimes.

  2. progblog said

    Personally I think everybody should have dual screens, there’s no reason not to these days. For a developer to not have at least two is criminal.

    I am considering an upgrade to a pair or 20″ or 22″ screens, but I need to check whether my graphics card can drive something that large.

  3. fromexperience said

    thanks for the info. i learnt this the hard way last night. not coming from a comp science background and pushing seemingly small change from dev into live created havoc. unfortunately no-one i’d asked recently could explain the process clearly/thoroughly to me, although i understood the basic concepts.

    cheers – you’ve really helped! 🙂

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: