Naming – FQDN Canonical (Reverse) Convention

by Fabio Hanson
2 minutes read

Summary

This variant uses a reverse, dot-delimited ordering to make the most specific identifier appear first, followed by location, provider, environment, and DNS domain. It is optimized for FQDN-based grouping and some DNS browsing patterns, at the cost of slightly worse “human scanning” readability.

Reading List

Purpose

Provide an alternative canonical FQDN naming pattern that prioritises service instance identity first, then locality, then provider and environment, while preserving the same underlying data fields.

Scope

In scope

  • Host FQDNs for servers, nodes, and service endpoints that publish DNS records
  • Internal-only DNS zones (e.g., systemdomain.internal)
  • Assets that benefit from “instance-first” sorting/grouping

Out of scope

  • End-user device naming (desktops/laptops)
  • Display names and free-form labels

Statements

General Rules

  • MUST use a single canonical naming pattern for hostnames and DNS records as defined below.
  • MUST use only allowed characters:
    • A-Z, 0-9, and – (Hypen)
    • _ (Underscores) should not be used, and are defined for a different purpose.
  • MUST be unique within its relevant namespace

Canonical FQDN

  • MUST follow
    • [HostProvider] as A
    • [Country] as B
    • [City/Town] as C
    • [Service] as D
    • [Iteration] as 0
    • [Environment] as E
    • [Domain] as F
    • [TLD] as G
  • [Service][Iteration].[City].[Country].[HostProvider].[Environment].[Domain].[tld]
  • D00.CC.BB.AA.EEEE.FFFFFFFF.GGGG

Example:

H01.FNS.DE.HZ.PROD.DOMAIN.INTERNAL

Definitions & Constraints

  • HostProvider MUST be a short, fixed 1-2 char.
  • Country MUST use the UN/LOCODE country code 2 char
  • Town/City MUST use the UN/LOCODE location code, typically 2-3 char
  • Service MUST be a short mnemonic 1-3 char
  • Iteration MUST be a small integer or hex value 0-9, A-F.
  • Environment MUST be one of the approved values
    • LAB
    • DEV
    • TEST
    • STAGE
    • PROD
  • Domain & TLD MUST be one of the owned public/private DNS zones.

Rationale

  • DNS grouping: Names naturally group by instance (H1.) and then by site (.FSN.DE.*) when browsing or filtering.
  • Consistency: Preserves the same semantic fields as the non-reverse convention; only ordering changes.
  • Machine parsing: Dot-separated labels map cleanly to structured fields.

Implementation Guidance

CodeProviderNotes
HZHetznerHosting provider
AZAmazon Web ServicesCloud provider
MSMicrosoft AzureCloud provider
GCGoogle Cloud PlatformCloud provider
OPOn-premInternal / datacentre
CodeService typeNotes
SSQL/DBPresumed SQL-based database engine, but is equally open to Postgres, Mongo, etc.
DDockerDocker Nodes
MGeneric Multi Purpose Member
RRouting/VPN/RRASRouting & Remote Access, VPN, etc.
WWebweb frontends/reverse proxies
CodeEnvironmentNotes
labLabexperiments/sandbox
devDevelopmentactive dev
testTestfunctional/QA testing
stageStagingpre-production
prodProductionlive

Exceptions

Exceptions are allowed, but they must be deliberate and clearly declared.

Compliance & Verification

  • Regex-based checks per naming class
  • FQDN pattern for hosts/services
  • Numeric-only device pattern with range validation

Roles & Responsibilities

  • Owner: Platform/Ops
  • Approvers: Team-Lead
  • Implementers: Engineers creating infrastructure, services, devices

Revision History

VersionDateChange
1.02026-02-18Initial

You may also like