Things I might want to know about a host:
application / services
geography
network
architecture
OS
VM / non-VM
prod / non-prod
Things I want to encode in the host part of a hostname:
application / services - that is all
Things I do not mind encoding in the FQDN (using subdomains or suffixes)
geography
prod / dev / qa
Hostname parts
<service hint> <handle> . <subdomain> . <domain>
Joining the service hint and handle should be done with a non-dot. The dash (-) is popular.
Service hints should be “registered” centrally (wiki, source control repository, etc.) to provide humans with a lookup table.
<service hint> should be no longer than n characters, where n is usually 3 but can be as high as 5 if there is dire necessity. Remember, you only want to encode the service here, nothing else. Examples: web db srch mx smtp relay cache log cs fs crs
<handle> should be picked from a semi-randomly generated list of simple dictionary words. Care must be taken to prevent near-collision (dear, deer) by auditing the list. Avoid using anglicized “borrowed” words, or really anything above a 5th-grade reading level. These are names you will be spelling and pronouncing, and some of your co-workers are not native English speakers. Uniqueness need not be cumbersome.
<handle> *may* be suffixed by -dev, -qa, -sp, etc. to indicate non-production status. Production should never be suffixed, it needs to have the simplest naming possible.
<subdomain> can be used to encode one of:
geography to the level of city or colo name
network type (s for storage, p for pocket / private, etc.)
Examples:
- plain hostname
- log-foo.domain.com
- dev hostname (suffixed host part)
- db-bar-dev.domain.com
- using a subdomain for geography
- mail-baz.atl.domain.com
- using a subdomain for a storage interface
- nfs-flee.s.domain.com
- nesting subdomains
- nfs-blah.atl.s.domain.com