
# Ölçeklenebilir Güvenlik Anketi Otomasyonu için Bileşenlenebilir AI Mikro‑servis Mimarisi

Şirketler, giderek artan güvenlik anketleri, satıcı değerlendirmeleri ve uyum denetimleri dalgası içinde boğuluyor. Geleneksel monolitik araçlar ayak uydurmakta zorlanıyor; özellikle farklı ürün ekosistemleriyle entegrasyon, çok dilli isteklerin desteklenmesi ve gerçek zamanlı denetim izlerinin sağlanması gerektiğinde.  

**Bileşenlenebilir bir mikro‑servis mimarisi**, büyük dil modelleri (LLM'ler) ve geri alma destekli üretim (RAG) etrafında inşa edildiğinde, otomasyonu ölçeklendirirken düzenlemeli sektörlerin talep ettiği esnekliği ve yönetişimi korumanın bir yolunu sunar. Bu rehberde:

* Sistemi **güvenli, denetlenebilir ve genişletilebilir** tutan temel tasarım ilkelerini özetleyeceğiz.  
* Mermaid ile çizilmiş bir referans uygulamasını adım adım inceleyeceğiz.  
* Her servisin Kubernetes, sunucusuz FaaS veya kenar ortamlarında bağımsız olarak nasıl dağıtılacağını göstereceğiz.  
* Veri yönetişimi, gözlemlenebilirlik ve sürekli iyileştirme için somut en iyi uygulama önerileri sunacağız.

> **ÖZET:** Anket otomasyon platformunu küçük, iyi tanımlanmış servislere bölün, LLM'leri durum‑sız çıkarım katmanının arkasına koyun ve kanıt ve sürüm kontrolü için tek bir gerçek kaynağı koruyan olay‑tabanlı boru hatlarını kullanın.

---

## 1. Neden Devasa Bir Monolit İnşa Etmek Yerine Bileşenlemek?

| Monolitik Yaklaşım | Bileşenlenebilir Mikro‑servis |
|---------------------|-------------------------------|
| Tek kod tabanı, belirli iş yüklerini (ör. LLM çıkarımı) ölçeklendirmesi zor. | Bağımsız ölçekleme – AI çıkarımı GPU düğümlerinde çalışırken depolama daha uygun maliyetli nesne depolarında kalır. |
| Sıkı bağlı yapı, güncellemeleri riskli hâle getirir; UI'deki bir hata tüm sistemi çökertir. | Asenkron olaylar ya da HTTP API'ları üzerinden gevşek bağlayıcı, hataları izole eder. |
| Dil‑agnostik entegrasyon sınırlı – genelde tek bir yığına kilitlenir. | Poliglot destek – her servis görevine en uygun dilde yazılabilir (Go kimlik doğrulama için, Python LLM orkestrasyonu için, Rust yüksek‑verimli boru hatları için). |
| Günlükler iç içe olduğu için denetleme ve uyum bir kabus olur. | Merkezi olay deposu + değiştirilemez denetim kaydı, düzenleyiciler için net, sorgulanabilir bir iz sağlar. |

**Bileşenlenebilir** model, *“İhtiyacınız olanı inşa edin, ihtiyacınız olmayanı değiştirin”* felsefesini benimser. Güvenlik anketlerinin dinamik doğasıyla eşleşir; yeni kontrol çerçeveleri (ör. [ISO 27001 Rev 2](https://www.iso.org/standard/27001)) düzenli olarak ortaya çıkar ve ekiplerin hızlıca uyum sağlaması gerekir.

---

## 2. Temel Mimari Sütunlar

1. **Durumsuz API Ağ Geçidi** – UI, SaaS bağlayıcıları ve dış araçlar için giriş noktası. Kimlik doğrulama, istek doğrulama ve hız sınırlamayı yönetir.  
2. **Alan‑Spesifik Mikro‑servisler** – Her biri sınırlı bir bağlamı kapsar:
   * **Anket Servisi** – Anket meta verilerini, sürüm yönetimini ve görev atamalarını saklar.  
   * **Kanıt Servisi** – Değiştirilemez nesne deposunda (policy, ekran görüntüsü, denetim logları) varlıkları yönetir.  
   * **AI Orkestrasyon Servisi** – Promptları birleştirir, RAG boru hatlarını çalıştırır ve yanıt taslaklarını döner.  
   * **Değişiklik Algılama Servisi** – Kanıt güncellemelerini izler, ilgili yanıtların yeniden değerlendirilmesini tetikler.  
   * **Bildirim Servisi** – Slack, Teams ya da e‑posta olaylarını ilgili paydaşlara gönderir.  
3. **Olay Otobüsü (Kafka / Pulsar)** – Domain olaylarının (ör. `EvidenceUploaded`, `AnswerDrafted`) en az bir kez teslim edilmesini garantiler.  
4. **Gözlemlenebilirlik Yığını** – OpenTelemetry izleri, Prometheus ölçümleri ve Loki günlükleri.  
5. **Kod‑Olarak‑Politika Motoru** – Bir yanıt “final” olarak işaretlenmeden önce uyum kurallarını (Rego veya OPA ile) değerlendirir.  

Tüm servisler **gRPC** (düşük gecikme) ya da **REST** (dış entegrasyon) üzerinden iletişim kurar. Tasarım, *“aptal borular, akıllı uçlar”* prensibini benimser—iş mantığı ilgili uçta, boru sadece mesajları taşır.

---

## 3. Veri Akışı – Sorudan Denetlenebilir Yanıta

Aşağıdaki Mermaid diyagramı, tipik bir istek yaşam döngüsünü görselleştirir.

```mermaid
flowchart TD
    subgraph UI["Kullanıcı Arayüzü"]
        UI1["\"Web UI\""] -->|Anket gönder| AG["\"API Ağ Geçidi\""]
    end

    AG -->|Kimlik doğrula & Doğrula| QMS["\"Anket Servisi\""]
    QMS -->|Şablonu al| AIOS["\"AI Orkestrasyon Servisi\""]
    AIOS -->|İlgili kanıtları getir| ES["\"Kanıt Servisi\""]
    ES -->|Kanıt nesneleri| AIOS
    AIOS -->|Taslak yanıt üret| RAG["\"RAG Boru Hattı\""]
    RAG -->|LLM çıktısı| AIOS
    AIOS -->|Taslağı sakla| QMS
    QMS -->|Olay yay| EB["\"Olay Otobüsü\""]
    EB -->|Tetikle| CDS["\"Değişiklik Algılama Servisi\""]
    CDS -->|Kanıt değiştiğinde yeniden çalıştır| AIOS
    CDS -->|Olay yay| EB
    EB -->|Bildirim gönder| NS["\"Bildirim Servisi\""]
    NS -->|Slack/E‑posta gönder| 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
```

**Akıştaki önemli adımlar**:

1. **Kullanıcı yeni bir anket gönderir** ya da mevcut bir anketi seçer.  
2. **API Ağ Geçidi**, JWT'yi doğrular, hız sınırlarını kontrol eder ve Anket Servisine yönlendirir.  
3. **Anket Servisi**, anket şablonunu alır ve AI Orkestrasyon Servisine bir olay gönderir.  
4. **AI Orkestrasyon**, *geri alma adımı* gerçekleştirir—İlgili kontrolle ilişkili tüm varlıkları Kanıt Servisinden (vektör benzerliği ya da anahtar kelime eşleşmesiyle) çeker.  
5. Çekilen bağlam ve prompt şablonu, **RAG boru hattına** (ör. `openAI/gpt‑4o‑preview`) beslenir.  
6. Taslak yanıt, Anket Servisine geri döner ve *“inceleme bekliyor”* olarak işaretlenir.  
7. **Değişiklik Algılama Servisi**, yeni kanıt yüklemelerini izler. Bir politika güncellendiğinde, etkilenmiş yanıtlar için RAG yeniden tetiklenir.  
8. Son inceleme yapanlar taslağı kabul ya da düzenler; kabul edildiğinde **Kod‑Olarak‑Politika Motoru**, yanıtın tüm kural kısıtlamalarını karşıladığını doğrular ve değiştirilemez bir denetim günlüğüne kaydeder.  

---

## 4. Uygulama Detayları

### 4.1. API Ağ Geçidi (Envoy + OIDC)

* **Yönlendirme** – `POST /questionnaires/:id/answers` → `questionnaire-service`.  
* **Güvenlik** – `questionnaire:write` kapsamını zorunlu kılar.  
* **Hız sınırlama** – Her kiracı başına dakikada 100 istek, LLM maliyetlerini korur.

### 4.2. Anket Servisi (Go)

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

* İlişkisel veri için **PostgreSQL**, domain olayları için **EventStoreDB** kullanır.  
* gRPC metodları: `GetTemplate`, `SaveDraft`, `FinalizeAnswer`.

### 4.3. Kanıt Servisi (Python + FastAPI)

* Dosyaları **MinIO** ya da **AWS S3** içinde bucket‑seviyesinde şifreleme ile saklar.  
* İçeriği **Qdrant** (vektör DB) içinde indeksler; benzerlik araması yapılır.  
* `POST /search` uç noktası, bir sorgu alır ve en iyi *k* varlık kimliğini döner.

### 4.4. AI Orkestrasyon Servisi (Python)

```python
def generate_answer(question: str, evidence_ids: List[str]) -> str:
    evidence = fetch_evidence(evidence_ids)
    context = "\n".join(evidence)
    prompt = f"""Sen bir uyum uzmanısın.
    Aşağıdaki kanıtları kullanarak soruya özlü bir yanıt ver:\n{context}\n\nSoru: {question}"""
    response = client.chat.completions.create(
        model="gpt-4o-mini",
        messages=[{"role":"system","content":prompt}]
    )
    return response.choices[0].message.content
```

* **RAG** – Vektör araması ile sistemi birleştirir, modelden kanıt kimliklerini belirtmesini ister.  
* **Önbellekleme** – Üretilen yanıtları 24 saat saklar; tekrar LLM çağrılarından kaçınır.

### 4.5. Değişiklik Algılama Servisi (Rust)

* `EvidenceUploaded` olaylarını dinler.  
* Yeni varlığın **hash**'ini hesaplayıp mevcut kanıtla karşılaştırır; eşik aşılırsa `AnswerRequiresRegen` yayar.  

### 4.6. Bildirim Servisi (Node.js)

* `AnswerDrafted`, `AnswerFinalized`, `AnswerRequiresRegen` olaylarını dinler.  
* Slack blokları, Teams Adaptive Card'ları ya da e‑posta şablonları oluşturur.  
* **Tekrarlama önleme** – Aynı anket için bir değişiklikte yalnızca bir kez bildirim gönderir.

---

## 5. Güvenlik ve Yönetişim

| Endişe | Azaltma Yöntemi |
|--------|------------------|
| **Veri Sızıntısı** – LLM promptları hassas politika metni içerebilir. | **VKG içinde LLM çıkarımı** (ör. Llama 3.2) VPC arkasında tutun. Kişisel verileri dış API'lara göndermeden maskeleyin. |
| **Yetkisiz Kanıt Erişimi** | OPA politikalarıyla **ince ayarlı ACL**'ler uygulayın. |
| **Model Kayması** – Yanıt kalitesi zamanla düşer. | **Periyodik değerlendirme** ve benchmark veri kümesiyle promptları yeniden eğitin. |
| **Denetlenebilirlik** | Tüm durum geçişleri **değiştirilemez olay günlüğüne** (WORM S3) kaydedilir. |
| **GDPR/CCPA Uyumu** | **Unutulma hakkı** iş akışı; kullanıcıya ait kanıtlar vektör DB ve nesne deposundan silinir ([GDPR](https://gdpr.eu/)). |
| **ISO 27001 Uyumu** | Kanıt saklama, şifreleme ve erişim kontrol politikalarının ISO 27001 standardına uygunluğu doğrulanır. |
| **HIPAA / SOC 2** | OPA kuralları, gerekli sağlık ve hizmet güvenliği korumalarını zorunlu kılar. |

---

## 6. Ölçekleme Stratejileri

1. **Yatay Pod Otomatik Ölçekleme (HPA)** – AI Orkestrasyon pod'larını GPU kullanımına göre (nvidia.com/gpu) ölçekleyin.  
2. **Patlama‑Kapasiteli Kuyruklar** – Kafka bölümlendirmesiyle yüksek trafikli kiracıları izole edin.  
3. **Soğuk Başlangıç Azaltma** – LLM çıkarım sunucusu için **KEDA** ile sıcak konteyner havuzu tutun.  
4. **Maliyet Kontrolleri** – Kiracı bazlı **token bütçesi** uygulayın; aşımı otomatik olarak kısıtlayın ya da faturalandırın.

---

## 7. Gözlemlenebilirlik & Sürekli İyileştirme

* **Dağıtılmış İz** – OpenTelemetry, UI isteğinden API Ağ Geçidi → AI Orkestrasyon → RAG → Kanıt Servisi'ne kadar tüm izleri kapsar.  
* **Ölçümler** – `answer_draft_latency_seconds`, `evidence_upload_bytes`, `llm_token_usage`.  
* **Günlük Toplama** – `request_id` tüm servislere yayılır; yapılandırılmış JSON günlükleri **Loki**'de birleştirilir.  
* **Geri Bildirim Döngüsü** – Yanıt final edildikten sonra inceleme yorumları (`review_score`) toplanır; bu veriler **takviye öğrenme** modeliyle prompt sıcaklığı ve kanıt seçim stratejisini ayarlar.

---

## 8. Mevcut Takımlar İçin Adım‑Adım Göç Yol haritası

| Aşama | Hedef | Faaliyetler |
|-------|-------|-------------|
| **0 – Keşif** | Mevcut anket iş akışını haritalayın. | Veri kaynaklarını belirleyin, kontrol taksonomisi tanımlayın. |
| **1 – Temeller** | API Ağ Geçidi, kimlik doğrulama ve temel servisleri dağıtın. | `questionnaire-service` ve `evidence-service` konteynerleştirin. |
| **2 – AI Entegrasyonu** | Pilot bir ankette RAG çalıştırın. | Sandbox LLM kullanın, taslakları manuel doğrulayın. |
| **3 – Olay‑Tabanlı Otomasyon** | Değişiklik Algılama boru hattını bağlayın. | Kanıt güncellemesinde otomatik yeniden üretim etkinleştirin. |
| **4 – Yönetişim Sertleştirme** | OPA politikaları ve değiştirilemez denetim günlükleri ekleyin. | Üretim LLM'ye geçin (kurumsal içinde). |
| **5 – Ölçekleme & Optimizasyon** | GPU podlarını otomatik ölçekleyin, maliyet kontrolleri kurun. | Gözlemlenebilirlik yığını dağıtın, SLO'ları tanımlayın. |

Adım adım bileşenlenebilir mimariyi benimseyerek, takımlar büyük bir “büyük patlama” riskinden kaçınır ve erken ROI (genellikle **%30‑50 daha kısa anket yanıt süresi**) gösterir.

---

## 9. Yığını Geleceğe Hazırlama

* **Federated Learning** – Ham kanıtları yerinde tutarken, her kiracının verileriyle hafif adaptörler eğitin; yanıt alaka düzeyini artırırken veri egemenliğini koruyun.  
* **Zero‑Trust Servis Ağı** – **Istio** ya da **Linkerd** ile mutual TLS uygulayarak iç servis trafiğini güvenceye alın.  
* **Semantik Yönetişim** – Kod‑Olarak‑Politika motorunu, sadece yanıt içeriğini değil, kanıt ve kontrol dilinin **semantik benzerliğini** de doğrulayacak şekilde genişletin.  
* **Üretken İzlenebilirlik** – Her yanıtla birlikte LLM sıcaklığı, top‑p ve sistem promptunu saklayın; denetim incelemelerinde forensik kanıt sağlayın.

---

## 10. Sonuç

Bileşenlenebilir mikro‑servis mimarisi, güvenlik anketi otomasyonunu **zor bir manuel iş** yerine **ölçeklenebilir, denetlenebilir ve sürekli gelişen bir motor** haline dönüştürür. Sorumlulukları ayırarak, LLM'leri stateless RAG katmanının arkasına koyarak ve tüm sistemi bir olay‑tabanlı omurgayla bağlayarak, organizasyonlar:

* Satıcı değerlendirmelerine dakikalar içinde yanıt verir.  
* Kanıtları otomatik olarak güncel tutar.  
* Düzenleyicilere net, değiştirilemez bir denetim izi sunar.  

Küçük başlayın, hızlı yineleyin ve bileşenlenebilir mikro‑servis felsefesinin, uyumu bir **özellik**, yük bir **engelli** haline getirdiği geleceğe doğru ilerleyin.

---

## İlgili Bağlantılar

- [OPA Mikro‑servisler için Kod‑Olarak‑Politika](https://www.openpolicyagent.org/docs/latest/policy-language/)