RSS Feed for This PostCurrent Article

Abstraction is Your Friend

It continues to amaze me how many system administrators don’t use the layers of abstraction available to them, via tools like DNS, or even just naming a service.

Example #1: a web site with a blog, where the blog is at /wordpress instead of /blog. What happens in five years when you have 50,000 readers and want to switch to another software package? Do you really want to maintain clumsy redirects from /wordpress/feed/ for the rest of your natural life? Don’t name your service after the software brand name or manufacturer, name it after what the service is. It’s a blog, not Wordpress. It’s the payroll system, not Kronos.

Example #2: naming a server “payroll.company.com” because it runs the payroll software. What happens when you want to replace that server? Do you create a machine as payroll2.company.com and have everybody switch their clients? Do you stay up all night or all weekend sometime building a new machine as payroll.company.com? Wouldn’t it be easier to give the machine another name, maybe based on its location, maybe based on nothing at all (”terminator.company.com”), and just use payroll.company.com as a service CNAME in DNS? That way you can build the new machine in parallel, and run the old machine for a while after you’ve cut over, in case you need something from it.

Example #3: not using DNS to abstract services all the way through an implementation. It isn’t just the front door to a service that can take advantage of abstraction. The guts of implementations benefit, too. Instead of telling your payroll software that its database is on terminator.company.com, register a CNAME for payroll.db.company.com. Or payroll-db.company.com. Or something, anything, so that when you replace terminator.company.com with alien.company.com you don’t have to hunt down and change every obscure script that might refer to the database. Just move the CNAME to the new machine and everything will continue to work.

So get with it, people. Every time you create a new system or implement new software ask yourself what sorts of abstraction you can add to make your life better. Think five years ahead to when the system or software will need replacing. Similarly, it’s never too late to add abstraction to a system if you didn’t do it from the start. The few minutes it takes to set up things like CNAMEs in DNS will often save lots of time later, even if you didn’t build it in originally. Consider it an investment.

| Comments

Trackback URL

  1. 6 Comment(s)

  2. By Jemimus on Nov 17, 2008 | Reply

    Microsofts Distributed File System is another technology that is underused in this regard. Imagine changing out your file server

  3. By Jack Hughes on Nov 17, 2008 | Reply

    Naming things is the hardest thing in IT.

  4. By Caractacus Potts on Nov 17, 2008 | Reply

    Boy, must be nice. I work with people who still use IP addressess. No, really! They find the address easier to use than the bizzare and cryptic 12-14 char system names they came up with as a “standard”. When I suggest using CNAMES for services, I get looked at like I’m some sort of alien.

    (*SIGH*)

  5. By Andrew Nelson on Nov 17, 2008 | Reply

    For example, does anybody remember:

    mylearn1.vmware.com
    mylearn2.vmware.com

    which has now become mylearnssl.vmware.com? Wonder what the next iteration will be…

  6. By Clay on Nov 17, 2008 | Reply

    Good post, couldn’t have said it any better. Abstraction is a tactic I wish I would have learned much earlier in my career. Unfortunately it usually isn’t thought about until after suffering through a few headaches.

  7. By Steve Lippert on Nov 18, 2008 | Reply

    Thank you! At a previous employer I switched them to a DFS setup and it was a god send. I also very much believe in abstraction and at my current employer I am trying to get them using it as well.

Post a Comment

 

Please note that while in principle I don't mind promotion of a non-personal web site or blog in the fields below, any comments that are off-topic, derogatory, or spam-like will likely be removed at my discretion.