Data & MoreEngineeringPlatformens feltmanual

Toogtyve tjenester,
ét styret dokument.

Data & More er en multi-tenant GDPR- og datagovernance-platform. Den forbinder sig til en organisations e-mail-, fillagrings- og chatsystemer, scanner det, den finder, profilerer hvert dokument for persondata og håndhæver opbevarings- og sletningspolitikker. Sådan hænger delene sammen: en polyglot mikrotjenestearkitektur med én enkelt sandhedskilde i centrum.

Man kan ikke styre det, man ikke først har læst, klassificeret og forstået.

~42mikrotjenester
2kernesprog (Python, Java)
7pipelinestadier, fra kilde til rapport
1fælles lager: Elasticsearch
Afsnit 01Arkitektur

Platformen på et øjeblik

Hver anmodning indgår via én TLS-afsluttende NGINX-proxy og dirigeres til applikationslaget: Vue-klienten, den primære Flask API samt IAM-, analyse- og LLM-tjenesterne. API'en videregiver tidskrævende opgaver til en asynkron rygrad af Celery-arbejdere over RabbitMQ, som også transporterer scanning-, ingest- og håndhævelsesbeskeder til Java-laget. Det tunge arbejde (crawling af kilder, udtrækning af tekst, håndhævelse af politikker) kører i dette Java-lag. Under det hele befinder datalaget sig, med Elasticsearch som det dokumentlager alle tjenester deler.

EDGE APPLIKATIONSLAG BESKEDFORMIDLING LAGER TJENESTER INGEST KONCEPTUEL MODEL ikke 100% nøjagtig NGINX TLS 1.2/1.3 · reverse proxy · hastighedsbegrænsning · IP-tilladelsesliste Klient Vue 3 SPA 281 komponenter · 24+ sprog API Flask 3 · Celery · :8000 det centrale knudepunkt IAM Flask · JWT · :5000 LDAP / Active Directory Analyse Flask · pandas · :6000 rapporter, diagrammer, PDF asynkront arbejde synkron HTTP Celery-arbejdere genindeksering · bulkhandlinger · advarsler RabbitMQ opgavemægler · v4.2 Opgavearbejder asynkron jobkørsel skriver resultater Elasticsearch 9.x · fælles dokumentlager PostgreSQL 17.x · IAM · pgvector Sikkerhedskopiering daglige sikkerhedskopier · 180d læsninger · skrivninger skrivninger skrivninger Tjenester java_core scanning · ingest · håndhævelse java_profiler regex · NER · FastText Enforcer politikhandlinger OCR billede · tekst · MRZ Data Subject Mgr personopslag feeds Ingest Graph Ingestion Microsoft Graph EWS Ingestion Exchange Web Services SP Ingestion SharePoint Google Ingestion Workspace · Drive Web Ingestion URLs · scraping
Anmodnings- og datasti Vedvarende lager / output Underkomponent inden for et lag
Sektion 02Dataflow

Fra en rå kilde til en håndhævetpolitik

Et dokument gennemgår den samme proces hver gang. En kilde konfigureres én gang; herefter crawler platformen den, udtrækker teksten, analyserer den for personoplysninger, kontrollerer den mod lejerens politikker, handler på baggrund af afgørelsen og rapporterer resultatet. Billige, deterministiske trin køres først; de omkostningsfulde AI- og håndhævelsestrin køres kun på det, der når frem til dem.

INGEST PROFIL VALIDER HÅNDHÆV RAPPORTÉR 1 · Ingest java_core SCAN + INGEST collector · graph ews · google Apache Tika · OCR 2 · Profil klassificer indhold Logic Profile java_profiler AI Profile ai-profiler (spaCy) 3 · Valider PolicyValidator opbevaringsregler følsomhedsklasse træf beslutning om handling 4 · Håndhæv PolicyEnforcer slet flyt · arkiver tag · ingen handling 5 · Rapportér analyser dashboards advarsler · underret PDF / Excel alle trin læser og skriver til Elasticsearch
Primær pipeline-sti Delt lager, der berøres på hvert trin Output til brugeren
Sektion 03Frontend

Vue 3-single-page-applikationen

Klienten er en specialudviklet single-page-applikation uden standardiserede komponentbiblioteker, stilet med sit eget SCSS-designsystem. Det er her, administratorer tilslutter kilder, opbygger klassifikationsregler, administrerer politikker, læser rapporter og kommunikerer med dokumenter via RAG-chatmodulet. Rollebaserede visninger tilpasser grænsefladen til den enkelte persona.

