Documentation
Large workspace de services
Gardez une grande liste de services lisible avec des conventions partagées et des défauts globaux.
Quand utiliser cet exemple
Utilisez ce pattern quand un monorepo contient beaucoup de services locaux mais qu’ils suivent tous la même convention de lancement. Le but est de rendre la liste de processus simple et prévisible.
Exemple
[global]
log_mode = "both"
log_format = "json"
env_file = ".env"
before = ["./tools/prebuild-services.sh"]
[global.readiness]
type = "log"
[global.readiness.ready]
pattern = "service_ready"
[global.log_template]
stdout_preset = "rust"
stderr_preset = "rust"
[[process]]
name = "billing-public"
command = "./tools/run_service.sh billing-public"
[[process]]
name = "billing-grpc"
command = "./tools/run_service.sh billing-grpc"
[[process]]
name = "billing-worker-rollup"
command = "./tools/run_service.sh billing-worker-rollup"
[[process]]
name = "iam-public"
command = "./tools/run_service.sh iam-public"
[[process]]
name = "iam-grpc"
command = "./tools/run_service.sh iam-grpc"
[[process]]
name = "iam-outbox-worker"
command = "./tools/run_service.sh iam-outbox-worker"
[[process]]
name = "notifications-email-send"
command = "./tools/run_service.sh notifications-email-send"
[process.log_template]
stdout_preset = "email"
stderr_preset = "email"Pourquoi cela fonctionne
Le fichier reste lisible parce que la plupart du comportement est global:
- une convention de launcher
- un fichier env partage
- un signal de readiness partage
- un template de logs par défaut
Les entrées processus déclarent seulement le nom stable et la commande. Les exceptions restent locales, comme le template de logs spécifique aux emails.
Valeurs par défaut utiles ici
instances: défaut1process.readiness: hérite deglobal.readinessprocess.log_template: hérite deglobal.log_templateprocess.log_mode: hérite deglobal.log_modeprocess.log_format: hérite deglobal.log_formatshow_timestamps: valeur effective par défauttrue
Ce qu’il faut personnaliser
- Choisissez une convention de launcher utilisable par tous les services.
- Gardez des noms de processus stables ; ils deviennent des cibles de restart, des lignes de status et des identifiants de logs.
- Utilisez les réglages globaux pour le comportement commun.
- Gardez les exceptions explicites et proches du processus qui en a besoin.
- Ajoutez des groupes pour l’organisation TUI et des labels pour les filtres de démarrage transverses.