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
| Component | Technologie | Functie |
|---|---|---|
| Web Portal | React, Next.js | Browser-based UI |
| Desktop Client | Tauri | Bestanden op je computer (gepland, zie de roadmap) |
| Mobile Apps | Nog niet beschikbaar | iOS en Android (gepland) |
| Klantportaal | React, Next.js | Facturatie, gebruikers en instellingen |
| API Gateway | NestJS (eigen gateway) | Request routing, auth |
Application Layer
| Service | Verantwoordelijkheid | Storage |
|---|---|---|
| Mail Service | IMAP/SMTP, filtering, archiving | Object + DB |
| Calendar Service | CalDAV, scheduling | PostgreSQL |
| Files Service | REST API, versioning (geen WebDAV); desktop-sync in ontwikkeling | Object + DB |
| Chat Service | Realtime messaging (Berichten, beta) | PostgreSQL + Redis |
| AI Service | LLM (Mistral AI, EU), RAG, on-prem embeddings (bge-m3/TEI) | pgvector (self-hosted, EU) |
Platform Layer
| Component | Technologie | Functie |
|---|---|---|
| Identity (IAM) | Zitadel | Inloggen (OIDC), MFA en gebruikersbeheer |
| Notification | Custom (noveu-notification-service) | Transactionele en systeemnotificaties, kanaalroutering |
| Observability | Prometheus, Grafana, GlitchTip | Metrics, dashboards, foutmeldingen |
| Compliance | Custom | Audit en rapportage (gepland) |
| Backup | Dagelijkse back-ups | Versleuteling van back-ups wordt ingevoerd (gepland oktober 2026), zie Backup Strategy |
Infrastructure Layer
| Component | Specificatie | Redundantie |
|---|---|---|
| Compute | Dedicated server bij Hetzner (Proxmox VE) in Falkenstein | Eén fysieke server |
| Storage | Opslag op dezelfde server | Geen replicatie naar een tweede server |
| Back-ups | Dagelijkse back-ups in Falkenstein | Een extra back-upkopie buiten deze server, ook in Falkenstein, is in voorbereiding |
| DNS/CDN | Cloudflare (VS) aan de rand van het netwerk | Geen 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
| Zone | Components | Ingress | Egress |
|---|---|---|---|
| Edge | Cloudflare (VS), met Tunnel naar de server | Internet | Platform |
| Platform | Diensten, databases en opslag op één VM | Edge | Externe diensten waar nodig |
| Mailserver op een eigen VM | Internet (SMTP, IMAP) | Internet | |
| Mgmt | Monitoring en beheer | Alleen via SSH over de Proxmox-host | Platform |
Diensten en databases draaien nu op dezelfde VM; een aparte datazone is er nog niet.
Encryption
| Layer | Mechanism | Key Management |
|---|---|---|
| Transport | TLS 1.2 of hoger | Cloudflare aan de rand; Let's Encrypt op de mailserver |
| Application | S/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) |
| Backup | Versleuteling 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
| Category | Choice | Rationale |
|---|---|---|
| Containers | Docker op VM's; Coolify voor de website en de loginpagina | Eenvoudig beheer op één fysieke server (Proxmox) |
| Monitoring | Prometheus, Grafana en Uptime Kuma | Metrics, dashboards, beschikbaarheid en alarmering |
| Error tracking | GlitchTip | Foutmeldingen, geen centrale logaggregatie of tracing |
| Database | PostgreSQL | Betrouwbaar, open source |
| Cache | Redis | Performance, pub/sub |
| Object storage | MinIO (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
- NaslagWaar je gegevens staan en onder welk rechtDe verklaring over dataresidentie, met de sub-verwerker die de uitzondering is.
- NaslagKoppelingen: inloggen, de API en meerPer methode wat er mogelijk is.
- BlogDrie vragen over digitale soevereiniteit voor je leveranciersWaar staan je gegevens, wie kan erbij en kun je weer weg?
Wat is je volgende stap?
Wil je weten hoe dit er voor jouw organisatie uitziet? Bekijk hoe Noveu het aanpakt, of plan een gesprek.