Names are not cheap

September 23, 2007

A recent sysadmin discussion here wound up with one of the participants suggesting that we deal with a particular issue by creating a new hostname, because after all names are cheap. This remark crystallized something for me.

I disagree. Names are not cheap, they are actually expensive. Names look cheap because they are easy to create, but they create clutter and uncertainty (over what name is still being used by what) that makes them expensive in the long run.

(Once you have enough names and enough uncertainty, you become overwhelmed; cleaning anything up requires an extraordinary amount of work, so you just pile more names on top without even bothering to try to figure out if you really need them. Maybe you could reuse an existing name, and maybe not; it is simpler and faster just to assume you can't.)

This holds for all sorts of names, not just hostnames. I've also seen it in at least Ethernet addresses in DHCP registrations and in Unix logins that aren't assigned to specific identifiable people (whether they are for bits of software, collaborative projects, or generic visitor accounts).

(The bad effects of clutter aren't restricted to just names, of course. Many things can become so cluttered up that they're all but impossible to understand, so the only way to proceed is to try to build your own addition on the side.)


Comments on this page:

By Dan.Astoorian at 2007-09-24 11:23:33:

Names are not cheap, they are actually expensive. Names look cheap because they are easy to create, but they create clutter and uncertainty (over what name is still being used by what) that makes them expensive in the long run.

I believe this is an illusion.

It's not the names that are expensive; it's the clutter. The key is not to avoid creating names, but to be disciplined in their creation and use--to create a definition of what each name specifically denotes, and not to casually overload the name with other meanings.

It's my experience that it's not actually the names that we tend to lose track of, but the applications associated with them. If we're asking "what is still using the name 'doohickey?'" we are actually more interested in knowing "who or what is using the set of services that the name 'doohickey' described?" However, if that set of services was lumped in with an existing name rather than assigned the name "doohickey," the clutter is hidden: you still don't have an answer to the question, but you don't have a name--a visible manifestation of untidiness--sitting there reminding you of that fact, and it's easier to let the "doohickey" services moulder in the shadows until you truly need to address the underlying issue.

Conversely, whenever you reuse an existing name for a new purpose rather than create a new one, you potentially sacrifice some flexibility: if you later decide to move (or virtualize) any of the resources associated with the name, then changing all of the places where the name is used will be a lot more expensive than keeping track of another name would have been.

The cost of names should be of less concern than the value they provide for that cost.

--Dan

Written on 23 September 2007.
« Weekly spam summary on September 22nd, 2007
Assume the existence of folklore among your users »

Page tools: View Source, View Normal, Add Comment.
Search:
Login: Password:
Atom Syndication: Recent Comments.

Last modified: Sun Sep 23 22:39:55 2007
This dinky wiki is brought to you by the Insane Hackers Guild, Python sub-branch.