Skip to main content
Skip table of contents

Wat is een Skryv applicatie?

Concept

Met een Skryv‑applicatie kunnen overheden en publieke organisaties hun dienstverlening digitaliseren via een samenstelling van netwerk‑ en infrastructuurcomponenten die zowel de opzet als het operationeel beheer ervan faciliteren. Skryv-applicaties worden vormgegeven volgens agnostische architectuurprincipes en kunnen op om het even welke omgeving uitgerold worden. Dit kan een cloudomgeving op basis van managed services zijn, maar een self-managed cloudomgeving of een lokale on-premise server behoren eveneens tot de mogelijkheden. Deze vrijheid betekent dat overheden 100% controle blijven behouden over hun applicatie en onderliggende infrastructuur.

AWS-cloudomgeving als default

Als default stelt Skryv een AWS‑gebaseerde cloudomgeving voor, gebruikmakend van managed en waar mogelijk serverless services. Dit biedt voordelen op het vlak van schaalbaarheid, continuïteit, onderhoud en veiligheid. Het Skryv‑platform voorziet out‑of‑the‑box de nodige technische interfaces (API’s, configuratie, tooling) om met deze AWS‑services te interageren. Voor de relevante componenten zijn bijkomende interfaces voorzien die gericht zijn op self‑hosted of open‑source alternatieven. In de praktijk worden deze alternatieven vooral gebruikt door ontwikkelaars die lokaal (op hun eigen pc of laptop) een miniatuurversie van de applicatie willen uitrollen voor ontwikkelings‑ en testdoeleinden. Op aanvraag kan Skryv extra interfaces of adapters toevoegen voor organisaties die kiezen voor andere cloudoplossingen (bijvoorbeeld Azure of een private cloud).

High-level architecturale beschrijving

Elke Skryv‑applicatie kan op hoog niveau beschreven worden in twee lagen:

  1. Netwerklaag: bevat de netwerkcomponenten die bepalend zijn voor de omgeving en de toegang zoals DNS, netwerksegmentatie, firewalls, load balancing en de container runtime.

  2. Infrastructuurlaag: bestaat uit drie sublagen:

    • State‑laag: stateful componenten zoals databases, message queues, zoekindexen en identity providers die instaan voor persistente opslag en beschikbaarheid van data binnen de scope van de applicatie.

    • Compute‑laag: computationele componenten die samen de back‑end van de applicatie vormen en verantwoordelijk zijn voor de operationele uitvoering van de dienstverlening (bijvoorbeeld de workflow engine en Spring Boot‑gebaseerde Skryv‑services).

    • User interface‑laag: frontoffice en backoffice, twee JavaScript‑gebaseerde webapplicaties die fungeren als user interfaces voor aanvragers en dossierbehandelaars.

Onderstaande secties lichten per laag toe welke concrete AWS‑services gebruikt kunnen worden en welke self‑hosted alternatieven in aanmerking komen.

Netwerkcomponenten

Hieronder een overzicht van de belangrijkste netwerkcomponenten en hoe die concreet ingevuld kunnen worden via een AWS-service of via een self-hosted alternatief.

Component

AWS-service

Self-hosted alternatief

DNS-hosting & DNS-beheer

Route 53

Bestaande DNS-infrastructuur van de organisatie (BIND, Microsoft DNS)

CDN (Content Delivery Network)

CloudFront

Eigen reverse proxy of cachinglaag (Nginx/Apache), al dan niet zonder extern CDN

Netwerk, netwerksegmenten en firewalls

VPC (Virtual Private Cloud), Subnets & Security Groups

Netwerkconfiguratie in eigen datacenter of lokale omgeving: VLANs, subnetten en firewalls

Load balancing

Elastic Load Balancing (ALB/NLB)

Nginx, HAProxy of Traefik

Container runtime voor applicaties

ECS (met Fargate als serverless container runtime)

Docker op bare metal of VM, eventueel met Docker Compose of Kubernetes

Infrastructuur componenten

De infrastructuur bestaat uit state componenten, compute componenten en user interface componenten en wordt gedefinieerd, geconfigureerd en geïnstalleerd op basis van bestanden opgeslagen in de applicatie repository en resources (libraries) opgeslagen in de Skryv artifactory.

