
# Komponovateľná AI Mikroslužbová Architektúra pre Škálovateľnú Automatizáciu Bezpečnostných Dotazníkov

Podniky sa topia v neustále rastúcom počte bezpečnostných dotazníkov, hodnotení dodávateľov a auditov zhody. Tradičné monolitické nástroje ťažko držia krok, najmä keď musia integrovane s rôznymi ekosystémami produktov, podporovať viacjazyčné požiadavky a poskytovať realtime auditné stopy.  

**Komponovateľná mikroslužbová architektúra**, postavená okolo modelov veľkých jazykov (LLM) a retrieval‑augmented generation (RAG), ponúka spôsob, ako škálovať automatizáciu so zachovaním flexibility a riadenia, ktoré regulované odvetvia vyžadujú. V tomto sprievodcovi:

* načrtneme hlavné dizajnové princípy, ktoré udržia systém **bezpečný, audítovateľný a rozšíriteľný**.  
* prejdeme referenčnú implementáciu zobrazenú pomocou Mermaid.  
* ukážeme, ako môže byť každá služba nasadená nezávisle na Kubernetes, serverless FaaS alebo edge runtime.  
* poskytneme konkrétne odporúčania najlepších praktík pre správu dát, observabilitu a kontinuálne zlepšovanie.

> **TL;DR:** Rozdeľte platformu pre automatizáciu dotazníkov na malé, dobre definované služby, nechajte LLM fungovať za bezstavovou vrstvou inference a použite udalostne‑riadené pipeline na udržanie jedného zdroja pravdy pre dôkazy a verziovanie.

---

## 1. Prečo Komponovať Namiesto Budovania Obrovského Monolitu?

| Prístup Monolitický | Komponovateľné Mikroslužby |
|---------------------|---------------------------|
| Jeden kódový základ, ťažko škálovať špecifické pracovné záťaže (napr. inference LLM). | Nezávislé škálovanie – AI inference môže bežať na GPU uzloch, zatiaľ čo úložisko zostáva na nákladovo‑efektívnych objektových úložiskách. |
| Úzka väzba robí aktualizácie riskantnými; chyba v UI môže spôsobiť výpadok celého systému. | Voľná väzba cez asynchrónne udalosti alebo HTTP API izoluje zlyhania. |
| Obmedzená jazyková integrácia – často uzamknuté na jeden stack. | Podpora viacero jazykov – každá služba môže byť napísaná v jazyku, ktorý najlepšie vyhovuje jej úlohe (Go pre autentifikáciu, Python pre orchestráciu LLM, Rust pre vysokorýchlostné pipeline). |
| Audity a zhoda sa stávajú nočnou morou, pretože logy sú prepletené. | Centralizovaný event store + immutable audit log poskytuje jasnú, dotazovateľnú stopu pre regulátorov. |

