Architecture
The Notifications solution in Altinn is made up of multiple ASP.NET Web API applications deployed as Docker containers to a Kubernetes cluster.
System architecture illustration
The solution is supported by multiple cron jobs running in the same Kubernetes cluster, a Kafka server and an instance of Azure Communication services.
The following diagram illustrates the overall data flow.
Process flow between microservices and Kafka topics
System and service dependencies
Internal
- Altinn Authorization: used to authorize access to endpoints
- Altinn Profile: used to retrieve recipient information
- Altinn Register: used to retrieve recipient information
The number of internal dependencies for Notifications is currently quite limited, but during 2024 we expect the services below to be utilized by Notifications.
- Altinn Storage: used to retrieve status for Altinn app instances to evaluate send conditions
External
- Azure Kubernetes Services: hosts the docker containers for microservices and cron jobs in a fully managed Kubernetes cluster
- Kafka on Confluent cloud: hosts the kafka cluster the microservices consumes and produces messages to. Say something about why we use kafka vs something else. E.g. storage queues
- PostgreSQL: used for storage
- Azure Communication Services: used to send emails
- Azure Event Grid: used to subscribe to status updates for sent emails
- LINK Mobility used to send sms
- Maskinporten used to generate tokens for external REST API requests