Zweiundvierzig Services, ein gesteuertes Dokument.
Data & More ist eine mandantenfähige DSGVO- und Data-Governance-Plattform. Sie stellt eine Verbindung zu den E-Mail-, Dateispeicher- und Chat-Systemen einer Organisation her, scannt die gefundenen Inhalte, erstellt ein Profil jedes Dokuments hinsichtlich personenbezogener Daten und setzt Aufbewahrungs- und Löschrichtlinien durch. So fügen sich die Komponenten zusammen: eine polyglotte Microservices-Landschaft mit einer einzigen zentralen Datenquelle.
Sie können nicht verwalten, was Sie nicht zuerst gelesen, klassifiziert und verstanden haben.
~42Microservices
2Kernsprachen (Python, Java)
7Pipeline-Stufen, von der Quelle bis zum Bericht
1gemeinsamer Datenspeicher: Elasticsearch
Abschnitt 01Architektur
Die Plattform auf einen Blick
Jede Anfrage gelangt über einen TLS-terminierenden NGINX-Proxy und wird an die Anwendungsebene weitergeleitet: den Vue-Client, die zentrale Flask-API sowie die IAM-, Analytics- und LLM-Services. Die API übergibt zeitaufwändige Aufgaben an ein asynchrones Backbone aus Celery-Workern über RabbitMQ, das auch die Scan-, Ingest- und Enforce-Ereignisse für die Java-Ebene transportiert. Die rechenintensiven Aufgaben (Quellen crawlen, Text extrahieren, Richtlinien durchsetzen) werden in dieser Java-Ebene ausgeführt. Darunter befindet sich die Datenschicht mit Elasticsearch als gemeinsamem Dokumentenspeicher für alle Services.
Anfrage- und DatenpfadPersistenter Speicher / AusgabeUnterkomponente innerhalb einer Ebene
Abschnitt 02Datenfluss
Von einer Rohdatenquelle bis zur durchgesetztenRichtlinie
Ein Dokument durchläuft jedes Mal denselben Prozess. Eine Quelle wird einmalig konfiguriert; anschließend durchsucht die Plattform sie, extrahiert den Text, erstellt ein Profil auf personenbezogene Daten, prüft es gegen die Richtlinien des Mandanten, handelt entsprechend dem Ergebnis und meldet das Resultat. Kostengünstige, deterministische Schritte werden zuerst ausgeführt; die aufwändigen KI- und Durchsetzungsschritte laufen nur für das, was sie erreicht.
Hauptpipeline-PfadGemeinsamer Speicher, der in jeder Stufe genutzt wirdAusgabe an den Benutzer
Abschnitt 03Frontend
Die Vue 3 Single-Page-Anwendung
Der Client ist eine individuell entwickelte Single-Page-Anwendung ohne vorgefertigte Komponentenbibliothek, gestaltet mit einem eigenen SCSS-Designsystem. Hier verbinden Administratoren Quellen, erstellen Klassifizierungsregeln, verwalten Richtlinien, lesen Berichte und kommunizieren mit Dokumenten über das RAG-Chat-Modul. Rollenbasierte Ansichten passen die Oberfläche an die jeweilige Persona an.
Enthaltene Funktionen
Mandantenfähiges Dashboard mit rollenbasierten Ansichten für Admin, Adminlite, AD, PM und DPO.
Dokumenten-Browser mit Baum- und Rasterlayouts sowie PDF-, Word- und JSON-Vorschau.
Klassifizierungs-Builder für Tags, Wörterbücher, Algorithmen und Dokumentklassen.
Richtlinienverwaltung für DSGVO-Aufbewahrungs- und Löschregeln.
Chat / LLM-Modul, ein RAG-Assistent für indizierte Dokumente mit Streaming-Antworten.
Quellen-Assistenten für Exchange, SharePoint, Google, IMAP und Dateifreigaben.
Frontend-Stack
Framework
Vue 3.5
Build
Vite 6 · TS 5.9
State
Vuex 4.1
Router
Vue Router 4.6
i18n
24+ Sprachen
Charts
Chart.js
HTTP
Axios + JWT
~400 Routen · 281 Komponenten · 35+ API-Module
Abschnitt 04Python-Ebene
Die Anwendungs- und KI-Dienste
Die Python-Ebene beherbergt das Herzstück der Plattform: die zentrale API, Identitätsverwaltung, Analysen, den LLM- und Chat-Stack, OCR, Datenverlustprävention sowie den spaCy-basierten KI-Profiler, der an anderer Stelle beschrieben wird. Die meisten Dienste laufen mit Flask hinter Gunicorn; Benachrichtigungen laufen auf FastAPI.
Datenverlustprävention, Webhook- und Regex-Scanning
py-dm-notify
FastAPI · Uvicorn
8002
Echtzeit-Benachrichtigungen und E-Mail, asynchrones Pub/Sub
ai-profiler
Flask · Gunicorn
n/a
spaCy NER und Wörterbuch-Profiling, 11+ Sprachen
alerts
Celery Worker
n/a
Hintergrundverarbeitung von Warnmeldungen über RabbitMQ
Hub
Haupt-API
Python 3.12, Flask 3, Celery 5.4, SQLAlchemy 2. Verantwortlich für Dokument- und Quell-CRUD, Richtlinien, Benutzer, Abrechnung (Stripe, HubSpot), externe Integrationen sowie Celery Worker für die Neuindizierung und Massenverarbeitung.
Identität
IAM
JWT-Authentifizierung mit RSA-Schlüsselpaaren, LDAP und Active Directory für Enterprise-SSO, rollenbasierte Zugriffskontrolle sowie Alembic-verwaltete Migrationen. Die Mandantenverwaltung ist hier angesiedelt.
Einblick
Analytics
Statistische und ML-basierte Auswertung gescannter Daten, Plotly-Diagramme als statische Bilder exportiert, PDF-Berichte via WeasyPrint sowie eine lokale Ollama-Option für KI-gestützte Analysen.
Abschnitt 05Java-Ebene
Die leistungsstarke Verarbeitung-Engine
java_core
Scannen, erfassen, durchsetzen
Java 11, ausgeführt als Message Consumer in unterschiedlichen Modi. Es ist das Arbeitspferd, das die eigentlichen Daten verarbeitet.
SCAN durchsucht Postfächer, Websites und Freigaben.
INGEST extrahiert Text mit Apache Tika in Elasticsearch.
DELTA verarbeitet inkrementelle Aktualisierungen.
CLEANUP entfernt veraltete Daten.
Die Durchsetzung findet hier ebenfalls statt: PolicyValidator prüft Dokumente anhand von Regeln, PolicyEnforcer führt Lösch-, Verschiebe-, Kennzeichnungs-, Zurücksetzungs- oder Leerlaufaktionen aus.
Service
Framework
Java
Zweck
java_core
Nachrichtenkonsument
11
Scannen, Erfassung, Richtliniendurchsetzung
java_profiler
Spring Boot 2.7
17
Regex- und NER-Entitätsextraktion, Spracherkennung (FastText)
Enforcer
Spring Boot
17
Führt Richtlinienaktionen aus: Löschen, Verschieben, Kennzeichnen, Leerlauf
graph-ingestion
Spring Boot
17
Microsoft Graph-Erfassung, -Verwaltung und -Durchsetzung
ews
Spring Boot
25
Exchange Web Services-Integration
google
Spring Boot
n/a
Google Workspace-Integration
Data Subject Manager
Spring Boot
17
Personen- und Entitätsdatenbank sowie Abfragedienst
java_profiler stellt /profile-text, /profile/{fileId} und /language (FastText lid.176, 176 Sprachen) bereit. Die Verarbeitungspipeline umfasst Tokenisierung, Pre-Tokenisierung-Matching, Entitäts-Matching, Validierung, Bewertung und Kennzeichnung.
Abschnitt 06Daten & Infrastruktur
Wo alles gespeichert wird
Elasticsearch 9.3
Die zentrale Datenschicht und der gemeinsame Datenspeicher aller Services: gescannte Dokumente, Profile, Tags, Richtlinien, Audit-Protokolle und Wörterbücher. Tägliche S3-Backups mit einer Aufbewahrungsdauer von 180 Tagen und monatliche SLM-Snapshots.
PostgreSQL 17.6
Die relationale Datenbank für IAM (Benutzer, Rollen, Mandanten), Abonnements und DLP-Auditdaten, ergänzt durch die pgvector-Erweiterung zur Speicherung von LLM-Embeddings.
RabbitMQ 4.2
Der Nachrichten-Broker für Celery-Aufgabenwarteschlangen der API, Warnmeldungen und Benachrichtigungen sowie der Übermittler der Scan-, Erfassungs- und Durchsetzungsereignisse, die von der Java-Schicht verarbeitet werden.
Abschnitt 07Netzwerk & Sicherheit
Ein einziger Zugangspunkt, abgegrenzt nach Mandant
NGINX-Routing
Ausschließlich HTTPS, TLS 1.2/1.3 mit HSTS, OCSP Stapling und modernen Verschlüsselungsverfahren. Admin-Tools sind nur über VPN-Bereiche erreichbar.
/
client:9000
/api/
api:8000
/api/auth/
iam:5000
/api/dashboard/
analytics:6000
/api/llm-management/
llm:8000
/api/dlp/
dlp:8000
/kibana/ · /flower/
Nur per VPN
Authentifizierungsablauf
Header erzwingenX-Frame-Options: DENY, X-Content-Type-Options: nosniff und XSS-Schutz, mit einem Upload-Limit von 10 MB und für DLP allowgelisteten Microsoft Graph Webhook-Bereichen.
Abschnitt 08Deployment
Umgebungen und Auslieferung
Umgebung
Compose-Datei
Zweck
dev01/02/03
docker-compose.dev.yml
Vollständiger Stack, ~30 Services
local
docker-compose.local.yml
Schlanke Konfiguration, Remote-Infrastruktur
L2 bis L7
docker-compose.l{n}.yml
Produktive Kundenstufen
stage
docker-compose.stage.yml
Vorproduktive Validierung
on-prem
docker-compose.bosch.yml
Kundenspezifischer On-Premises-Betrieb
Pipeline und Überwachung
GitHub Actions führen servicespezifische Workflows aus; PRs werden je Repository geöffnet.
Ansible stellt die Server bereit und konfiguriert sie.
Synchrones HTTP übermittelt den Datenverkehr vom Client zur API. RabbitMQ und Celery übernehmen asynchrone Aufgaben, und RabbitMQ vermittelt zudem die Scan-, Ingest- und Enforce-Ereignisse für die Java-Schicht. Elasticsearch ist das gemeinsame Substrat, auf das jeder Service lesend und schreibend zugreift, und das interne Docker-DNS übernimmt die Service-Discovery in einem gemeinsamen Netzwerk.
Eine Plattform, viele Mandanten
Jede Organisation ist ein Mandant, der durch company_id identifiziert wird. JWT-Tokens übertragen diesen Kontext, Elasticsearch-Indizes sind mandantenspezifisch, IAM verwaltet die Benutzer und Rollen jedes Mandanten, und Stripe erfasst die mandantenbezogene Abrechnung. Ein Superadmin kann über einen separaten Token-Mechanismus jeden Mandanten für Supportzwecke imitieren.
Von einem konfigurierten Postfach bis zu einer durchgesetzten Aufbewahrungsregel folgt jedes Dokument einem einzigen Pfad durch eine polyglotte Umgebung, die durch einen gemeinsamen zentralen Datenspeicher zusammengehalten wird. Die Architektur ist bewusst plural gestaltet; die Quelle der Wahrheit hingegen nicht.