Naming Conventions

TODO: Clean up comments and information Modified: December 2, 2022

This document covers the following;

Subscriptions Resource Groups Resources Networks Repository names

This resource follows the Microsoft Well Architected Framework for naming conventions. It uses a modified version of the following picture.

Resource Naming

NOTE: One change is we no longer use the Azure Region as these are ephemeral or changing depending on the resource. Please leave it out.

The modified version is as follows.

Resource Type - Workload/Application - Environment - Instance

Legacy Workloads and Naming

We realize that there are a number of cloud services existing in Azure and Google today. Therefore, as the team makes changes to the resources, we expect that they also rename and reconnect them. This will make the transition smoother and not add any undue burden to the development teams.

This can be a slow and steady progress however, after January 1, 2023, GDCT and DevOps will follow the new naming conventions in their pipelines.

We will also use the Cloud Adoption Framework resource abbreviations as our abbreviations. In the configuration, we will use these abbreviations for our resources.

Cloud Adoption Framework Abbreviations

Repository Names

  • Product Name - Context - Function

    • launchpad-manufacturing-lims - Product Name in VSM = Launchpad Manufacturing

    • launchpad-supplychain-forecasting - Product Name in VSM = Launchpad Supply Chain Forecasting

    • launchpad-supplychain-demandmanagement - Product Name in VSM = Launchpad Supply Chain Demand Management

    • opensource-biostatistics-web-digitizer

    • opensource-data-hpc

    • opensource-data-eventprocessing

    • omnivivo-app-experimentation

    • adctracker-app-experimentation

Repo Standards

  1. Repo names are always lowercase using dashes (done automatically)

  2. Developer repos are only created via pipelines and no manual creation is allowed (need approval)

  3. Settings are not changeable via a developer team (add link)

  4. All repos are scanned for vulnerabilities, code complexity, licensing issues, and coding practices

  5. Repositories are named based on business domain, context, environment. Business domains can be found in LeanIX VSM Domains under the Domain Fact Sheet.

TODO: Review with EGC/DGC, app devs, if they want to create repos and if they will follow our processes

Domain Fact Sheet

Subscription Example

  • data-science-dev

  • data-science-stg

  • data-science-prd

  • ets-dev

  • ets-stg

  • ets-prd

  • finance-dev

  • finance-stg

  • finance-prd

Resource Group Standards

  1. Always prefix the resource group with rg- to identify that it is a resource group. Afterward note the workload/application type, leave the region out, then the instance.

As an example note this image again. Resource Naming

  • research-translational-science-dev

    • rg-proteintracker-dev-001

    • rg-adctracker-dev-001

    • rg-omnivivo-dev-001

    • rg-networking-dev

      • vnet-eastus2-dev-001

      • vnet-eastus2-dev-002

    • rg-backup

    • rg-monitoring-logging

    • rg-agw-dev-001

    • rg-agw-dev-002

    • rg-pip-dev-001

    • rg-nat-dev-001

    • rg-rt-dev-001


  • research-translational-science-stg

    • rg-proteintracker-stg-001

    • rg-adctracker-stg-001

    • rg-omnivivo-stg-001

    • rg-networking-stg

      • vnet-eastus2-stg-001

      • vnet-eastus2-stg-002

    • rg-backup

    • rg-monitoring-logging

    • rg-agw-stg-001

    • rg-agw-stg-002

    • rg-pip-stg-001

    • rg-nat-stg-001

    • rg-rt-stg-010


  • research-translational-science-prd

    • rg-proteintracker-prd-001

    • rg-adctracker-prd-001

    • rg-omnivivo-prd-001

    • rg-networking-prd

      • vnet-eastus2-prd-001

      • vnet-eastus2-prd-002

    • rg-backup

    • rg-monitoring-logging

    • rg-agw-prd-001

    • rg-agw-prd-002

    • rg-pip-prd-001

    • rg-nat-prd-001

    • rg-rt-prd-010

Resource Naming

We will use the abbreviations from the following standard.

Example of a storage account that needs to be globally unique. Storage names cannot exceed 24 characters. Needs to be 16 or less and then we append 6 characters. We can store the name or generate the name for the teams because it is difficult to codify this.

  • stproteintracker<random(6)>

  • stlaunchpad<random(6)>

What needs to change

TODOs:

  1. Add a check in the code review to ensure the naming convention is being followed (Explore Sentinel abilities)

  2. Define all resource types so we know the name standards (route, gateway, etc.)

  3. Define GCP naming for each resource type as well

  4. Update pipeline deployments to use the new naming conventions

  5. LeanIX REST API training

  6. Redo all the quick start guides

  7. Need to hold people accountable when they don’t follow this process

  8. Workflow to create repos

  9. Test framework updates to check names

