Skip to main content

Pull To Open

Published: March 5, 2014

knob

In the world of usability, we often use this term: affordability. To be affordable means that something is easy to use. For example, a door with a handle has low affordability when pushing on the handle opens the door. It would have high affordability if there was a metal plate that one could use to push the door open. Gary Larson got it right.

Affordability is important!

Server names and perhaps more importantly, environment names form the base of software stacks at most companies. For example, it is not uncommon to see a setup that looks like this:

At universities, and even in my own home, you'll find servers with cute names like Pluto, Garfield, and Rocky. These names tell you nothing about the server, and some server administrators will argue that an obscure name promotes security. I'd argue that's not the case. Security via obscurity has never been good practice. Besides, all servers run services that are accessible to someone. The first thing a hacker will do is run an automated script to profile the server and find out what services are running. They won't care as much about the name as you might think.

Lets make these names more affordable! Trying again, here's a new scheme:

You'll notice a few different things about this setup. First, Test and Prod mirror one another. This provides a way to test changes that will be made in production using an environment that works just like production. Brilliant!

Secondly, notice the DNS naming scheme. It's consistent to a fault. This isn't an accident. Without looking at a cheet sheet, can you tell me what the name of a webserver in test might be? Yes! If you changed departments and someone told you to login to sql01.prod.theCorp.com would you be scared? You bet. This naming scheme is affordable. With a single glance, you can tell what kind of server you are using and what environment it is in. Brilliant!

It gets even better. How often have you run into code that needed to behave differently based on the environment it runs in? With the new scheme, the code can figure out where it's running and behave appropriately even when servers are added and removed. If your website becomes popular overnight you'll be able to add servers without changing the code. Nice.

One company I worked at had the following database names: INTG, TRNG, CONV, TST, QPROD, PROD. During a large project, we realized that this was bad. Everyone had a cheat sheet at their desk so that they could remember that INTG was a test environment and that CONV was a UAT (user acceptance test) environment. When we implemented the new naming scheme, those pieces of paper went away. As did the frustration and confusion that went with them. We were (finally) able to fully automate our build and deployment processes because we could now make the scripts detect the environment and automatically figure out which servers to use for deployment!

What's in a name? As it turns out, a lot! When servers and environments are named well, you'll save time, prevent problems, and make onboarding new team members a breeze. Are your servers affordable?