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)
- Cloudflare (VS) zit aan de rand van het netwerk
- Transparante supply chain
2. Modulairiteit
- Loosely coupled services
- Vervangbare componenten
- API-first design
3. Resilience
- Dedicated server bij Hetzner
- Elke nacht een versleutelde kopie van de databases en de mail in aparte objectopslag bij Hetzner, buiten deze server en ook in Falkenstein
4. Security by Design
- Back-ups worden versleuteld opgeslagen
- Defense in depth
- Encryption in transit (TLS 1.2 of hoger, TLS 1.3 wordt ondersteund)
Logische Architectuur
Web Portal en Klantportaal
|
API Gateway
|
Mail, Agenda, Bestanden en Chat (beta)
|
Identiteit, notificaties, monitoring en back-ups
|
Dedicated server bij Hetzner, Falkenstein
Componenten Detail
Presentation Layer
| Component | Technologie | Functie |
|---|
| Web Portal | React, Next.js | Browser-based UI |
| Klantportaal | React, Next.js | Abonnementen, facturen en supporttickets |
| API Gateway | NestJS (eigen gateway) | Request routing, auth |
Application Layer
| Service | Verantwoordelijkheid | Storage |
|---|
| Mail Service | IMAP/SMTP, filtering | Object + DB |
| Calendar Service | CalDAV, scheduling | PostgreSQL |
| Files Service | REST API, versioning | Object + DB |
| Chat Service (beta) | Realtime messaging | PostgreSQL + Redis |
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 |
| Backup | Back-ups | Zie Backup Strategy; back-ups worden versleuteld opgeslagen |
Infrastructure Layer
| Component | Specificatie | Redundantie |
|---|
| Compute | Dedicated server bij Hetzner (Proxmox VE) in Falkenstein | Eén fysieke server |
| Storage | Opslag op dezelfde server | |
| Back-ups | Back-ups in Falkenstein | Elke nacht een versleutelde kopie van de databases en de mail in aparte objectopslag bij Hetzner, buiten deze server en ook in Falkenstein |
| DNS/CDN | Cloudflare (VS) aan de rand van het netwerk | |
Deployment Architectuur
Multi-Tenant (SaaS)
┌────────────────────────────────────────────┐
│ Shared Platform │
│ ┌────────┐ ┌────────┐ ┌────────┐ │
│ │ IAM │ │ Billing│ │Provisn │ │
│ └────────┘ └────────┘ └────────┘ │
└────────────────────────────────────────────┘
│ │ │
┌─────────┘ │ └─────────┐
▼ ▼ ▼
┌────────┐ ┌────────┐ ┌────────┐
│Tenant A│ │Tenant B│ │Tenant C│
│ (Data) │ │ (Data) │ │ (Data) │
└────────┘ └────────┘ └────────┘
Data Flow
E-mail Ontvangst
Internet ─► MX ─► Antispam ─► Delivery ─► Mailbox
│ │
▼ ▼
[Block] [Store]
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 |
| Mail | 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 op dezelfde VM.
Encryption
| Layer | Mechanism | Key Management |
|---|
| Transport | TLS 1.2 of hoger | Cloudflare aan de rand; Let's Encrypt op de mailserver |
| Backup | Back-ups worden versleuteld opgeslagen | |
Integration Patterns
Synchronous
Client ──► API Gateway ──► Service ──► Response
│ │
│ ┌────┴────┐
│ ▼ ▼
│ [Cache] [Database]
│
└► [Rate Limit]
Disaster Recovery
Herstel
Back-ups staan in het Hetzner-datacenter in Falkenstein (Duitsland), op een aparte schijf en VM. Back-ups worden versleuteld opgeslagen. Herstel gebeurt vanuit die back-ups. Elke nacht gaat een versleutelde kopie van de databases en de mail naar aparte objectopslag bij Hetzner, buiten deze server en ook in Falkenstein.
Backup Strategy
Back-ups ─► Hetzner-datacenter Falkenstein (DE)
Capaciteit
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 |
| Database | PostgreSQL | Betrouwbaar, open source |
| Cache | Redis | Performance, pub/sub |
| Object storage | MinIO (S3-compatibel) | In productie in Falkenstein |