
# Kombineeritav AI mikro‑teenuste arhitektuur skaleeritava turvaküsimustiku automatiseerimiseks

Ettevõtted vajuvad üha kasvavasse turvaküsimustike, müügiülevaadete ja nõuetele vastavuse auditite lainele. Traditsioonilised monoliitilised tööriistad ei suuda sammu pidada, eriti kui nad peavad integreeruma erinevate toodete ökosüsteemidega, toetama mitmekeelseid päringuid ning pakkuma reaalajas auditeerimisjälgi.  

**Kombineeritav mikro‑teenuste arhitektuur**, mis põhineb suurtel keelemudelitel (LLM-id) ja taasesitamispõhistel generatsioonil (RAG), pakub võimalust skaleerida automatiseerimist, säilitades samal ajal reguleeritud tööstuste nõutava paindlikkuse ja valitsemise. Selles juhendis me:

* Kirjeldame põhi­disainipõhimõtteid, mis hoiavad süsteemi **turvalisena, auditeeritavana ja laiendatavana**.  
* Läbime viitepõhise rakenduse, mis on joonistatud Mermaid‑diagrammiga.  
* Näitame, kuidas iga teenust saab eraldiseisvalt juurutada Kubernetes‑is, serverless FaaS‑is või äärealade jooksutuses.  
* Anname praktilisi parimad‑tava soovitusi andmete valitsemiseks, jälgitavuseks ja pidevaks täiustamiseks.

> **TL;DR:** Lõika küsimustiku automatiseerimise platvorm väikesteks, selgelt määratletud teenusteks, lase LLM‑idel asuda staatusevaba järelduskihis ja kasuta sündmusjuhtseid torujuhtmeid, et hoida tõendite ja versioonikontrolli ühte tõepoolest allikat.

---

## 1. Miks valida kombineerimine hiiglasliku monoliidi asemel?

| Monoliitne lähenemine | Kombineeritav mikro‑teenused |
|-----------------------|------------------------------|
| Üks koodibaas, spetsiifiliste töökoormuste (nt LLM‑juhendamine) skaleerimine on keeruline. | Iseseisev skaleerimine – AI‑juhendamine võib toimida GPU‑sõlmedel, samal ajal kui salvestus püsib odavamates objektipoed. |
| Tihe sidumine muudab uuendused riskantseks; viga UI‑s võib maha viia kogu süsteemi. | Lahkus sidumisest asünkroonsete sündmuste või HTTP‑APIde kaudu eraldab tõrkeid. |
| Piiratud keele‑agnostiline integratsioon – tihti lukus ühte tehnoloogiasse. | Polüglootne tugi – iga teenus võib olla kirjutatud oma ülesandeks kõige sobivamas keeles (Go – autentimine, Python – LLM‑orkestreerimine, Rust – kõrgsageduslikud torujuhtmed). |
| Auditeerimine ja nõuetele vastavus muutuvad õuduseks, kuna logid põimuvad. | Keskne sündmuste hoidla + muutumatud auditilogid pakuvad selget, päringutavanäidet regulaatoritele. |