Virtual network Resource group vnet-<subscription purpose>-<###>

  • vnet-shared-001

  • vnet-prod-001

  • vnet-client-001


Subnet Virtual network snet-<subscription purpose>-<###>

  • snet-shared-001

  • snet-prod-001

  • snet-client-001


Network interface (NIC) Resource group nic-<##>-<vm name>-<subscription purpose>-<###>

  • nic-01-dc1-shared-001

  • nic-02-vmhadoop1-prod-001

  • nic-02-vmtest1-client-001


Public IP address Resource group pip-<vm name or app name>-<environment>-<###>

  • pip-dc1-shared-001

  • pip-hadoop-prod-001


Load balancer Resource group lb-<app name or role>-<environment>-<###>

  • lb-navigator-prod-001

  • lb-sharepoint-dev-001


Network security group (NSG) Subnet or NIC nsg--<###>

  • nsg-weballow-001

  • nsg-rdpallow-001

  • nsg-sqlallow-001

  • nsg-dnsblocked-001


Local network gateway Virtual gateway lgw-<subscription purpose>-<region>-<###>

  • lgw-shared-eastus2-001

  • lgw-prod-westus-001

  • lgw-client-eastus2-001


Virtual network gateway Virtual network vgw-<subscription purpose>-<region>-<###>

  • vgw-shared-eastus2-001

  • vgw-prod-westus-001

  • vgw-client-eastus2-001


Site-to-Site connection Resource group cn-<local gateway name>-to-<virtual gateway name>

  • cn-lgw-shared-eastus2-001-to-vgw-shared-eastus2-001

  • cn-lgw-shared-eastus2-001-to-vgw-shared-westus-001


VPN connection Resource group cn-<subscription1 purpose>>-<region1>-to-<subscription2 purpose>>-<region2>-

  • cn-shared-eastus2-to-shared-westus

  • cn-prod-eastus2-to-prod-westus


Route table Resource group route-<route table name>

  • route-navigator

  • route-sharepoint


DNS label Global <DNS A record for VM>.<region>.cloudapp.azure.com

  • dc1.westus.cloudapp.azure.com

  • web1.eastus2.cloudapp.azure.com


Virtual machine Resource group vm<vm role><environment><###>

  • vmsqltest001

  • vmhadoopprod001


Web app Global app-<project, app or service>-<environment>-<###>.azurewebsites.net

  • app-navigator-prod-001.azurewebsites.net

  • app-accountlookup-dev-001.azurewebsites.net


Function app Global func-<project, app or service>-<environment>-<###>.azurewebsites.net

  • func-navigator-prod-001.azurewebsites.net

  • func-accountlookup-dev-001.azurewebsites.net


Azure SQL database Azure SQL Database sqldb-<project, app or service>-<environment>

  • sqldb-users-prod

  • sqldb-users-dev


Azure Cosmos DB database Global cosmos-<project, app or service>-<environment>

  • cosmos-navigator-prod

  • cosmos-emissions-dev


Azure Cache for Redis instance Global redis-<project, app or service>-<environment>

  • redis-navigator-prod

  • redis-emissions-dev


Azure Cognitive Search Global srch-<project, app or service>-<environment>

  • srch-navigator-prod

  • srch-emissions-dev


Azure Cognitive Services Resource group cog-<project, app or service>-<environment>

  • cog-navigator-prod

  • cog-emissions-dev


Azure Machine Learning workspace Resource group mlw-<project, app or service>-<environment>

  • mlw-navigator-prod

  • mlw-emissions-dev


Azure Data Factory Global adf-<project, app or service>-<environment>

  • adf-navigator-prod

  • adf-emissions-dev


Azure Stream Analytics Resource group asa-<project, app or service>-<environment>

  • asa-navigator-prod

  • asa-emissions-dev


Data Lake Storage account Global dls<project, app or service><environment>

  • dlsnavigatorprod

  • dlsemissionsdev


IoT hub Global iot-<project, app or service>-<environment>

  • iot-navigator-prod

  • iot-emissions-dev


Service Bus Global sb-<project, app or service>-<environment>.servicebus.windows.net

  • sb-navigator-prod.servicebus.windows.net

  • sb-emissions-dev.servicebus.windows.net


Service Bus queue Service Bus sbq-<query descriptor>

  • sbq-messagequery


Service Bus topic Service Bus sbt-<query descriptor>

  • sbt-messagequery