Wat zijn applicatie eigenschappen?
Concept
Applicatie eigenschappen, ook wel omgevingsvariabelen genoemd, zijn variabelen die het gedrag van de applicatie sturen en die anders ingevuld worden naargelang de specifieke omgeving waar de applicatie opgezet wordt. Doorgaans onderscheiden we vier types omgevingen: ontwikkeling, test, acceptatie en productie.
Het gebruik van omgevingsvariabelen zorgt ervoor dat de applicatie flexibel gedeployed kan worden in verschillende omgevingen, met veilig beheer van cruciale secrets.
Applicatie eigenschappen of omgevingsvariabelen zijn vooral van belang bij de setup van de applicatie of van een component binnen de applicatie (denk bijvoorbeeld aan een connector).
Oplijsting applicatie eigenschappen
Invulling eigenschappen
Binnen Skryv platform is er een procedure opgezet die de applicatie eigenschappen invult binnen de context van elke specifieke omgeving. De procedure bestaat uit twee strategieën. Als de eerste strategie faalt, wordt de tweede strategie aangesproken bij wijze van fall-back. Indien ook deze niet werkt, dan is er nog een derde en laatste strategie.
Vanuit ECS task definition, manueel ingevuld of op basis van een gedeployed terraform-bestand (bijv.
app.tfofconnectors.tf) of via Zarn-states (specifieke voor lokale besturen apps). Eventueel wordt daarbij verwezen naar een variabele binnen de AWS Systems Manager Parameter Store. Voor gevoelige informatie (denk bijvoorbeeld aan keys of certificaten) wordt typisch verwezen naar AWS Secrets Manager.Indien de eigenschap niet ingevuld raakt via de eerste strategie, typisch wanneer de Skryv applicatie opgezet is binnen een testomgeving op een lokale pc, dan kijkt Skryv naar het gedeployed applicatie eigenschappen (
application.properties) bestand.Indien geen van bovenstaande strategieën lukt, dan wordt de applicatie eigenschap ingevuld door een in de code gedefinieerde
defaultwaarde. Is er geen default waarde opgegeven, dan zal de applicatie op een error botsen.
Anders gezegd: je valt altijd terug op een default, tenzij je deze overschrijft met een specifieke waarde binnen het application.properties bestand, en ook deze kan je terug overschrijven via een app.tf terraform-bestand of via Zarn-states.
Voorbeelden
De applicatie eigenschappen worden lichtjes anders genoteerd in het terraform bestand tegenover het application.properties bestand.
Terraform-bestand | Application.properties-bestand |
|---|---|
|
|
_ | . |
A | a |
- |
Terraform-bestand
Waarde rechtstreeks ingevuld.
{
name = "MYAPP_EMAILSERVICE_PRODUCTION_ENABLED",
value = "true"
},
Waarde ingevuld via verwijzing naar AWS System Manager Parameter Store.
{
name = "SKRYV_CONNECTORS_DOSIS_ESB_CERTIFICATE"
valueFrom = aws_ssm_parameter.esb_certificate.name
},
Gevoelige info zoals private keys worden ingevuld via verwijzing naar AWS Secrets Manager.
{
name = "AWS_GHFCV2_CLIENT_SSL_PRIVATEKEYPATH"
valueFrom = aws_secretsmanager_secret.mayapp_private_key.name
},
Application.properties-bestand
Waardes steeds rechtstreeks ingevuld.
myapp.email-service.production.enabled=true
