Skip to content

Convention de nommage

Cette convention s'applique à tout ce qu'on nomme dans l'infrastructure Spektrum : conteneurs, bases de données, utilisateurs SQL, volumes, hostnames, mots de passe. L'objectif est qu'on puisse deviner à quoi sert une ressource juste à partir de son nom, sans devoir ouvrir un wiki ou demander à un collègue.

Règle d'or

Si tu hésites entre deux noms, choisis celui qu'un nouveau collaborateur comprendrait sans contexte.

Skin - clef client

Chaque projet ou client est identifié par un skin : un identifiant court, unique, réutilisé partout (conteneurs, DB, volumes, secrets, dossiers).

Règles

RègleDétail
Longueur3 à 15 caractères
CasseMinuscules uniquement
Caractères autorisésa-z et 0-9
InterditsEspaces, accents, tirets, underscores, caractères spéciaux
UnicitéDoit être unique dans l'infrastructure

Comment le construire

  • Nom raccourci : coteminceur => cotemin
  • Acronyme existant : Association des Communes de Crans-Montana (ACCM) => accm
  • Marque courte déjà : psymed => psymed

Exemples utilisés en production

SkinClient
coteminCôté Minceur
accmAssociation des Communes de Crans-Montana
fctvsFête Cantonal de Tir du Valais
apolAssociation Police Lavaux

Le skin est immuable

Une fois choisi, le skin se retrouve dans des dizaines d'endroits (DNS, secrets, volumes, backups, IAM). Ne le change jamais une fois en prod - crée plutôt un alias si nécessaire.

Environnements

Les cinq environnements standard, du plus volatile au plus critique :

CodeUsage
devPoste développeur, jetable
testTests automatisés, CI
stagingRecette interne, démo client
preprodIso-prod, dernier filet avant mise en ligne
prodProduction

Pas tous les projets ont les 5

La plupart des sites tournent avec staging + prod uniquement. preprod n'est ajouté que sur les projets sensibles (e-commerce, intégrations critiques).

Conteneurs Docker

Format général :

<type>_<skin>_<env>

Types standards

TypeStack / rôle
umbUmbraco (CMS .NET)
nopnopCommerce (e-commerce .NET)
appApplication custom (.NET, Node, autre)
workerBackground worker, traitement asynchrone
cronTâches planifiées
proxyReverse proxy applicatif (NGINX, Traefik) propre au site
dbBase de données embarquée au stack
cacheCache (Redis, Memcached)
queueBroker de messages (RabbitMQ)
searchMoteur de recherche (ElasticSearch, Meilisearch)

Exemples

umb_cotemin_prod
umb_cotemin_staging
nop_apol_prod
app_accm_staging
worker_apol_prod
proxy_cotemin_prod

Tri alphabétique gratuit

Le <type> en premier permet de regrouper visuellement les conteneurs par rôle dans docker ps ou Portainer. C'est pour ça que le pattern n'est pas <skin>_<type>_<env>.

Bases de données

Même format que les conteneurs :

<type>_<skin>_<env>

Types standards

TypeUsage
umbBase Umbraco
nopBase nopCommerce
appBase applicative custom
logLogs, monitoring, audit
cacheDonnées temporaires, sessions
searchIndex de recherche persisté

Exemples

umb_cotemin_prod
umb_cotemin_staging
nop_apol_prod
log_apol_prod

Utilisateurs SQL

Un utilisateur SQL par stack applicatif, jamais d'utilisateur partagé entre projets :

<type>user-<skin>
ExempleDonne accès à
umbracouser-apolBases umb_apol_*
nopuser-apolBases nop_apol_*
appuser-accmBases app_accm_*

Pas de compte SQL multi-environnements

Chaque environnement a son propre compte. Un dump prod restauré en staging ne doit pas pouvoir se reconnecter avec les credentials staging par accident.

Hostnames / FQDN

Format général pour les services exposés :

<service>.<env>.spektrum-suisse.ch

Pour les sites clients en production, le FQDN est dicté par le client (www.exemple.ch). Pour tout ce qui est interne ou outillage, on suit la convention.

Exemples

HostnameUsage
ftp.staging.spektrum-suisse.chServeur FTPS staging
ftp.prod.spektrum-suisse.chServeur FTPS production
<skin>.staging.spektrum-suisse.chSite client en recette

Volumes et disques

Les volumes Infomaniak sont identifiés par un label ext4 court (max 16 caractères). On utilise une forme abrégée du skin pour rester dans la limite :

<skin-court>-<usage>-<env>

Exemples

LabelVolume
tsc-ftp-prodVolume FTP de The Swiss Collector (prod)
hvs-ftp-prodVolume FTP de l'Hôpital Valais (prod)
apol-data-prodVolume de données Apol (prod)

Limite ext4 = 16 caractères

Le label ext4 est tronqué à 16 caractères. Si ton skin fait déjà 8 caractères, il ne te reste que 7 pour <usage>-<env>. Privilégie une forme abrégée du skin (tsc plutôt que theswisscollector) uniquement pour les labels de volumes.

Mots de passe (services cloud)

Pour tout ce qui touche à un service cloud (panel admin, API key longue durée, console infra) :

Suisse-<Internal|Prod|Sysadmin>-<Service>
ExempleUsage
Suisse-Internal-HomarrCompte admin Homarr du sous-réseau internal
Suisse-Prod-NGINXAccès au reverse proxy NGINX en prod
Suisse-Sysadmin-GuardianCompte admin du gestionnaire de secrets

Récap - antipatterns à éviter

SymptômeCauseFix
umb-cotemin-prod (avec tirets)Mélange tirets/underscoresUnderscores partout dans les noms Docker/DB
UMB_Cotemin_PRODCasse non respectéeTout en minuscules
app_côté-minceur_prodAccents et caractères spéciauxRefaire le skin sans accents (cotemin)
Label volume cotemin-data-prod rejetéDépasse 16 caractèresSkin abrégé pour les labels (cmin-data-prod)
Compte SQL appuser partagéPas de skin dans le nomUn compte par projet : appuser-<skin>

Contributors

The avatar of contributor named as Clément Favre Clément Favre

Changelog