Files
obsidian-sympozium/01-Przegląd/Kluczowe decyzje projektowe.md
2026-03-25 00:05:57 +01:00

65 lines
3.2 KiB
Markdown

# Kluczowe decyzje projektowe
#sympozium #architektura #design-decisions
## Tabela decyzji
| Decyzja | Prymityw K8s | Uzasadnienie |
|---------|-------------|--------------|
| **Jeden [[Pod]] per agent run** | [[Job]] | Izolacja blast-radius, limity zasobów, automatyczne czyszczenie |
| **Filesystem IPC** | emptyDir volume | Agent pisze do `/ipc/`, [[Sidecar Pattern\|bridge sidecar]] obserwuje via fsnotify i publikuje do [[NATS JetStream]] |
| **[[NATS JetStream]]** | [[StatefulSet]] | Durable pub/sub z replay - kanały i control plane bez bezpośredniego couplingu |
| **[[NetworkPolicy]] isolation** | NetworkPolicy | Agent pods mają deny-all egress; tylko IPC bridge łączy się z event busem |
| **Policy-as-[[CRD - Custom Resource Definition\|CRD]]** | [[Admission Webhook]] | `SympoziumPolicy` gatuje narzędzia i sandboxe - enforcement at admission time |
| **Memory-as-SQLite** | [[PersistentVolumeClaim\|PVC]] + sidecar | SQLite z FTS5 na PVC - semantic search, tagging, upgradeable do vector search |
| **Schedule-as-CRD** | CronJob analogy | `SympoziumSchedule` definiuje recurring tasks z cron expressions |
| **Skills-as-[[ConfigMap i Secret\|ConfigMap]]** | ConfigMap volume | SkillPacks generują ConfigMapy montowane w agent pods |
| **Skill [[Sidecar Pattern\|sidecars]] z auto-[[RBAC]]** | Role/ClusterRole | [[Controller i Reconciler\|Controller]] auto-provisionuje efemeryczny RBAC per run |
| **PersonaPacks** | Operator Bundle | Controller stampuje SympoziumInstances, Schedules i memory ConfigMaps |
| **MCP servers as CRD** | [[Deployment]] + Service | MCPServer CRD zarządza lifecycle, probes tools, bridge translates protocol |
| **Node probe [[DaemonSet]]** | DaemonSet | Odkrywa lokalne inference providers - annotuje nody |
## Analiza filozofii architekturalnej
### Ephemeral over Persistent
Fundamentalna decyzja: **każde wywołanie agenta to nowy pod**. To odwrotność podejścia kagent/CrewAI/LangChain, gdzie agent żyje w długo działającym procesie.
**Zalety:**
- Blast-radius ograniczony do jednego poda
- Natywne skalowanie horyzontalne
- Automatyczne czyszczenie po zakończeniu
- Każdy run ma własny [[SecurityContext]]
**Wady:**
- Cold-start per invocation (mitygowany przez warm pools)
- Brak stanu w pamięci między runami (mitygowany przez persistent memory)
### IPC przez system plików
Agent nie komunikuje się bezpośrednio z control plane. Zamiast tego:
```
Agent → /ipc/*.json → fsnotify watcher → NATS → Controller
```
To podejście:
- Eliminuje zależności sieciowe w kontenerze agenta
- Jest language-agnostic (agent mógłby być w dowolnym języku)
- Pozwala na prostą inspekcję (pliki JSON w woluminie)
### Kubernetes jako framework, nie deployment target
Sympozium nie "deployuje się na Kubernetes" - ono **jest Kubernetes**. Każdy koncept platformy mapuje się 1:1 na prymitywy K8s:
- Agent → [[Job]]/[[Pod]]
- Polityka → [[CRD - Custom Resource Definition|CRD]] + [[Admission Webhook]]
- Skill → [[ConfigMap i Secret|ConfigMap]] + [[Sidecar Pattern|Sidecar]] + ephemeral [[RBAC]]
- Schedule → CronJob-like CRD
- Kanał → [[Deployment]]
- Memory → [[PersistentVolumeClaim|PVC]] + SQLite
---
Powiązane: [[Czym jest Sympozium]] | [[Control Plane]] | [[Model bezpieczeństwa Defence-in-Depth]]