Skip to main content
Skip table of contents

Wat zijn applicatie eigenschappen?

Concept

Applicatie eigenschappen, ook wel omgevingsvariabelen genoemd, zijn configuratie‑variabelen die het gedrag van de applicatie sturen en die per omgeving een andere waarde kunnen aannemen. Denk aan generieke instellingen (bijv. poort, base URL, feature‑toggles), koppelingen naar externe diensten (bijv. endpoints, API‑keys) of beveiligde secrets (bijv. wachtwoorden, certificaten, private keys). In de praktijk komen deze eigenschappen terecht als environment variables op de container (bijvoorbeeld een ECS task), zodat we per omgeving andere waarden kunnen configureren. Doorgaans onderscheiden we vier types omgevingen: ontwikkeling, test, acceptatie en productie.

Use case

Het gebruik van omgevingsvariabelen zorgt ervoor dat de applicatie flexibel gedeployed kan worden in verschillende omgevingen en dat gevoelige informatie niet in code of in images vervat zit, maar centraal beheerd kan worden via AWS‑services zoals Parameter Store en Secrets Manager. Applicatie eigenschappen of omgevingsvariabelen zijn vooral van belang bij de setup van de applicatie of van een component binnen de applicatie (bijv. een connector). Ze beschrijven configuratie, niet de runtime‑status van de applicatie of data (dossiers, documenten, …).

Overzicht applicatie eigenschappen

Klik hier voor een niet-exhaustieve oplijsting van eigenschappen die relevant kunnen zijn bij de setup van een Skryv applicatie.

Werking applicatie eigenschappen

Binnen een Skryv applicatie is er een vaste volgorde (prioriteit) waarmee een applicatie eigenschap wordt ingevuld. We spreken hier over drie bronnen:

  1. Omgevingsniveau (ECS task / Terraform)

  2. Application properties (application.properties)

  3. Code default (hard‑gecodeerde default waarde)

De applicatie probeert telkens in deze volgorde:

  1. Omgevingsniveau (ECS / Terraform): de voorkeursbron in productie‑opstellingen.

    • Environment variables worden ingesteld:

      • manueel in de ECS task definition, of

      • op basis van een gedeployed Terraform‑bestand (bijv. app.tf of connectors.tf).

    • In Terraform kan een waarde:

      • rechtstreeks ingevuld worden (value), of

      • indirect verwezen worden (valueFrom) via:

        • AWS Systems Manager Parameter Store voor niet‑gevoelige, gedeelde parameters.

        • AWS Secrets Manager voor gevoelige secrets (keys, certificaten, wachtwoorden, …).

  2. Application properties (application.properties). Als de eigenschap niet ingevuld raakt via de eerste strategie, typisch wanneer de Skryv‑applicatie lokaal op een pc draait of in een eenvoudige testomgeving, wordt gekeken naar het gedeployed application.properties‑bestand.

  3. Code default. Indien geen van bovenstaande strategieën lukt, dan wordt de eigenschap ingevuld door een in de code gedefinieerde default waarde. Is er geen default waarde opgegeven, dan zal de applicatie op een error botsen bij het opstarten of bij het eerste gebruik.

Samengevat:

Prioriteit

Bron

Typische gebruikssituatie

1

Environment variables

Cloud‑omgevingen (productie & acceptatie)

2

application.properties

Lokale development of eenvoudige testopstellingen

3

Code default

Fallback, nooit voor secrets of klant‑specifieke data

Anders gezegd: je valt altijd terug op een default, tenzij je deze overschrijft met een specifieke waarde in het application.properties‑bestand, en ook deze kan je terug overschrijven via environment variables die gezet worden door een app.tf‑bestand.

Conversieregels application.properties > Terraform

De applicatie eigenschappen worden lichtjes anders genoteerd in het terraform bestand tegenover het application.properties bestand.

Conversieregels:

  • alle letters worden uppercase.

  • punten (.) worden underscores (_).

  • koppeltekens (-) worden verwijderd.

Application.properties-bestand

Terraform-bestand

myapp.email-service.production.enabled

MYAPP_EMAILSERVICE_PRODUCTION_ENABLED

a

A

.

_

-

Voorbeelden

Application.properties-bestand

Waardes steeds rechtstreeks ingevuld.

CODE
myapp.email-service.production.enabled=true

Terraform-bestand

Gewone configuratie rechtstreeks ingevuld via value.

CODE
{
  name  = "MYAPP_EMAILSERVICE_PRODUCTION_ENABLED",
  value = "true"
},

Niet‑gevoelige gedeelde parameters via AWS Systems Manager Parameter Store (valueFrom).

CODE
{
  name      = "SKRYV_CONNECTORS_DOSIS_ESB_CERTIFICATE"
  valueFrom = aws_ssm_parameter.esb_certificate.name
},

Gevoelige info zoals private keys via AWS Secrets Manager (valueFrom).

CODE
{
  name      = "AWS_GHFCV2_CLIENT_SSL_PRIVATEKEYPATH"
  valueFrom = aws_secretsmanager_secret.myapp_private_key.name
},

Richtlijnen en best practices

Wél

  • Gebruik environment variables als primaire bron voor omgevingsspecifieke configuratie.

  • Gebruik application.properties alleen voor lokale ontwikkeling en niet‑kritische testdata.

  • Gebruik environment variables + Parameter Store voor niet‑gevoelige, gedeelde configuratie.

  • Gebruik Secrets Manager voor alle secrets (wachtwoorden, certificaten, private keys, …).

Níét

  • Commit geen wachtwoorden, API‑keys of certificaten in application.properties of Terraform‑bestanden.

  • Gebruik geen hard‑gecodeerde defaults voor gevoelige of klant‑specifieke waarden.

  • Deel geen waarden van secrets via mail, chat of tickets. Verwijs naar de juiste secret‑naam in Secrets Manager.

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.