Skip to main content

Data flows

Service-to-service traffic patterns in a production OpenBox deployment. See Component diagram for the visual companion.

Traffic table

TrafficPathProtocolPurpose
User HTTPSALB → Istio Gateway → openbox-core-server / openbox-backend / openbox-fe / temporal-web / openbox-core-codecHTTPS 443UI + API entry point
Workflow startopenbox-core-{governance,attestation,observability}-worker + scheduler → temporal-frontend :7233 → temporal-history / temporal-matching → PostgreSQL + ElasticsearchgRPC 7233Async orchestration
Auth (OIDC)openbox-backend + openbox-coreidentity-service (Keycloak)HTTPS OIDCUser identity, JWT tokens
Policy decisionopenbox-backend + openbox-coreopa-app :8181HTTP/JSONAuthorization rules
Guardrails inferenceopenbox-coreguardrails-api :8000 → model-host-detect-pii / model-host-nsfw / model-host-toxicityHTTP/RESTCPU ML content filter
Prompt injection detectionopenbox-corellamafirewall-servervllm (Qwen3-8B)HTTP/RESTDeep LLM analysis (GPU)
Envelope encryptionopenbox-backend + openbox-core → AWS KMSHTTPS AWS APIEncrypt/decrypt data at rest
Policy bundle pullopa-app ← S3 GETHTTPS S3 APIPeriodic policy CDN refresh
Session cacheopenbox-core-serveropenbox-core-redis :6379Redis TCPSession state
App DBopenbox-backendopenbox-postgresql :5432JDBCTransactional storage
Identity DBidentity-serviceopenbox-identity-postgresql :5432JDBCKeycloak realms/users/tokens
Temporal store (self-hosted only)temporal-frontend/history/matchingopenbox-postgres-temporal :5432JDBCWorkflow history

Latency targets (internal SLO)

Pathp50p99
Internal REST call< 5 ms< 20 ms
gRPC to temporal-frontend< 3 ms< 15 ms
KMS Encrypt / Decrypt< 50 ms< 200 ms
S3 GET (OPA bundle refresh)< 100 ms< 500 ms
Guardrails CPU inference< 200 ms< 800 ms
LlamaFirewall + vllm inference< 500 ms~2000 ms

Targets are per-service — not cross-service transaction time. E2E user-facing latency depends on how many services a request touches.

East-west vs north-south

  • North-south (user → cluster): only the Istio Gateway is exposed externally. All other services are cluster-internal.
  • East-west (service → service): Istio sidecar auto-injects mTLS between pods (chart default). Turning Istio off = plaintext east-west; combine with NetworkPolicy for defense-in-depth.

Failure modes to know about

  • openbox-core workers cannot start workflows if temporal-frontend is unreachable — pods stay Running but log connection errors
  • guardrails-api HPA panics under sudden traffic spikes (fixed 2-min metrics window); pre-warm before load tests
  • opa-app pulls bundle at startup — if S3 is unreachable, pod is Ready but has empty policy = default-deny for all requests
  • KMS API throttling at extreme scale (~500 rps per key) — envelope encryption's DEK caching absorbs most of this