Hvad der indgår i den

  • Multi-tenant-dashboard med rollebaserede visninger for Admin, Adminlite, AD, PM og DPO.
  • Dokumentbrowser med træ- og gitterlayout samt forhåndsvisning af PDF, Word og JSON.
  • Klassifikationsbygger til tags, ordbøger, algoritmer og dokumentklasser.
  • Politikstyring til GDPR-opbevarings- og sletningsregler.
  • Chat / LLM-modul, en RAG-assistent over indekserede dokumenter med streamede svar.
  • Kildeassistenter til Exchange, SharePoint, Google, IMAP og filshares.
Frontend-stack
FrameworkVue 3.5
BuildVite 6 · TS 5.9
StateVuex 4.1
RouterVue Router 4.6
i18n24+ sprog
DiagrammerChart.js
HTTPAxios + JWT
~400 ruter · 281 komponenter · 35+ API-moduler
Afsnit 04Python-lag

Applikationen og AI-tjenesterne

Python-laget indeholder platformens hjerne: den centrale API, identitetsstyring, analyse, LLM- og chat-stakken, OCR, forebyggelse af datatab samt den spaCy-baserede AI-profiler, der er beskrevet andetsteds. De fleste kører Flask bag Gunicorn; notifikationer kører på FastAPI.

TjenesteFrameworkPortFormål
apiFlask 3 · Celery8000Hoved-REST-API: dokumenter, politikker, kilder, konfiguration
iamFlask 3.1 · Gunicorn5000Godkendelse, JWT, LDAP/AD, rollebaseret adgangsstyring
analyticsFlask · pandas6000Rapportering, scikit-learn, Plotly, PDF-generering
chat-apiFlask · LlamaIndex8000RAG-pipeline, embeddings, LLM med flere udbydere
llm-managementFlask (async)8000LLM-orkestrering, pgvector, OpenAI/Ollama/Claude
ocrFlask · Gunicorn8080EasyOCR, Tesseract, YOLO, PyMuPDF, MRZ
dlpFlask · Gunicorn8000Forebyggelse af datatab, webhook- og regex-scanning
py-dm-notifyFastAPI · Uvicorn8002Realtidsnotifikationer og e-mail, asynkron pub/sub
ai-profilerFlask · Gunicornn/aspaCy NER og ordbogsprofiling, 11+ sprog
alertsCelery-workern/aBaggrundshåndtering af advarsler via RabbitMQ
Hub

Hoved-API

Python 3.12, Flask 3, Celery 5.4, SQLAlchemy 2. Håndterer CRUD for dokumenter og kilder, politikker, brugere, fakturering (Stripe, HubSpot), eksterne integrationer samt Celery-workers til genindeksering og masseoperationer.

Identitet

IAM

JWT-godkendelse med RSA-nøglepar, LDAP og Active Directory til enterprise SSO, rollebaseret adgangsstyring samt Alembic-styrede migreringer. Lejeriomfang er defineret her.

Indsigt

Analytics

Statistisk og ML-baseret rapportering af scannede data, Plotly-diagrammer eksporteret som statiske billeder, PDF-rapporter via WeasyPrint samt en lokal Ollama-mulighed til AI-assisteret analyse.

Afsnit 05Java-lag

Den tunge behandling motor

java_core

Scan, ingest, håndhæv

Java 11, der kører som meddelelseskonsumenter i forskellige tilstande. Det er arbejdshesten, der håndterer de faktiske data.

  • SCAN gennemgår postkasser, websteder og delte drev.
  • INGEST udtrækker tekst med Apache Tika til Elasticsearch.
  • DELTA håndterer trinvise opdateringer.
  • CLEANUP fjerner forældet data.
Håndhævelse findes også her: PolicyValidator kontrollerer dokumenter mod regler, PolicyEnforcer udfører slet, flyt, tag, gendan eller ingen handling.
ServiceFrameworkJavaFormål
java_coremeddelelseskonsument11Scanning, indtagelse, politikhåndhævelse
java_profilerSpring Boot 2.717Regex- og NER-enhedsudtrækning, sprogdetektering (FastText)
EnforcerSpring Boot17Udfører politikhandlinger: slet, flyt, tag, ingen handling
graph-ingestionSpring Boot17Microsoft Graph-indtagelse, administration og håndhævelse
ewsSpring Boot25Exchange Web Services-integration
googleSpring Bootn/aGoogle Workspace-integration
Data Subject ManagerSpring Boot17Person- og enhedsdatabase samt opslag
java_profiler eksponerer /profile-text, /profile/{fileId} og /language (FastText lid.176, 176 sprog). Dets pipeline udfører tokenisering, præ-tokeniseringsmatching, enhedsmatching, validering, scoring og tagging.
Sektion 06Data & infrastruktur

Hvor alt opbevares

Elasticsearch 9.3

Det centrale datalag og den ene lagring, som alle services deler: scannede dokumenter, profiler, tags, politikker, revisionslogger og ordbøger. Daglige S3-sikkerhedskopier med 180 dages opbevaring og månedlige SLM-snapshots.

