Data & MoreEngineeringPlattformens fältmanual

Fyrtiotvå tjänster,
ett styrt dokument.

Data & More är en multi-tenant-plattform för GDPR och datastyrning. Den ansluter till en organisations e-post, fillagring och chattsystem, skannar det den hittar, profilerar varje dokument avseende personuppgifter samt tillämpar regler för lagring och radering. Så här passar delarna ihop: ett polyglott mikrotjänstlandskap med en enda källa till sanning i centrum.

Man kan inte styra det man inte först har läst, klassificerat och förstått.

~42mikrotjänster
2kärnspråk (Python, Java)
7pipeline-steg, från källa till rapport
1gemensamt datalager: Elasticsearch
Avsnitt 01Arkitektur

Plattformen i korthet

Varje förfrågan går in via en TLS-terminerande NGINX-proxy och dirigeras till applikationsnivån: Vue-klienten, huvud-API:et i Flask samt IAM-, analys- och LLM-tjänsterna. API:et lämnar över tidskrävande arbete till en asynkron kärna av Celery-workers via RabbitMQ, som också hanterar skanning-, inmatnings- och tillämpningshändelser för Java-nivån. Det tunga arbetet (att kräla igenom källor, extrahera text och tillämpa policyer) körs på den Java-nivån. Under allt detta finns datalagret, med Elasticsearch som det dokumentlager samtliga tjänster delar.

EDGE APP-NIVÅ MEDDELANDEHANTERING LAGER TJÄNSTER INMATNING KONCEPTUELL MODELL ej 100 % korrekt NGINX TLS 1.2/1.3 · omvänd proxy · hastighetsbegränsning · IP-vitlista Klient Vue 3 SPA 281 komponenter · 24+ språk API Flask 3 · Celery · :8000 den centrala navet IAM Flask · JWT · :5000 LDAP / Active Directory Analys Flask · pandas · :6000 rapporter, diagram, PDF asynkront arbete synkron HTTP Celery-workers omindexering · bulkoperationer · aviseringar RabbitMQ uppgiftsmäklare · v4.2 Uppgiftshanterare asynkron jobbkörare skriver resultat Elasticsearch 9.x · gemensamt dokumentlager PostgreSQL 17.x · IAM · pgvector Säkerhetskopiering dagliga säkerhetskopior · 180d läsningar · skrivningar skrivningar skrivningar Tjänster java_core skanning · inmatning · tillämpning java_profiler regex · NER · FastText Enforcer policyåtgärder OCR bild · text · MRZ Data Subject Mgr personuppslagning flöden Inmatning Graph Ingestion Microsoft Graph EWS Ingestion Exchange Web Services SP Ingestion SharePoint Google Ingestion Workspace · Drive Webb-insamling URL:er · skrapning
Förfrågnings- och datasökväg Beständigt lager / utdata Underkomponent inom ett lager
Avsnitt 02Dataflöde

Från en råkälla till ett tillämpatpolicybeslut

Ett dokument genomgår alltid samma process. En källa konfigureras en gång; därefter genomsöker plattformen den automatiskt, extraherar dess text, analyserar den för personuppgifter, kontrollerar den mot klientens policyer, verkställer utfallet och rapporterar resultatet. Kostnadseffektiva, deterministiska steg körs först; de resurskrävande AI- och verkställighetsstegen körs enbart på det som når dem.

SAMLA IN PROFILERA VALIDERA VERKSTÄLL RAPPORTERA 1 · Insamling java_core SKANNING + INSAMLING collector · graph ews · google Apache Tika · OCR 2 · Profilering klassificera innehåll Logikprofil java_profiler AI-profil ai-profiler (spaCy) 3 · Validering PolicyValidator regler för lagring känslighetsklass besluta åtgärd 4 · Verkställighet PolicyEnforcer radera flytta · arkivera tagga · ingen åtgärd 5 · Rapportering analyser instrumentpaneler aviseringar · notifiering PDF / Excel alla steg läser från och skriver till Elasticsearch
Huvudsaklig processväg Gemensamt lager, används i varje steg Utdata till användaren
Avsnitt 03Frontend

Vue 3-ensidesapplikationen

Klienten är en skräddarsydd ensidesapplikation utan färdiga komponentbibliotek, utformad med ett eget SCSS-designsystem. Det är här administratörer ansluter källor, skapar klassificeringsregler, hanterar policyer, läser rapporter och kommunicerar med dokument via RAG-chattmodulen. Rollbaserade vyer anpassar gränssnittet efter varje användarroll.

