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.
Microsofts Distributed File System is another technology that is underused in this regard. Imagine changing out your file server
Naming things is the hardest thing in IT.
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*)
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…
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.
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.