socle-technique et Spring

Bonnes pratiques relatives aux configurations en environnement de développement

  • Les différents profils (Promethée, Spring)
  • Bonnes pratiques pour les profils Spring
  • Cas particuliers de SaaS Google (Pubsub)
  • Questions / Réponses

N'hésitez pas à poser des questions au fil de la présentation

Sommaire

En environnement de développement, il convient d'utiliser le profil dev
Pré-configuré via java-development

Dans la CI, le profil Promethée utilisé est gcp-cd, héritant de gcp-staging

Profils Promethée

Si fichier application-dev.yml trouvé, ses clés seront prises en compte / surchargeront celles de application.yml

Si pas de fichier application-dev.yml => Utilisation des clés définies dans application.yml

Défini via configuration "-Dspring.profiles.active"

Profils Spring

# Configuration au lancement de votre application
-Dspring.profiles.active=dev
# Si le "application.yml" contient la configuration suivante :
spring:
	profiles:
		active: @springboot.profile.name@
# La valeur définie dans le profil Maven courant sera prise, sinon default

Par la valeur du profil Maven via l'héritage du pom-ciweb

Requiert un mvn compile à minima avant le démarrage de l'application Spring Boot

Directement depuis votre Intellij (Ultimate)

En renseignant "dev" dans le champ "Active profiles" de votre Run configuration "Spring Boot"

Exemples : Profil Spring de developpement

---
application:
  name: mon-api-java-1
  version: "@project.version@"
  description: "@project.description@"
  ma-super-cle-de-conf: "valeur par défault (release)"
server:
  servlet:
    context-path: /mon-api-java-1
spring:
  application:
    name: "${application.name}"
    version: "${application.version}"
  cloud:
    promethee:
      domain: environment
  config:
    import: prometheeserver:${confpj.promethee.v2.url}
# CODE
---
application:
  ma-super-cle-de-conf: "Valeur en developpement"
server:
  port: 8090

application.yml

application-dev.yml

Exemples : Avec Promethee

---
application:
  name: mon-api-java-1
  version: "@project.version@"
  description: "@project.description@"
  ma-super-cle-de-conf: "${confpj.mon-api-java-1.cle-de-conf}"
server:
  servlet:
    context-path: /mon-api-java-1
spring:
  application:
    name: "${application.name}"
    version: "${application.version}"
  cloud:
    promethee:
      domain: environment # Le domain dans Promethee
      profile: ${confpj.promethee.v2.profile} # Valeur du profil utilisé dans le domain, dev par défaut en local
  config:
    import: prometheeserver:${confpj.promethee.v2.url}
# CODE

Pas de fichier spécifique, la valeur est conditionnée à celle trouvée dans Promethée

Cas particuliers de SaaS Google (Pubsub)

---
application:
  name: mon-api-java-1
  version: "@project.version@"
  description: "@project.description@"
server:
  servlet:
    context-path: /mon-api-java-1
spring:
  application:
    name: "${application.name}"
    version: "${application.version}"
  cloud:
    gcp:
      credentials:
        # En staging/production via secrets monté
        location: file:<FICHIER_SERVICE_ACCOUNT_JSON>
      project-id: production-project
    promethee:
      domain: environment
  config:
    import: prometheeserver:${confpj.promethee.v2.url}
# CODE
---
spring:
  cloud:
    gcp:
      project-id: dev-project-id
      pubsub:
        # host:port de l'émulateur lancé via Gcloud CLI
        emulator-host: localhost:8085

Questions / Réponses

best_practices_spring_profiles_and_promethee

By ideveseleer

best_practices_spring_profiles_and_promethee

  • 30