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
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:
Omgevingsniveau (ECS task / Terraform)
Application properties (
application.properties)Code default (hard‑gecodeerde default waarde)
De applicatie probeert telkens in deze volgorde:
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.tfofconnectors.tf).
In Terraform kan een waarde:
rechtstreeks ingevuld worden (
value), ofindirect verwezen worden (
valueFrom) via:AWS Systems Manager Parameter Store voor niet‑gevoelige, gedeelde parameters.
AWS Secrets Manager voor gevoelige secrets (keys, certificaten, wachtwoorden, …).
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 gedeployedapplication.properties‑bestand.Code default. Indien geen van bovenstaande strategieën lukt, dan wordt de eigenschap ingevuld door een in de code gedefinieerde
defaultwaarde. 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 |
| 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 |
|---|---|
|
|
a | A |
. | _ |
- |
Voorbeelden
Application.properties-bestand
Waardes steeds rechtstreeks ingevuld.
myapp.email-service.production.enabled=true
Terraform-bestand
Gewone configuratie rechtstreeks ingevuld via value.
{
name = "MYAPP_EMAILSERVICE_PRODUCTION_ENABLED",
value = "true"
},
Niet‑gevoelige gedeelde parameters via AWS Systems Manager Parameter Store (valueFrom).
{
name = "SKRYV_CONNECTORS_DOSIS_ESB_CERTIFICATE"
valueFrom = aws_ssm_parameter.esb_certificate.name
},
Gevoelige info zoals private keys via AWS Secrets Manager (valueFrom).
{
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.propertiesalleen 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.propertiesof 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.