**Kombineeritav** mudel omaks võtab *„ehitad, mida vajad, ja asendad, mida mitte“* filosoofia. See sobib ideaalselt turvaküsimustike dünaamilise olemusega, kus uued kontrolliraamistikud (nt [ISO 27001 Rev 2](https://www.iso.org/standard/27001)) ilmuvad regulaarselt ja meeskonnad peavad kiiresti kohanema.

---

## 2. Põhitunnused arhitektuuris

1. **Stateless API värav** – kasutajaliidese, SaaS‑ühenduste ja väliste tööriistade sisenemispunkt. Haldab autentimist, päringu valideerimist ja koormuse piiranguid.  
2. **Domeenispetsiifilised mikro‑teenused** – igaüks kapseldab oma kontekstiga seotud toiminga:  
   * **Küsimustiku teenus** – salvestab küsimustiku meta‑andmed, versioonimise ja ülesannete jaotuse.  
   * **Tõendite teenus** – haldab artefakte (poliitikaid, ekraanipilte, auditilogisid) muutumatult objektipoes.  
   * **AI koordineerimise teenus** – koostab prompt‑id, käivitab RAG‑torujuhtme ja tagastab vastuse mustandid.  
   * **Muutuste tuvastamise teenus** – jälgib tõendite uuendusi, käivitab mõjutatud vastuste uuesti hindamise.  
   * **Teavituste teenus** – lükkab Slacki, Teamsi või e‑posti sündmusi sidusrühmadele.  
3. **Sündmuste buss (Kafka / Pulsar)** – tagab vähemalt‑korra sõnumite kohaletoimetamise domeen­sündmustele (nt `EvidenceUploaded`, `AnswerDrafted`).  
4. **Jälgitavuse virn** – OpenTelemetry jälgijad teenuste vahel, Prometheus‑metriikad ja Loki‑logid.  
5. **Policy‑as‑Code mootor** – hindab nõuetele vastavuse reegleid (kirjutatud Rego või OPA) enne vastuse märkimist “lõplikuks”.  

Kõik teenused suhtlevad **gRPC**‑ga (madala latentsusega) või **REST**‑iga (väliste integratsioonide jaoks). Disain julgustab *rumedad torujuhtmed, tühjad torud* – äri‑loogika elab seal, kus see kuulub, buss lihtsalt sõnumeid transpordib.

---

## 3. Andmevoog – küsimusest auditeeritava vastuseni

Allpool on Mermaid‑diagramm, mis visualiseerib tüüpilist päringu elutsüklit.

```mermaid
flowchart TD
    subgraph UI["Kasutajaliides"]
        UI1["Veebiliides"] -->|Saada küsimustik| AG["API värav"]
    end

    AG -->|Autentsus & valideerimine| QMS["Küsimustiku teenus"]
    QMS -->|Hangi mall| AIOS["AI koordineerimise teenus"]
    AIOS -->|Too välja asjakohased tõendid| ES["Tõendite teenus"]
    ES -->|Tõendite objektid| AIOS
    AIOS -->|Genereeri mustandi vastus| RAG["RAG torujuhe"]
    RAG -->|LLM‑väljund| AIOS
    AIOS -->|Salvesta mustand| QMS
    QMS -->|Väljastab AnswerDrafted| EB["Sündmuste buss"]
    EB -->|Käivitab| CDS["Muutuste tuvastamise teenus"]
    CDS -->|Uuesti käivita, kui tõend muutub| AIOS
    CDS -->|Väljastab AnswerUpdated| EB
    EB -->|Teavita| NS["Teavituste teenus"]
    NS -->|Push Slack/iEmail| 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
```

**Olulised hetked voos**:

1. **Kasutaja esitab** uue küsimustiku või valib olemasoleva.  
2. **API värav** valideerib JWT, kontrollib koormuse piiranguid ja edastab Küsimustiku teenusele.  
3. **Küsimustiku teenus** tõmbab küsimustiku malli ja saadab sündmuse AI koordineerimise teenusele.  
4. **AI koordineerimine** teeb *taaseotud sammu* – pärib Tõendite teenusest kõiki artefakte, mis on praeguse kontrolli jaoks asjakohased (vektor‑sarnasus või märksõna otsing).  
5. Toetavad kontekstid koos prompt‑malliga sisestatakse **RAG‑torujuhtu** (nt `openAI/gpt‑4o‑preview`).  
6. Mustandi vastus salvestatakse tagasi Küsimustiku teenusesse, märgistades selle *„ootab ülevaatust“*.  
7. **Muutuste tuvastamise teenus** jälgib uute tõendite üleslaadimist. Kui poliitika uuendatakse, käivitab see RAG‑torujuhtu mõjutatud vastuste jaoks uuesti.  
8. Lõplikud ülevaatajad aktsepteerivad või muudetavad mustandit; aktsepteerimisel **Policy‑as‑Code mootor** kinnitab, et vastus rahuldab kõik reeglipiirangud enne muutumatu auditilogisse kinnitamist.  

---

## 4. Rakenduse üksikasjad

### 4.1. API värav (Envoy + OIDC)

* **Routing** – `POST /questionnaires/:id/answers` → `questionnaire-service`.  
* **Turvalisus** – Nõua ulatusi (`questionnaire:write`).  
* **Koormuse piirang** – 100 päringut/min ühe tenant’i kohta, et kaitsta LLM‑kulude ülekoormist.

### 4.2. Küsimustiku teenus (Go)

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

* Kasutab **PostgreSQL**i relatsiooniandmete jaoks, **EventStoreDB**-d domeenisündmusteks.  
* Pakub gRPC meetodid `GetTemplate`, `SaveDraft`, `FinalizeAnswer`.

### 4.3. Tõendite teenus (Python + FastAPI)

* Salvestab failid **MinIO**s või **AWS S3**s, krüpteerides konteineri tasandil.  
* Indekseerib sisu **Qdrant**‑i (vektor‑DB) sarnasuse otsinguks.  
* Pakub lõpp‑punkti `POST /search`, mis võtab päringu ja tagastab top‑k artefaktide ID‑d.

### 4.4. AI koordineerimise teenus (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** – Kombineerib vektor‑otsingu tõenditega süsteem‑prompti, mis juhib mudelit viitama tõendite ID‑dele.  
* **Puhverdamine** – Salvestab genereeritud vastused 24 tunniks, et vältida dubleerivaid LLM‑päringuid.

### 4.5. Muutuste tuvastamise teenus (Rust)

* Telli `EvidenceUploaded` sündmusi.  
* Arvuta uue artefakti **hash**, tee **diff** olemasolevate tõendite suhtes, mis on seotud iga kontrolliga.  
* Kui diff ületab konfigureeritud läve, avalda `AnswerRequiresRegen`.

### 4.6. Teavituste teenus (Node.js)

* Kuulab `AnswerDrafted`, `AnswerFinalized`, `AnswerRequiresRegen`.  
* Vormindab Slacki plokke, Teamsi Adaptive Cardi või e‑posti malle.  
* Toetab **deduplikatsiooni** – teavitatakse üks kord muutuse kohta ühes küsimustikus.

---

## 5. Turvalisus & valitsemine

| Mure | Leevendus |
|------|-----------|
| **Andmeleke** – LLM‑promptid võivad sisaldada tundlikku poliitika teksti. | Kasuta **koha‑sisest LLM‑juhendamist** (nt Llama 3.2) VPC‑s. Maskeeri PII enne välistele API‑dele saatmist. |
| **Volitamata tõendite juurdepääs** | Rakenda peen‑taseme ACL‑id OPA‑reeglitega Tõendite teenuses. |
| **Mudelidünaamika** – Vastused halvenevad aja jooksul. | Planeeri **perioodilised hindamised** benchmark‑korpusega ning uuenda prompt‑mallid. |
| **Auditeerimise keerukus** | Kõik olekumuutused salvestatakse muutumatutesse sündmuste logisse, mis on WORM S3‑s. |
| **GDPR/CCPA** | Rakenda **õigus olla unustatud** töövoog, mis kustutab kasutajaspetsiifilised tõendid vektor‑DB‑st ja objektipoest ([GDPR](https://gdpr.eu/)). |
| **ISO 27001** | Kontrolli, et tõendite säilitamine, krüpteerimine ja juurdepääsukontrollid vastavad ISO 27001 standardile. |
| **HIPAA / SOC 2** | Laienda OPA‑reeglid, et kehtestada vajalikud kaitsemeetmed tervishoiu‑ või SaaS‑pakkujate jaoks. |

---

## 6. Skaleerimise strateegiad

1. **Horisontaalne pod‑skaalimine (HPA)** – skaleeri AI koordineerimise pod‑e GPU‑kasutuse (`nvidia.com/gpu`) põhjal.  
2. **Mõllu‑tõmbed** – kasutage Kafka‑partitsioone, et eraldada suure liiklusega tenant‑e.  
3. **Külma käivitamise vähendamine** – hoia LLM‑juhendamise konteinerid soojas reservi (nt **KEDA** kohandatud skaalaajaga).  
4. **Kulukont rollid** – rakenda **token‑põhine eelarve** tenant‑i kohta; automaatne koormuse piiramine või ülekandmise sisestus.

---

## 7. Jälgitavus & pidev täiustamine

* **Jaotatud jälgimine** – OpenTelemetry spaani kasutus UI‑päring → API‑värav → AI koordineerimine → RAG → Tõendite teenus.  
* **Mõõdikud** – `answer_draft_latency_seconds`, `evidence_upload_bytes`, `llm_token_usage`.  
* **Logi kogumine** – struktureeritud JSON‑logid `request_id`‑ga, mis kandub kõikide teenuste vahel.  
* **Tagasiside tsükkel** – pärast vastuse lõplikku kinnitamist salvesta ülevaataja kommentaarid (`review_score`). Toida need **reinforcement learning** mudelisse, mis kohandab promptide temperatuuri või valib alternatiivseid tõendeid.

---

## 8. Samm‑sammuline migreerimistee olemasolevatele meeskondadele

| Faas | Eesmärk | Tegevused |
|------|---------|-----------|
| **0 – Avastus** | Kaardista praegune küsimustiku töövoog. | Identifitseeri andmeallikad, määra kontrolliraamistik. |
| **1 – Alustamine** | Deploy API‑värav, autentimine ja baas‑teenused. | Konteinerda `questionnaire-service` ja `evidence-service`. |
| **2 – AI sisseviimine** | Käivita RAG pilootküsimustikus. | Kasuta liivakasti LLM‑i, valideeri mustandid käsitsi. |
| **3 – Sündmus‑automatiseerimine** | Ühenda Muutuste tuvastamise torujuhe. | Luba automaatne uuesti hindamine tõendi muutumisel. |
| **4 – Valitsemise karmistamine** | Lisa OPA‑reeglid, muutumatud auditilogid. | Lülita tootmise LLM‑i (koha‑sisene). |
| **5 – Skaleerimine & optimeerimine** | Auto‑skaaleeri GPU‑pod‑e, rakenda kulukontrollid. | Deploy jälgitavuse virn, sea SLO-d. |

Kombineeritud arhitektuuri järkjärguline kasutuselevõtt aitab vältida „suur‑puhang“ riske ja võimaldab varakult ROI‑d näidata (tihti **30‑50 %** kiirendab küsimustiku täitmist).

---

## 9. Tulevikukindel virn

* **Föderaalse õpe** – treeni kergeid adaptereid iga tenant’i andmetel, liigutamata toor‑tõendeid väljapoole, suurendades vastuste asjakohasust ja andmesuvereccioni.  
* **Zero‑Trust teenuste võrgustik** – kasuta **Istio** või **Linkerd** mutuaalse TLS‑iga teenustevahelisele liiklusele.  
* **Semantiline valitsemine** – laienda Policy‑as‑Code mootorit, et kontrollida mitte ainult vastuse sisu, vaid ka **semantilist sarnasust** tõende ja kontrolli keele vahel.  
* **Generatiivne jälgitavus** – salvesta täpsed LLM‑temperatuur, top‑p, süsteem‑prompt iga vastuse juures, et pakkuda forenseks inspektsiooniks.

---

## 10. Kokkuvõte

Kombineeritav mikro‑teenuste arhitektuur muudab turvaküsimustiku automatiseerimise **valulikust käsitsi tegevusest** **skaleeritavaks, auditeeritavaks ja pidevalt paranevaks mootoriks**. Tänu vastutuse eraldamisele, LLM‑ide kasutamisele staatusevabas RAG‑kihis ja sündmus‑juhtsele selgroole suudavad organisatsioonid:

* Vastata müügi‑ ja hanke‑hindamistele minutite, mitte päevade jooksul.  
* Hoida nõuetele vastavuse tõendeid alati ajakohasena automaatse muutuste tuvastamisega.  
* Tagada regulatoritele selge, muutumatu auditijälg.

Alusta väikeselt, iteratsiooni kiirusega ja lase mikro‑teenuste filosoofial juhatada sind tulevikku, kus **nõuetele vastavus on omadus, mitte takistus**.

---

## Vaata ka

- [OPA Policy‑as‑Code mikro‑teenustele](https://www.openpolicyagent.org/docs/latest/policy-language/)