Naar de inhoud
Terug naar Resources
Architectuur8 min leestijdBijgewerkt op , gepubliceerd op 

Architectuur Referentie

Referentiearchitectuur van het Noveu-platform voor architecten en technische beslissers: de principes, de componenten en hoe de lagen samenwerken.

Architectuur Referentie

Overzicht

Dit document beschrijft de referentiearchitectuur van het Noveu platform, bedoeld voor architects en technische beslissers.

Architectuurprincipes

1. Waar data staat

  • Gegevens en back-ups in een Hetzner-datacenter in Falkenstein (Duitsland)
  • Geen US-cloudproviders (AWS, Azure, GCP) voor primaire data; Cloudflare (VS) zit aan de rand van het netwerk
  • Transparante supply chain

2. Modulairiteit

  • Loosely coupled services
  • Vervangbare componenten
  • API-first design

3. Resilience

  • Alles draait vandaag op één fysieke server bij Hetzner; dat is een single point of failure
  • Een extra back-upkopie buiten deze server, ook in Falkenstein, is in voorbereiding

4. Security by Design

  • Netwerken per dienst achter firewalls
  • Defense in depth
  • Encryption in transit (TLS 1.2 of hoger, TLS 1.3 wordt ondersteund); versleuteling at rest wordt ingevoerd (gepland oktober 2026)

Logische Architectuur

┌─────────────────────────────────────────────────────────────────────┐
│                         PRESENTATION LAYER                          │
│  ┌─────────┐  ┌─────────┐  ┌─────────┐  ┌─────────┐  ┌─────────┐   │
│  │   Web   │  │ Desktop │  │ Mobile  │  │ Klant-  │  │   API   │   │
│  │  Portal │  │(gepland)│  │(gepland)│  │ portaal │  │ Gateway │   │
│  └────┬────┘  └────┬────┘  └────┬────┘  └────┬────┘  └────┬────┘   │
└───────┼────────────┼────────────┼────────────┼────────────┼────────┘
        │            │            │            │            │
        └────────────┴────────────┼────────────┴────────────┘
                                  │
                          ┌───────┴───────┐
                          │  API Gateway  │
                          │   + AuthN     │
                          └───────┬───────┘
                                  │
┌─────────────────────────────────┼─────────────────────────────────┐
│                      APPLICATION LAYER                             │
│  ┌─────────┐  ┌─────────┐  ┌─────────┐  ┌─────────┐  ┌─────────┐  │
│  │  Mail   │  │Calendar │  │  Files  │  │  Chat   │  │   AI    │  │
│  │ Service │  │ Service │  │ Service │  │ Service │  │ Service │  │
│  └────┬────┘  └────┬────┘  └────┬────┘  └────┬────┘  └────┬────┘  │
└───────┼────────────┼────────────┼────────────┼────────────┼───────┘
        │            │            │            │            │
        └────────────┴────────────┼────────────┴────────────┘
                                  │
┌─────────────────────────────────┼─────────────────────────────────┐
│                       PLATFORM LAYER                               │
│  ┌─────────┐  ┌─────────┐  ┌─────────┐  ┌─────────┐  ┌─────────┐  │
│  │Identity │  │  Notif- │  │Observa- │  │ Compli- │  │ Backup  │  │
│  │   IAM   │  │ ication │  │ bility  │  │  ance   │  │         │  │
│  └────┬────┘  └────┬────┘  └────┬────┘  └────┬────┘  └────┬────┘  │
└───────┼────────────┼────────────┼────────────┼────────────┼───────┘
        │            │            │            │            │
        └────────────┴────────────┼────────────┴────────────┘
                                  │