Vad som ingår

  • Instrumentpanel för flera klienter med rollbaserade vyer för Admin, Adminlite, AD, PM och DPO.
  • Dokumentbläddrare med träd- och rutnätslayouter samt förhandsgranskning av PDF, Word och JSON.
  • Klassificeringsbyggare för taggar, ordlistor, algoritmer och dokumentklasser.
  • Policyhantering för GDPR-regler om lagring och radering.
  • Chatt / LLM-modul, en RAG-assistent för indexerade dokument med strömmande svar.
  • Källguider för Exchange, SharePoint, Google, IMAP och filresurser.
Frontend-stack
RamverkVue 3.5
ByggeVite 6 · TS 5.9
TillståndVuex 4.1
RouterVue Router 4.6
i18n24+ språk
DiagramChart.js
HTTPAxios + JWT
~400 rutter · 281 komponenter · 35+ API-moduler
Avsnitt 04Python-nivå

Applikationen och AI-tjänsterna

Python-nivån innehåller plattformens kärna: det centrala API:et, identitetshantering, analys, LLM- och chattlagret, OCR, skydd mot dataförlust samt den spaCy-baserade AI-profileringen som beskrivs på annan plats. De flesta körs med Flask bakom Gunicorn; notifieringar körs på FastAPI.

TjänstRamverkPortSyfte
apiFlask 3 · Celery8000Huvud-REST-API: dokument, policyer, källor, konfiguration
iamFlask 3.1 · Gunicorn5000Autentisering, JWT, LDAP/AD, rollbaserad åtkomst
analyticsFlask · pandas6000Rapportering, scikit-learn, Plotly, PDF-generering
chat-apiFlask · LlamaIndex8000RAG-pipeline, inbäddningar, LLM med stöd för flera leverantörer
llm-managementFlask (async)8000LLM-orkestrering, pgvector, OpenAI/Ollama/Claude
ocrFlask · Gunicorn8080EasyOCR, Tesseract, YOLO, PyMuPDF, MRZ
dlpFlask · Gunicorn8000Skydd mot dataförlust, webhook- och regexskanning
py-dm-notifyFastAPI · Uvicorn8002Realtidsnotifieringar och e-post, asynkron pub/sub
ai-profilerFlask · Gunicornn/aspaCy NER och ordlisteprofilering, 11+ språk
alertsCelery-arbetaren/aBakgrundsbearbetning av aviseringar via RabbitMQ
Hub

Huvud-API

Python 3.12, Flask 3, Celery 5.4, SQLAlchemy 2. Hanterar CRUD för dokument och källor, policyer, användare, fakturering (Stripe, HubSpot), externa integrationer samt Celery-arbetare för omindexering och bulkjobb.

Identitet

IAM

JWT-autentisering med RSA-nyckelpar, LDAP och Active Directory för SSO i företagsmiljö, rollbaserad åtkomstkontroll samt Alembic-hanterade migreringar. Klientavgränsning hanteras här.

Insikt

Analys

Statistisk och ML-baserad rapportering av skannad data, Plotly-diagram exporterade till statiska bilder, PDF-rapporter via WeasyPrint samt ett lokalt Ollama-alternativ för AI-assisterad analys.

Avsnitt 05Java-nivå

Den tunga bearbetning motorn

java_core

Skanna, importera, tillämpa

Java 11, körs som meddelandekonsumenter i distinkta lägen. Det är arbetshästen som hanterar den faktiska datan.

  • SCAN genomsöker postlådor, webbplatser och fildelningar.
  • INGEST extraherar text med Apache Tika till Elasticsearch.
  • DELTA hanterar inkrementella uppdateringar.
  • CLEANUP tar bort inaktuell data.
Tillämpningen sker även här: PolicyValidator kontrollerar dokument mot regler, PolicyEnforcer utför radering, flytt, taggning, återställning eller ingen åtgärd.
TjänstRamverkJavaSyfte
java_coremeddelandekonsument11Skanning, inmatning, policytillämpning
java_profilerSpring Boot 2.717Regex- och NER-entitetsextrahering, språkdetektering (FastText)
EnforcerSpring Boot17Utför policyåtgärder: radering, flytt, taggning, ingen åtgärd
graph-ingestionSpring Boot17Microsoft Graph-inmatning, hantering och tillämpning
ewsSpring Boot25Integration med Exchange Web Services
googleSpring Bootn/aIntegration med Google Workspace
Data Subject ManagerSpring Boot17Person- och entitetsdatabas med uppslagsfunktion
java_profiler exponerar /profile-text, /profile/{fileId} och /language (FastText lid.176, 176 språk). Dess pipeline utför tokenisering, förtokeniseringsmatchning, entitetsmatchning, validering, poängsättning och taggning.
Avsnitt 06Data & infrastruktur

Där allt förvaras

Elasticsearch 9.3

Det centrala datalagret och det gemensamma datalager som samtliga tjänster delar: skannade dokument, profiler, taggar, policyer, granskningsloggar och ordlistor. Dagliga S3-säkerhetskopior med 180 dagars lagring samt månatliga SLM-ögonblicksbilder.

