Data & MoreEngineeringPlattform-Feldhandbuch

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.

EDGE APP-EBENE MESSAGING SPEICHER SERVICES INGESTION KONZEPTIONELLES MODELL nicht 100 % genau NGINX TLS 1.2/1.3 · Reverse Proxy · Rate Limit · IP-Allowlist Client Vue 3 SPA 281 Komponenten · 24+ Sprachen API Flask 3 · Celery · :8000 der zentrale Knotenpunkt IAM Flask · JWT · :5000 LDAP / Active Directory Analytics Flask · pandas · :6000 Berichte, Diagramme, PDF asynchrone Aufgaben synchrones HTTP Celery-Worker Reindex · Bulk-Operationen · Benachrichtigungen RabbitMQ Task-Broker · v4.2 Task-Worker asynchrone Auftragsausführung schreibt Ergebnisse Elasticsearch 9.x · gemeinsamer Dokumentenspeicher PostgreSQL 17.x · IAM · pgvector Backup tägliche Backups · 180 Tage Lesen · Schreiben Schreiben Schreiben Services java_core Scan · Ingest · Enforce java_profiler regex · NER · FastText Enforcer Richtlinienaktionen OCR Bild · Text · MRZ Data Subject Mgr Personensuche Feeds Ingestion Graph Ingestion Microsoft Graph EWS Ingestion Exchange Web Services SP Ingestion SharePoint Google Ingestion Workspace · Drive Web Ingestion URLs · Scraping
Anfrage- und Datenpfad Persistenter Speicher / Ausgabe Unterkomponente 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.

ERFASSEN PROFILIEREN VALIDIEREN DURCHSETZEN BERICHTEN 1 · Erfassen java_core SCAN + INGEST collector · graph ews · google Apache Tika · OCR 2 · Profilieren Inhalte klassifizieren Logic Profile java_profiler AI Profile ai-profiler (spaCy) 3 · Validieren PolicyValidator Aufbewahrungsregeln Sensitivitätsklasse Maßnahme festlegen 4 · Durchsetzen PolicyEnforcer Löschen Verschieben · Archivieren Markieren · Keine Aktion 5 · Berichten Analysen Dashboards Warnmeldungen · Benachrichtigen PDF / Excel Alle Stufen lesen und schreiben Elasticsearch
Hauptpipeline-Pfad Gemeinsamer Speicher, der in jeder Stufe genutzt wird Ausgabe 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
FrameworkVue 3.5
BuildVite 6 · TS 5.9
StateVuex 4.1
RouterVue Router 4.6
i18n24+ Sprachen
ChartsChart.js
HTTPAxios + 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.

DienstFrameworkPortZweck
apiFlask 3 · Celery8000Haupt-REST-API: Dokumente, Richtlinien, Quellen, Konfiguration
iamFlask 3.1 · Gunicorn5000Authentifizierung, JWT, LDAP/AD, rollenbasierte Zugriffskontrolle
analyticsFlask · pandas6000Berichterstattung, scikit-learn, Plotly, PDF-Generierung
chat-apiFlask · LlamaIndex8000RAG-Pipeline, Embeddings, Multi-Provider-LLM
llm-managementFlask (async)8000LLM-Orchestrierung, pgvector, OpenAI/Ollama/Claude
ocrFlask · Gunicorn8080EasyOCR, Tesseract, YOLO, PyMuPDF, MRZ
dlpFlask · Gunicorn8000Datenverlustprävention, Webhook- und Regex-Scanning
py-dm-notifyFastAPI · Uvicorn8002Echtzeit-Benachrichtigungen und E-Mail, asynchrones Pub/Sub
ai-profilerFlask · Gunicornn/aspaCy NER und Wörterbuch-Profiling, 11+ Sprachen
alertsCelery Workern/aHintergrundverarbeitung 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.
ServiceFrameworkJavaZweck
java_coreNachrichtenkonsument11Scannen, Erfassung, Richtliniendurchsetzung
java_profilerSpring Boot 2.717Regex- und NER-Entitätsextraktion, Spracherkennung (FastText)
EnforcerSpring Boot17Führt Richtlinienaktionen aus: Löschen, Verschieben, Kennzeichnen, Leerlauf
graph-ingestionSpring Boot17Microsoft Graph-Erfassung, -Verwaltung und -Durchsetzung
ewsSpring Boot25Exchange Web Services-Integration
googleSpring Bootn/aGoogle Workspace-Integration
Data Subject ManagerSpring Boot17Personen- 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

Client Vue SPA IAM /api/auth LDAP / AD oder lokale Datenbank Anmeldedaten Validierung Bei Erfolg JWT-Zugangs- und Aktualisierungstoken wird zurückgegeben Axios fügt den Token an jeden API-Aufruf an company_id in Claims hinterlegt · automatische Aktualisierung bei 401
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

UmgebungCompose-DateiZweck
dev01/02/03docker-compose.dev.ymlVollständiger Stack, ~30 Services
localdocker-compose.local.ymlSchlanke Konfiguration, Remote-Infrastruktur
L2 bis L7docker-compose.l{n}.ymlProduktive Kundenstufen
stagedocker-compose.stage.ymlVorproduktive Validierung
on-premdocker-compose.bosch.ymlKundenspezifischer 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.
  • Upgrade-Skripte enthalten versionierte Migrationen.
  • Kibana für ES-Dashboards und Logs.
  • Portainer für das Container-Management.
  • Flower für die Überwachung der Celery-Warteschlange.
  • Metricbeat für System- und ES-Metriken.
Abschnitt 09Auf einen Blick

Der gesamte Stack auf einer Seite

SchichtTechnologie
FrontendVue 3, Vite, TypeScript, Vuex, SCSS, Chart.js, Axios
API-GatewayNGINX 1.29, TLS-Terminierung, Routing, IP-Allowlisting
REST-APIsFlask 3.x, FastAPI, Gunicorn, Uvicorn
Asynchrone AufgabenCelery 5.x, RabbitMQ 4.2
VerarbeitungJava 11/17, Spring Boot, Apache Tika
ML / NLPspaCy 3.8, FastText, sentence-transformers
LLM / RAGLlamaIndex, OpenAI, Ollama, Claude, pgvector
OCREasyOCR, Tesseract, YOLO, PyMuPDF
Suche / SpeicherungElasticsearch 9.3
Relationale DatenbankPostgreSQL 17.6 mit pgvector
AuthentifizierungJWT (RSA), LDAP / Active Directory, Google OAuth
InfrastrukturDocker Compose, Ansible, GitHub Actions, AWS ECR / S3
MonitoringKibana, Portainer, Flower, Metricbeat
Abschnitt 10Das Zusammenspiel

Kommunikation und Mandantenfähigkeit

Jeder Service kommuniziert auf die richtige Weise

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.

In einem SatzDas Grundprinzip

Verbinden, scannen, klassifizieren, entscheiden, handeln, berichten.

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.

~42 Dienste · Python + Java Kern · Elasticsearch im Mittelpunkt