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:
Netwerklaag: bevat de netwerkcomponenten die bepalend zijn voor de omgeving en de toegang zoals DNS, netwerksegmentatie, firewalls, load balancing en de container runtime.
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 |
|---|---|---|
Amazon RDS (managed service) | MySQL 8 via Docker | |
Amazon MQ (managed service) | Rabbit MQ via Docker | |
Amazon ES (managed service) | ElasticSearch via Docker | |
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 |
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) |
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) |
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) |
