Virtual Insider

Blog archive

How To Design An Effective Naming Convention

While recording my VMware vSphere 5 Training course this past summer, I made mention that I developed a process for building an effective naming convention for enterprises. Server and desktop virtualization significantly increases the number of named objects within our enterprises, so an effective naming convention that describes what an object is, its location, function and purpose is critical. Doing so allows us to identify objects in a speedy way, but it also provides a structured way of searching for objects using keywords in a logical manner.

Even as I developed these guidelines, I did not think it would interest folks very much. But I started receiving near daily tweets and e-mails requesting a copy of the document. So, I've decided to publish it and share it with everyone in today's blog.

Here are my basic guidelines for the object naming convention:

  • A name should identify the device's location and its purpose/function/service.
  • A name should be simple yet still be meaningful to system administrators, system support, and operations.
  • The standard needs to be consistent. Once set, the name should not change.
  • Avoid special characters; only use alphanumeric characters.
  • Avoid using numeric digits, except for the ending sequence number.
  • Avoid the use of specific product or vendor names, as those can be subject to change. (There are some generally accepted exceptions: Oracle, SMS, SQL, CTX, VMW)

Here are some basic recommendations:

  • The name should begin with a rigid header portion that identifies the location and optionally a type identifier. These should be followed by a delimiter to signify the end of the header portion. This delimiter shall be a "-" (dash) unless the system does not recognize a "-". In this case, substitute the dash for another suitable agreed-upon character (i.e. $ or #).
  • Allow for a variable section that completes the identification (function, service, purpose, application).
  • End the name with a unique ID, a sequence number, which can be multi-purpose.
  • Allow for flexibility. Since technology is constantly evolving, this standard must also be able to evolve. When necessary, this standard can be modified to account for technological, infrastructure, and or business changes.
  • There must be enforcement, along with accurate and current documentation for all devices.

Here is an example of the proposed naming convention standard:

Structure:

Header
Variable
G
G
L
T
-
A
A
A
B
B
B
#
#


Header portion
GG -- Geographical location
L -- Location should be generic and not vendor- or building-specific to facilitate moves, building name changes due to mergers, acquisitions or dissolution of business, etc.
T -- Type
- -- Dash is a required delimiter to signify the end of the header portion

Variable portion:
AAA -- Function /Service/Purpose
BBB -- Application
(Unique ID)
## -- 2 digit sequence #

Values Defined:

Geographic:
CH -- Chicago
NY -- New York
LN -- London
SY -- Sydney
MA -- Madrid
SI -- Singapore
MU -- Mumbai

Location:
D -- Main Data Center
C -- COLO Data Center
T -- Test Area (should be used for test machines that are to permanently stay in the test area)

Type (optional):
V -- Virtual
C -- Cluster server
P -- Physical
O -- Outsourced or vendor supported system

Delimiter (required):
- A "-" (dash) will be used unless the system does not recognize a "-" at which point an agreed upon character can be substituted. This could be a $ or # or other character.

Variable portion - AAA
Identify the primary purpose of the device:

DC -- Domain Controller
FS -- File Server
PS -- Print Server
ORA -- Oracle database
SQL -- SQL database
DB -- other database(s)
EXH -- Microsoft Exchange
CTX -- Citrix Server
ESX -- VMware ESX Server

Variable portion BBB
Identify the Application on this server. If the server is for a specific application, then an application identifier should be the second part of this portion of the name, preceded by the service:

JDE -- JDEdwards
DYN -- Dyna
EPC -- Epic

This area of the name offers a lot of flexibility to handle identifiers for specific purposes, functions, and/or applications. There are many challenges to select identifiers that are meaningful and consistent and are not subject to frequent change. Here are some examples based on th guidelines I propose above:

CHD-DC01 -- Chicago Office, Data Center, Domain Controller, sequence # 1
CHD-FS01 -- Chicago Office, Data Center, File Server, sequence # 1
CHD-EXH01 -- Chicago Office, Data Center, Microsoft Exchange, sequence # 1
CHD-ESX01 -- Chicago Office, Data Center, VMware ESX Server, sequence # 1
CHC-CTXJDE01 -- Chicago Office, Data Center, Citrix Server,JDEdwards Application, sequence # 1
CHC-WEB01 -- Chicago Office, Data Center, Web Server, sequence # 1

Unique ID / sequence number
## This is a 2 digit sequence number

I would love to hear your comments on this naming convention and if you have ideas to improve it.

Posted by Elias Khnaser on 10/13/2011 at 4:02 PM


Reader Comments:

Sat, Oct 29, 2011 Gautam

AAA-BBCDD-EEE##, AAA is Location (sjc,bgl,nyc etc), BB is ServerType (WW = WebServer, DB, AD) C is class (P = prod, S = staging, D = dev), D is OS ( L = Linux, S = Solaris, A is AIX, N is NT/W2k8, VL = Virtual Linux, VS, Virtualized Solaris) EE is optional, usally project code (EOL, DAS, XXI etc), ## is 01 - 99

Mon, Oct 17, 2011 Scott

For security reasons, we don't want anyone to have clue what a server does. We have a header because of organizational hierarchy, but we just use number. We started with a higher number for virtual boxes. It is a relatively small datacenter, so when I tel someone to look at 011, they know exactly what box I am referencing.

Fri, Oct 14, 2011 Chuck Anchorage

We're struggling with this right now. Your scheme is good but doesn't meet our needs. For example, the dash isn't needed as the header length is fixed. But the AAA field examples are variable length and could get confused with the BBB portion. The numeric sequence works best at the end but we augment it with a suffix if the device is part of a cluster. So a cluster node might end in 02a in a cluster ending in 02. We also follow the model of 'most specific to least specific' from left to right. For example, ad01-hdc1 is the name of the first domain controller in the HDC1 data center. Doesn't matter where it is in the building. This is a system that is married to the site. The third level domain name ids the geographic location. A switch might be sw4-r3c2-adc2 which is the switch 4 in row 3, cabinet 2 in the ADC2 data center. If we move a switch it will probably change function so a name change is probably called for. It also makes the switch easier to find in the DC. Virtual machines might not have any location info in the name if they are subject to relocation. This subject is fascinating and discussions can quickly turn religous. We love standards. That's why there are so many of them...

Fri, Oct 14, 2011 Bryan D. Dallas, TX

Good scheme, here is ours that has stood the test of time: 2 letters for the country code, 2 letters for the state or province code, 1 letter for the server type designator (ie D for Directory Services, X for Database Server, A for Application Server, etc.), 3-4 letters for the Application name, and then followed by 2 digits for the number of the server. For example, USTXDLAMOM01 would be the first Microsoft Operations Manager server which is an Application server at our Dallas location in the United States. Nicholas has a good point though, when companies step into the Hybrid Cloud and virtual machines are moving fluidly between geographic locations, the location designator would prove to be a misnomer and confuse things.

Fri, Oct 14, 2011 Nicholas Murphy Dublin, Ireland

This is a good naming scheme, but for the geographic location identifier. With virtual machines moving between offices & data centres, the location changes, so I don't include it any longer in my naming convention.

Thu, Oct 13, 2011 Greg New York

This is a good scheme. Other appropriate schemes might depend on the infrastructure. At one organization I worked at with numerous small branch offices around the country, we began each computer or server name with the unique portion of the location's IP block, i.e. 20SERVER, 10DC1, 10SQL, 15JSMITH. In our environment, desktop computers were more easily identified by name than function, and we found starting with the unique number helped us quickly identify the system's location.

Add Your Comment:

Your Name:(optional)
Your Email:(optional)
Your Location:(optional)
Comment:
Please type the letters/numbers you see above