**Komponovateľný** model prijíma filozofiu *„stavíte to, čo potrebujete, a nahrazujete to, čo nepotrebujete“*. Zapadá do dynamickej povahy bezpečnostných dotazníkov, kde sa pravidelne objavujú nové kontrolné rámce (napr. [ISO 27001 Rev 2](https://www.iso.org/standard/27001)) a tímy musia rýchlo reagovať.

---

## 2. Základné Pilierky Architektúry

1. **Stateless API Gateway** – vstupný bod pre UI, SaaS konektory a externé nástroje. Rieši autentifikáciu, validáciu požiadaviek a throttling.  
2. **Doménovo‑špecifické mikroslužby** – každá zapuzdruje ohraničený kontext:  
   * **Questionnaire Service** – ukladá metadáta dotazníka, verzovanie a priradenie úloh.  
   * **Evidence Service** – spravuje artefakty (politiky, screenshoty, audit logy) v immutable objektovom úložisku.  
   * **AI Orchestration Service** – skladá prompt, spúšťa RAG pipeline a vracia návrhy odpovedí.  
   * **Change‑Detection Service** – sleduje aktualizácie dôkazov, spúšťa prehodnotenie ovplyvnených odpovedí.  
   * **Notification Service** – posiela udalosti do Slacku, Teams alebo emailu zainteresovaným stranám.  
3. **Event Bus (Kafka / Pulsar)** – zaručuje aspoň‑jednorazové doručenie doménových udalostí (napr. `EvidenceUploaded`, `AnswerDrafted`).  
4. **Observability Stack** – OpenTelemetry trace naprieč službami, Prometheus metriky a Loki logy.  
5. **Policy‑as‑Code Engine** – vyhodnocuje pravidlá zhody (napísané v Rego alebo OPA) pred označením odpovede ako „finálnej“.  

Všetky služby komunikujú cez **gRPC** (pre nízku latenciu) alebo **REST** (pre externé integrácie). Dizajn podporuje princíp *hlúpe rúry, inteligentné koncové body* – biznis logika žije tam, kde patrí, a bus len prenáša správy.

---

## 3. Dátový Tok – Od Otázky po Audítovateľnú Odpoveď

Nižšie je Mermaid diagram, ktorý vizualizuje typický životný cyklus požiadavky.

```mermaid
flowchart TD
    subgraph UI["Používateľské Rozhranie"]
        UI1["\"Web UI\""] -->|Odoslať dotazník| AG["\"API Gateway\""]
    end

    AG -->|Auth & Validate| QMS["\"Questionnaire Service\""]
    QMS -->|Fetch template| AIOS["\"AI Orchestration Service\""]
    AIOS -->|Retrieve relevant evidence| ES["\"Evidence Service\""]
    ES -->|Evidence objects| AIOS
    AIOS -->|Generate draft answer| RAG["\"RAG Pipeline\""]
    RAG -->|LLM output| AIOS
    AIOS -->|Store draft| QMS
    QMS -->|Emit AnswerDrafted| EB["\"Event Bus\""]
    EB -->|Trigger| CDS["\"Change‑Detection Service\""]
    CDS -->|Re‑run if evidence changed| AIOS
    CDS -->|Emit AnswerUpdated| EB
    EB -->|Notify| NS["\"Notification Service\""]
    NS -->|Push to Slack/Email| UI

    style UI fill:#f9f,stroke:#333,stroke-width:2px
    style AG fill:#bbf,stroke:#333,stroke-width:1px
    style QMS fill:#bfb,stroke:#333,stroke-width:1px
    style AIOS fill:#ffb,stroke:#333,stroke-width:1px
    style ES fill:#fbb,stroke:#333,stroke-width:1px
    style RAG fill:#fdd,stroke:#333,stroke-width:1px
    style CDS fill:#ddf,stroke:#333,stroke-width:1px
    style NS fill:#cfc,stroke:#333,stroke-width:1px
```

**Kľúčové momenty v toku**:

1. **Používateľ odosiela** nový dotazník alebo vyberá existujúci.  
2. **API Gateway** overí JWT, skontroluje rate limity a odovzdá požiadavku Questionnaire Service.  
3. **Questionnaire Service** načíta šablónu dotazníka a pošle udalosť do AI Orchestration Service.  
4. **AI Orchestration** vykoná *retrieval krok* – dotazuje Evidence Service na všetky artefakty relevantné k aktuálnej kontrole (pomocou vektorovej podobnosti alebo kľúčových slov).  
5. Získaný kontext spolu s prompt šablónou vstúpi do **RAG pipeline** (napr. `openAI/gpt‑4o‑preview`).  
6. Návrh odpovede sa uloží späť do Questionnaire Service a označí sa *„čaká na revíziu“*.  
7. **Change‑Detection Service** sleduje nahrávanie nových dôkazov. Ak sa politika aktualizuje, opätovne spustí RAG pipeline pre ovplyvnené odpovede.  
8. Finálni revízori prijmú alebo upravia návrh; po schválení **Policy‑as‑Code Engine** overí, že odpoveď spĺňa všetky pravidlá, predtým než ju zapíše do immutable audit logu.  

---

## 4. Implementačné Detaily

### 4.1. API Gateway (Envoy + OIDC)

* **Routing** – `POST /questionnaires/:id/answers` → `questionnaire-service`.  
* **Security** – Vynucuje scopy (`questionnaire:write`).  
* **Rate limiting** – 100 požiadaviek/min na tenant na ochranu nákladov LLM.

### 4.2. Questionnaire Service (Go)

```go
type Questionnaire struct {
    ID          string            `json:"id"`
    Version     int               `json:"version"`
    Controls    []Control        `json:"controls"`
    Drafts      map[string]Answer `json:"drafts"` // kľúč = control ID
    AssignedTo  map[string]string `json:"assigned_to"` // userID
}
```

* Používa **PostgreSQL** pre relačné dáta, **EventStoreDB** pre domain events.  
* Exponuje gRPC metódy `GetTemplate`, `SaveDraft`, `FinalizeAnswer`.

### 4.3. Evidence Service (Python + FastAPI)

* Ukladá súbory v **MinIO** alebo **AWS S3** s šifrovaním na úrovni bucketu.  
* Indexuje obsah v **Qdrant** (vektorová DB) pre vyhľadávanie podobnosti.  
* Poskytuje endpoint `POST /search`, ktorý prijme dotaz a vráti top‑k ID artefaktov.

### 4.4. AI Orchestration Service (Python)

```python
def generate_answer(question: str, evidence_ids: List[str]) -> str:
    evidence = fetch_evidence(evidence_ids)
    context = "\n".join(evidence)
    prompt = f"""You are a compliance specialist.
Using the following evidence, answer the question concisely:\n{context}\n\nQuestion: {question}"""
    response = client.chat.completions.create(
        model="gpt-4o-mini",
        messages=[{"role":"system","content":prompt}]
    )
    return response.choices[0].message.content
```

* **RAG** – Kombinuje vektorové vyhľadávanie s *system prompt* ktorý inštruuje model citovať ID dôkazov.  
* **Caching** – Ukladá vygenerované odpovede na 24 h, aby sa predišlo duplicitným volaniam LLM.

### 4.5. Change‑Detection Service (Rust)

* Odberá udalosti `EvidenceUploaded`.  
* Vypočíta **hash** nového artefaktu a porovná ho s existujúcimi dôkazmi spojenými s každou kontrolou.  
* Ak rozdiel prekročí konfigurovateľný prah, publikovať `AnswerRequiresRegen`.

### 4.6. Notification Service (Node.js)

* Počúva `AnswerDrafted`, `AnswerFinalized`, `AnswerRequiresRegen`.  
* Formátuje Slack bloky, Teams Adaptive Cards alebo emailové šablóny.  
* Podporuje **deduplication** – notifikácia sa pošle iba raz na zmenu na konkrétny dotazník.

---

## 5. Bezpečnosť & Riadenie

| Obava | Riešenie |
|-------|----------|
| **Únik dát** – Prompt LLM môže obsahovať citlivý text. | Používať **on‑prem LLM inference** (napr. Llama 3.2) v rámci VPC. Maskovať PII pred odoslaním na externé API. |
| **Neoprávnený prístup k dôkazom** | Vynútiť jemnozrnné ACL pomocou OPA politík v Evidence Service. |
| **Drift modelu** – Kvalita odpovedí sa zhoršuje. | Plánovať **periodické hodnotenie** proti benchmark corpus a aktualizovať prompt šablóny. |
| **Auditovateľnosť** | Každá stavová prechodová udalosť je zapísaná do immutable event logu na **WORM S3**. |
| **GDPR/CCPA** | Implementovať workflow *právo na zabudnutie* ktoré vymaže používateľské dôkazy z vektorovej DB a objektového úložiska ([GDPR](https://gdpr.eu/)). |
| **ISO 27001** | Overiť, že retenčné, šifrovacie a prístupové politiky zodpovedajú štandardu ISO 27001. |
| **HIPAA / SOC 2** | Pre zdravotnícke alebo SaaS poskytovateľov rozšíriť OPA pravidlá o požadované zabezpečenia. |

---

## 6. Škálovacie Stratégie

1. **Horizontal Pod Autoscaling (HPA)** – Škálovať AI Orchestration podsy na základe využitia GPU (`nvidia.com/gpu`).  
2. **Burst‑able Queues** – Využiť Kafka partitioning na izoláciu tenantov s vysokou záťažou.  
3. **Zníženie Cold‑Startov** – Udržiavať warm pool kontajnerov pre LLM inference server (napr. pomocou **KEDA** s custom scaler).  
4. **Kontrola nákladov** – Aplikovať **token‑based budgeting** na úrovni tenantov; automaticky throttle alebo fakturovať nadmerné používanie.

---

## 7. Observabilita & Kontinuálne Zlepšovanie

* **Distributed Tracing** – OpenTelemetry spany od UI požiadavky → API Gateway → AI Orchestration → RAG → Evidence Service.  
* **Metriky** – `answer_draft_latency_seconds`, `evidence_upload_bytes`, `llm_token_usage`.  
* **Log Aggregation** – Štruktúrované JSON logy s `request_id` propagovaným naprieč službami.  
* **Feedback Loop** – Po finalizácii odpovede zachytiť komentáre reviewerov (`review_score`). Použiť ich ako vstup do **reinforcement learning** modelu, ktorý upraví teplotu promptu alebo vyberie alternatívne dôkazy.

---

## 8. Krok‑za‑Krokom Migračná Cesta pre Existujúce Tímy

| Fáza | Cieľ | Aktivity |
|------|------|----------|
| **0 – Discovery** | Zmapovať existujúci workflow dotazníkov. | Identifikovať zdroje dát, definovať taksonómiu kontrol. |
| **1 – Build Foundations** | Nasadiť API Gateway, autentifikáciu a základné služby. | Containerizovať `questionnaire-service` a `evidence-service`. |
| **2 – Introduce AI** | Spustiť RAG na pilotnom dotazníku. | Použiť sandbox LLM, manuálne overiť návrhy. |
| **3 – Event‑Driven Automation** | Prepojiť Change‑Detection pipeline. | Povoliť auto‑regen pri aktualizácii dôkazov. |
| **4 – Governance Harden** | Pridať OPA politiky, immutable audit logy. | Presunúť na produkčné LLM (on‑prem). |
| **5 – Scale & Optimize** | Auto‑škálovať GPU podsy, implementovať kontrolu nákladov. | Nasadiť observability stack, nastaviť SLO. |

Inkrementálnym prijímaním komponovateľnej architektúry tímy predídú „big‑bang“ rizikám a môžu ukázať skorú návratnosť investícií (často **30‑50 % zníženie** doby spracovania dotazníkov).

---

## 9. Budúcnosť Stacku

* **Federated Learning** – Trénovať ľahké adaptéry na dátach každého tenantov bez presunu surových dôkazov, čím sa zvýši relevantnosť odpovedí a zachová suverenita dát.  
* **Zero‑Trust Service Mesh** – Použiť **Istio** alebo **Linkerd** s mutual TLS na zabezpečenie intra‑service trafficu.  
* **Semantic Governance** – Rozšíriť Policy‑as‑Code engine na validáciu nielen obsahu odpovede, ale aj **semantickej podobnosti** medzi dôkazmi a jazykom kontrol.  
* **Generative Traceability** – Ukladať presnú teplotu LLM, top‑p a systémový prompt spolu s každou odpoveďou pre forenznú kontrolu.

---

## 10. Záver

Komponovateľná mikroslužbová architektúra premieňa automatizáciu bezpečnostných dotazníkov z **bolavého manuálneho procesu** na **škálovateľný, audítovateľný a neustále sa zlepšujúci engine**. Odpojením zodpovedností, využitím LLM cez bezstavovú RAG vrstvu a prepojením všetkého udalosťovým backbone, organizácie môžu:

* Odpovedať na hodnotenia dodávateľov za minúty namiesto dní.  
* Udržiavať dôkazy vždy aktuálne vďaka automatickému detekčnému mechanizmu.  
* Poskytnúť regulátorom jasnú, immutable auditnú stopu.

Začnite malé, iterujte rýchlo a nechajte filozofiu mikroslužieb viesť k budúcnosti, kde je zhoda **funkčnosťou**, nie prekážkou.

---

## Ďalšie Zdroje

- [OPA Policy‑as‑Code pre Mikroslužby](https://www.openpolicyagent.org/docs/latest/policy-language/)