┌─────────────────────────────────┼─────────────────────────────────┐
│                     INFRASTRUCTURE LAYER                           │
│  ┌─────────┐  ┌─────────┐  ┌─────────┐  ┌─────────┐  ┌─────────┐  │
│  │ Docker  │  │ Object  │  │ Block   │  │  DNS/   │  │ Secrets │  │
│  │ (VM's)  │  │ Storage │  │ Storage │  │   CDN   │  │(gepland)│  │
│  └─────────┘  └─────────┘  └─────────┘  └─────────┘  └─────────┘  │
└───────────────────────────────────────────────────────────────────┘

Componenten Detail

Presentation Layer

ComponentTechnologieFunctie
Web PortalReact, Next.jsBrowser-based UI
Desktop ClientTauriBestanden op je computer (gepland, zie de roadmap)
Mobile AppsNog niet beschikbaariOS en Android (gepland)
KlantportaalReact, Next.jsFacturatie, gebruikers en instellingen
API GatewayNestJS (eigen gateway)Request routing, auth

Application Layer

ServiceVerantwoordelijkheidStorage
Mail ServiceIMAP/SMTP, filtering, archivingObject + DB
Calendar ServiceCalDAV, schedulingPostgreSQL
Files ServiceREST API, versioning (geen WebDAV); desktop-sync in ontwikkelingObject + DB
Chat ServiceRealtime messaging (Berichten, beta)PostgreSQL + Redis
AI ServiceLLM (Mistral AI, EU), RAG, on-prem embeddings (bge-m3/TEI)pgvector (self-hosted, EU)

Platform Layer

ComponentTechnologieFunctie
Identity (IAM)ZitadelInloggen (OIDC), MFA en gebruikersbeheer
NotificationCustom (noveu-notification-service)Transactionele en systeemnotificaties, kanaalroutering
ObservabilityPrometheus, Grafana, GlitchTipMetrics, dashboards, foutmeldingen
ComplianceCustomAudit en rapportage (gepland)
BackupDagelijkse back-upsVersleuteling van back-ups wordt ingevoerd (gepland oktober 2026), zie Backup Strategy

Infrastructure Layer

ComponentSpecificatieRedundantie
ComputeDedicated server bij Hetzner (Proxmox VE) in FalkensteinEén fysieke server
StorageOpslag op dezelfde serverGeen replicatie naar een tweede server
Back-upsDagelijkse back-ups in FalkensteinEen extra back-upkopie buiten deze server, ook in Falkenstein, is in voorbereiding
DNS/CDNCloudflare (VS) aan de rand van het netwerkGeen EU-dienst

Deployment Architectuur

Multi-Tenant (SaaS)

┌────────────────────────────────────────────┐
│              Shared Control Plane           │
│  ┌────────┐  ┌────────┐  ┌────────┐        │
│  │  IAM   │  │ Billing│  │Provisn │        │
│  └────────┘  └────────┘  └────────┘        │
└────────────────────────────────────────────┘
              │         │         │
    ┌─────────┘         │         └─────────┐
    ▼                   ▼                   ▼
┌────────┐         ┌────────┐         ┌────────┐
│Tenant A│         │Tenant B│         │Tenant C│
│ (Data) │         │ (Data) │         │ (Data) │
└────────┘         └────────┘         └────────┘

Dedicated Tenant

Nog niet beschikbaar. Een eigen omgeving per klant is een toekomstige optie op offerte.

┌────────────────────────────────────────────┐
│         Dedicated Control Plane             │
│  ┌────────┐  ┌────────┐  ┌────────┐        │
│  │  IAM   │  │ Config │  │  Ops   │        │
│  └────────┘  └────────┘  └────────┘        │
└────────────────────────────────────────────┘
                      │
                      ▼
┌────────────────────────────────────────────┐
│       Dedicated Data Plane (Customer)       │
│  ┌────────┐  ┌────────┐  ┌────────┐        │
│  │  Apps  │  │  Data  │  │Network │        │
│  └────────┘  └────────┘  └────────┘        │
└────────────────────────────────────────────┘

Data Flow

E-mail Ontvangst

Internet ─► MX ─► Antispam ─► Policy ─► Delivery ─► Mailbox
                    │           │           │
                    ▼           ▼           ▼
                 [Block]    [Quarantine]  [Store]
                    │           │           │
                    └───────────┴───────────┘
                              │
                              ▼
                         [Audit Log]

Authenticatie Flow

User ─► Client ─► API Gateway ─► IAM ─► Service
                      │          │         │
                      │    ┌─────┘         │
                      │    ▼               │
                      │  [Token]           │
                      │    │               │
                      └────┼───────────────┘
                           │
                           ▼
                    [Validate + Authorize]
                           │
                           ▼
                      [Response]

Security Architecture

Network Zones

ZoneComponentsIngressEgress
EdgeCloudflare (VS), met Tunnel naar de serverInternetPlatform
PlatformDiensten, databases en opslag op één VMEdgeExterne diensten waar nodig
MailMailserver op een eigen VMInternet (SMTP, IMAP)Internet
MgmtMonitoring en beheerAlleen via SSH over de Proxmox-hostPlatform

Diensten en databases draaien nu op dezelfde VM; een aparte datazone is er nog niet.

Encryption

LayerMechanismKey Management
TransportTLS 1.2 of hogerCloudflare aan de rand; Let's Encrypt op de mailserver
ApplicationS/MIME (in ontwerp), PGP (nog niet beschikbaar)Nog niet van toepassing
Storage (volume)Nog niet versleuteld; wordt ingevoerd (gepland oktober 2026)Vault, per-tenant (gepland)
BackupVersleuteling van alle back-ups wordt ingevoerd (gepland oktober 2026)Aparte sleutel-hiërarchie (gepland)

Integration Patterns

Synchronous

Client ──► API Gateway ──► Service ──► Response
              │               │
              │          ┌────┴────┐
              │          ▼         ▼
              │      [Cache]   [Database]
              │
              └► [Rate Limit] [Circuit Breaker]

Disaster Recovery

Herstel

Back-ups staan in het Hetzner-datacenter in Falkenstein (Duitsland), op een aparte schijf en VM. Versleuteling van back-ups en opslag at rest wordt ingevoerd (gepland oktober 2026). Herstel gebeurt vanuit die back-ups. De SLA noemt geen vaste hersteltermijn. Een extra kopie buiten deze server, ook in Falkenstein, is in voorbereiding; periodieke hersteltests staan gepland.

Backup Strategy

Back-ups     ─► Hetzner-datacenter Falkenstein (DE)

Capaciteit

Er zijn nog geen gemeten richtwaarden per aantal gebruikers. Capaciteit voor een organisatie spreken we af op offerte.

Technology Choices

CategoryChoiceRationale
ContainersDocker op VM's; Coolify voor de website en de loginpaginaEenvoudig beheer op één fysieke server (Proxmox)
MonitoringPrometheus, Grafana en Uptime KumaMetrics, dashboards, beschikbaarheid en alarmering
Error trackingGlitchTipFoutmeldingen, geen centrale logaggregatie of tracing
DatabasePostgreSQLBetrouwbaar, open source
CacheRedisPerformance, pub/sub
Object storageMinIO (S3-compatibel)In productie in Falkenstein; SeaweedFS draait er al naast MinIO, de overstap van de bestandsdienst is gepland

Laatste wijziging (05-10-2026): de sectie Capaciteit noemt geen cijfers per aantal gebruikers meer, want er zijn geen gemeten richtwaarden; de regel over graceful degradation is weg, daarvoor is geen bron; de rij Object storage noemt de gemeten stand (MinIO in productie, SeaweedFS draait er al naast, overstap gepland). Eerder: versleuteling van back-ups en opslag at rest staat als "wordt ingevoerd", volgens de gemeten stand.
Architectuur kan variëren per deployment model

Lees verder

Wat is je volgende stap?

Wil je weten hoe dit er voor jouw organisatie uitziet? Bekijk hoe Noveu het aanpakt, of plan een gesprek.

Meer resources bekijken