PostgreSQL 17.6

Den relationsdatabas som används för IAM (användare, roller, klienter), prenumerationer och DLP-granskningsdata, med tillägget pgvector för lagring av LLM-inbäddningar.

RabbitMQ 4.2

Meddelandeförmedlaren för Celery-uppgiftsköer inom API:et, aviseringar och notifieringar, samt bärare av de skanning-, inmatnings- och tillämpningshändelser som Java-skiktet konsumerar.

Avsnitt 07Nätverk & säkerhet

En ingång, avgränsad per klient

NGINX-routing

Enbart HTTPS, TLS 1.2/1.3 med HSTS, OCSP-häftning och moderna krypteringssviter. Administrationsverktyg är endast åtkomliga via VPN-intervall.

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

Autentiseringsflöde

Klient Vue SPA IAM /api/auth LDAP / AD eller lokal databas inloggningsuppgifter validera Vid godkännande JWT-åtkomst- och uppdateringstoken returneras Axios bifogar token till varje API-anrop company_id omfångsbestämt i anspråk · automatisk uppdatering vid 401
Huvuden tillämparX-Frame-Options: DENY, X-Content-Type-Options: nosniff och XSS-skydd, med en uppladdningsgräns på 10 MB och Microsoft Graph webhook-intervall allowlistade för DLP.
Avsnitt 08Driftsättning

Miljöer och leverans

MiljöCompose-filSyfte
dev01/02/03docker-compose.dev.ymlFullständigt stack, ~30 tjänster
localdocker-compose.local.ymlLättviktig, fjärrinfrastruktur
L2 till L7docker-compose.l{n}.ymlProduktionskund-nivåer
stagedocker-compose.stage.ymlFörproduktionsvalidering
on-premdocker-compose.bosch.ymlKundspecifik on-premises

Pipeline och bevakning

  • GitHub Actions kör arbetsflöden per tjänst; PR:er öppnas per repository.
  • Ansible provisionerar och konfigurerar servrarna.
  • Uppgraderingsskript innehåller versionshanterade migreringar.
  • Kibana för ES-instrumentpaneler och loggar.
  • Portainer för containerhantering.
  • Flower för övervakning av Celery-köer.
  • Metricbeat för system- och ES-mätvärden.
Avsnitt 09Överblick

Hela stacken på en sida

LagerTeknik
FrontendVue 3, Vite, TypeScript, Vuex, SCSS, Chart.js, Axios
API-gatewayNGINX 1.29, TLS-terminering, routing, IP-allowlistning
REST API:erFlask 3.x, FastAPI, Gunicorn, Uvicorn
Asynkrona uppgifterCelery 5.x, RabbitMQ 4.2
BearbetningJava 11/17, Spring Boot, Apache Tika
ML / NLPspaCy 3.8, FastText, sentence-transformers
LLM / RAGLlamaIndex, OpenAI, Ollama, Claude, pgvector
OCREasyOCR, Tesseract, YOLO, PyMuPDF
Sökning / lagringElasticsearch 9.3
RelationsdatabasPostgreSQL 17.6 med pgvector
AutentiseringJWT (RSA), LDAP / Active Directory, Google OAuth
InfrastrukturDocker Compose, Ansible, GitHub Actions, AWS ECR / S3
ÖvervakningKibana, Portainer, Flower, Metricbeat
Avsnitt 10Hur det hänger samman

Kommunikation och hyresgästskap

Varje tjänst kommunicerar på rätt sätt

Synkron HTTP hanterar trafik från klient till API. RabbitMQ och Celery hanterar asynkrona uppgifter, och RabbitMQ fungerar även som mäklare för skanning-, inmatnings- och tillämpningshändelser för Java-nivån. Elasticsearch är det gemensamma substrat som varje tjänst läser från och skriver till, och Dockers interna DNS tillhandahåller tjänsteupptäckt i ett gemensamt nätverk.

En plattform, många hyresgäster

Varje organisation är en hyresgäst identifierad av company_id. JWT-tokens bär med sig det sammanhanget, Elasticsearch-index är avgränsade per hyresgäst, IAM hanterar varje hyresgästs användare och roller, och Stripe spårar fakturering per hyresgäst. En superadmin kan efterlikna vilken hyresgäst som helst för supportändamål, via en separat tokenmekanism.

På en radFormen på det

Anslut, skanna, klassificera, besluta, agera, rapportera.

Från en konfigurerad postlåda till en tillämpad arkiveringsregel följer varje dokument en och samma väg genom en mångspråkig miljö som hålls samman av ett enda gemensamt datalager. Arkitekturen är medvetet plural; källan till sanning är det inte.

~42 tjänster · Python + Java kärna · Elasticsearch i centrum