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.
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.
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
Repo names are always lowercase using dashes (done automatically)
Developer repos are only created via pipelines and no manual creation is allowed (need approval)
Settings are not changeable via a developer team (add link)
All repos are scanned for vulnerabilities, code complexity, licensing issues, and coding practices
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
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
Always prefix the resource group with
rg-
to identify that it is a resource group. Afterward note theworkload/application
type, leave theregion
out, then theinstance
.
As an example note this image again.
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:
Add a check in the code review to ensure the naming convention is being followed (Explore Sentinel abilities)
Define all resource types so we know the name standards (route, gateway, etc.)
Define GCP naming for each resource type as well
Update pipeline deployments to use the new naming conventions
LeanIX REST API training
Redo all the quick start guides
Need to hold people accountable when they don’t follow this process
Workflow to create repos
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