PostgreSQL 17.6

Den relationelle database til IAM (brugere, roller, lejere), abonnementer og DLP-revisionsdata, med pgvector-udvidelsen, der lagrer LLM-indlejringer.

RabbitMQ 4.2

Meddelelsesmægleren til Celery-opgavekøer på tværs af API'et, advarsler og notifikationer samt bærer af de scanning-, indtagelses- og håndhævelseshændelser, som Java-niveauet forbruger.

Sektion 07Netværk & sikkerhed

Én indgang, afgrænset af lejer

NGINX-routing

Kun HTTPS, TLS 1.2/1.3 med HSTS, OCSP-stapling og moderne krypteringsalgoritmer. Administrationsværktøjer er kun tilgængelige på VPN-områder.

/client:9000
/api/api:8000
/api/auth/iam:5000
/api/dashboard/analytics:6000
/api/llm-management/llm:8000
/api/dlp/dlp:8000
/kibana/ · /flower/Kun VPN

Autentificeringsflow

Klient Vue SPA IAM /api/auth LDAP / AD eller lokal DB legitimationsoplysninger valider Ved succes JWT-adgangs- og opdateringstoken returneres Axios vedhæfter token til hvert API-kald company_id afgrænset i claims · automatisk opdatering ved 401
Headers håndhæverX-Frame-Options: DENY, X-Content-Type-Options: nosniff og XSS-beskyttelse, med en uploadgrænse på 10 MB og Microsoft Graph webhook-intervaller på tilladelseslisten for DLP.
Afsnit 08Udrulning

Miljøer og levering

MiljøCompose-filFormål
dev01/02/03docker-compose.dev.ymlFuld stak, ~30 tjenester
localdocker-compose.local.ymlLetvægts, ekstern infrastruktur
L2 til L7docker-compose.l{n}.ymlProduktionskundeniveauer
stagedocker-compose.stage.ymlValidering forud for produktion
on-premdocker-compose.bosch.ymlKundespecifik on-premises

Pipeline og overvågning

  • GitHub Actions kører arbejdsgange pr. tjeneste; pull requests åbnes pr. repository.
  • Ansible klargør og konfigurerer serverne.
  • Opgraderingsscripts indeholder versionerede migreringer.
  • Kibana til ES-dashboards og logs.
  • Portainer til containerstyring.
  • Flower til overvågning af Celery-køer.
  • Metricbeat til system- og ES-metrikker.
Afsnit 09Overblik

Hele stakken på én side

LagTeknologi
FrontendVue 3, Vite, TypeScript, Vuex, SCSS, Chart.js, Axios
API-gatewayNGINX 1.29, TLS-terminering, routing, IP-tilladelsesliste
REST API'erFlask 3.x, FastAPI, Gunicorn, Uvicorn
Asynkrone opgaverCelery 5.x, RabbitMQ 4.2
BehandlingJava 11/17, Spring Boot, Apache Tika
ML / NLPspaCy 3.8, FastText, sentence-transformers
LLM / RAGLlamaIndex, OpenAI, Ollama, Claude, pgvector
OCREasyOCR, Tesseract, YOLO, PyMuPDF
Søgning / lagringElasticsearch 9.3
Relationel databasePostgreSQL 17.6 med pgvector
GodkendelseJWT (RSA), LDAP / Active Directory, Google OAuth
InfrastrukturDocker Compose, Ansible, GitHub Actions, AWS ECR / S3
OvervågningKibana, Portainer, Flower, Metricbeat
Afsnit 10Sådan hænger det sammen

Kommunikation og lejerskab

Hver tjeneste kommunikerer på den rette måde

Synkron HTTP håndterer trafik fra klient til API. RabbitMQ og Celery håndterer asynkrone opgaver, og RabbitMQ fungerer desuden som mægler for scan-, ingest- og håndhævelseshændelser i Java-laget. Elasticsearch er det fælles fundament, som alle tjenester læser fra og skriver til, og Dockers interne DNS sørger for tjenesteopdagelse på et fælles netværk.

Én platform, mange lejere

Hver organisation er en lejer identificeret ved company_id. JWT-tokens bærer denne kontekst, Elasticsearch-indekser er afgrænset pr. lejer, IAM administrerer hver lejers brugere og roller, og Stripe håndterer fakturering pr. lejer. En superadministrator kan efterligne enhver lejer med henblik på support via en separat tokenmekanisme.

Med ét ordFormen på det

Tilslut, skan, klassificér, beslut, handl, rapportér.

Fra en konfigureret postkasse til en håndhævet opbevaringsregel følger ethvert dokument én sti gennem en flersproget infrastruktur, der holdes sammen af ét fælles datalager. Arkitekturen er mangfoldig af design; kilden til sandheden er det ikke.

~42 tjenester · Python + Java kerne · Elasticsearch i centrum