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

3.2 KiB

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 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 Admission Webhook SympoziumPolicy gatuje narzędzia i sandboxe - enforcement at admission time
Memory-as-SQLite PersistentVolumeClaim + 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 volume SkillPacks generują ConfigMapy montowane w agent pods
Skill Sidecar Pattern z auto-RBAC Role/ClusterRole Controller i Reconciler 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:


Powiązane: Czym jest Sympozium | Control Plane | Model bezpieczeństwa Defence-in-Depth