Meer functionele uitleg over onderstaande componenten, samen met een gedetailleerde architecturale tekening, vind je terug op de pagina Wat is Skryv platform?.

State

Component

AWS-service

Self-hosted alternatief

Database

Amazon RDS (managed service)

MySQL 8 via Docker

Queuing systeem

Amazon MQ (managed service)

Rabbit MQ via Docker

Zoekmotor

Amazon ES (managed service)

ElasticSearch via Docker

Identity provider

Containerized (via ECS + Fargate)

KeyCloak via Docker

Compute

Component

AWS-service

Self-hosted alternatief

Workflow engine (Camunda)

Containerized (via ECS + Fargate)

Spring Boot app (bereikbaar via localhost of intern URL)

Skryv back-end services

Containerized (via ECS + Fargate)

Via Spring Boot app (bereikbaar via localhost of intern URL)

Information engine (DocMod)

Containerized (via ECS + Fargate) of als lambda-functie

DocMod via Docker

Exposed API (publieke REST/JSON‑endpoints voor integraties)

Containerized API‑service op ECS + Fargate, ontsloten via ALB of API Gateway

Spring Boot/Node.js API als Docker‑container of op VM, ontsloten via reverse proxy (Nginx/Apache) in het eigen netwerk

Rapportage API

Containerized (via ECS + Fargate), ontsloten via API Gateway (mTLS)

Spring Boot API als Docker-container, ontsloten via reverse proxy (mTLS)

User interfacing

Deze user interfaces worden gehost door de back-end van de applicatie zelf. Hiervoor moet dus geen extra infrastructuur opgezet worden.

Component

AWS-service

Self-hosted

Backoffice (JavaScript-gebaseerde webapplicatie)

Containerized (via ECS + Fargate)

Webserver ontsloten via interne reverse proxy

Frontoffice (JavaScript-gebaseerde webapplicatie)

Containerized (via ECS + Fargate)

Webserver ontsloten via interne reverse proxy

Ondersteunende componenten

Een Skryv‑applicatie maakt typisch gebruik van onderstaande ondersteunende componenten. Voor elk component verwijzen we naar de bijhorende AWS‑service of naar enkele self‑hostable alternatieven. Alternatieve oplossingen zijn mogelijk zolang ze functioneel equivalent zijn (API‑toegang, security‑model en netwerkconnectiviteit die compatibel zijn met de Skryv‑applicatie).

Service

AWS-service

Self-hosted

Secrets vault

AWS Secrets Manager

Omgevingsvariabelen

Configuration en automation management tool

Systems Manager

Vrij te kiezen (bv. Ansible, SaltStack, Puppet)

TLS/SSL-certificate store

AWS Certificate Manager

Vrij te kiezen certificate store of PKI‑oplossing (bijv. eigen PKI, HashiCorp Vault PKI)

Opslag en beheer van container images

ECR (Elastic Container Registry)

Vrij te kiezen container registry (bijv. Harbor, GitLab Container Registry, Docker Registry)

Operationele uitrol van container images

ECS (Elastic Container Services)

Vrij te kiezen container orchestrator (bijv. Kubernetes, Docker Swarm, Nomad)

CI/CD-tool

CodePipeline + CodeBuild

Vrij te kiezen CI/CD‑platform (bijv. Jenkins, GitLab CI, GitHub Actions, Azure DevOps)

Object storage (opslag van bijlagen en PDF-documenten)

S3

Self‑hosted object storage (bijv. MinIO, Ceph, on‑prem object store)

Monitoring (logs & incidenten)

Cloudwatch

Bestaande logging/monitoring‑stack (bijv. ELK/OpenSearch, Prometheus/Grafana, Loki, Splunk)

Email service (uitsturen van e-mails vanuit de dienstverlening)

AWS Simple E-mail Service

SMTP‑ of e‑mail delivery‑service (bijv. Postal, Postfix, Mailgun, SendGrid)

Git repository

AWS CodeCommit

Vrij te kiezen git‑hostingoplossing (bijv. GitHub, GitLab, Bitbucket, Gitea)

Development & configuration tools

-

Lokale IDE (bijv. IntelliJ, VS Code) en Skryv Studio (lokaal of online)

JavaScript errors detected

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

If this problem persists, please contact our support.