Skip to main content

Architecture (State 010 Kubernetes Runtime)

State 010 preserves state 009 browser/API routing behavior while running all services on a local Kubernetes cluster.

  • Inherits architectural baseline from: 009-order-management-matcher
  • Generated from: system/architecture.model.json
  • Canonical flows: ../001-baseline-uncontainerized-parity/system/end-to-end-flows.md

Entry Points​

  • edge-proxy: http://localhost:8080
  • edge-health: http://localhost:8080/health
  • grafana: http://localhost:8080/grafana
  • prometheus: http://localhost:8080/prometheus

Architecture Diagram​

Diagram source
flowchart LR
  developer["Developer"]
  cluster["Kind Kubernetes Cluster"]
  edge["NGINX Edge Proxy"]
  web["Web Front End Angular"]
  account["Account Service"]
  position["Position Service"]
  tradeService["Trade Service"]
  referenceData["Reference Data"]
  people["People Service"]
  nats["NATS Broker"]
  tradeProcessor["Trade Processor"]
  database["Database"]
  grafana["Grafana"]
  prometheus["Prometheus"]
  developer -->|"Starts runtime"| cluster
  developer -->|"Browser access :8080"| edge
  edge -->|"/"| web
  edge -->|"/account-service"| account
  edge -->|"/position-service"| position
  edge -->|"/trade-service"| tradeService
  edge -->|"/reference-data"| referenceData
  edge -->|"/people-service"| people
  edge -->|"/nats-ws"| nats
  edge -->|"/trade-processor"| tradeProcessor
  edge -->|"/grafana"| grafana
  edge -->|"/prometheus"| prometheus
  tradeService -->|"Validate account"| account
  tradeService -->|"Validate ticker"| referenceData
  tradeService -->|"Publish trades/new"| nats
  tradeProcessor -->|"Consume and publish updates"| nats
  tradeProcessor -->|"Persist trade/position state"| database
  account -->|"Account persistence"| database
  position -->|"Query trades/positions"| database
  account -->|"Validate person for account-user mapping"| people

Node Catalog​

NodeKindLabelNotes
developeractorDeveloperRuns local Kind-based Kubernetes runtime.
clusterboundaryKind Kubernetes ClusterLocal cluster namespace and workloads.
edgegatewayNGINX Edge ProxySingle browser entrypoint for UI/API/WebSocket routes.
webfrontendWeb Front End AngularAngular frontend served behind edge proxy.
accountserviceAccount ServiceAccount and account-user APIs.
positionservicePosition ServicePositions and trades query API.
tradeServiceserviceTrade ServiceTrade order submission and validation.
referenceDataserviceReference DataTicker metadata lookup.
peopleservicePeople ServicePerson lookup and matching APIs.
natsmessagingNATS BrokerMessaging backbone for trade, position, pricing, and order lifecycle streams.
tradeProcessorserviceTrade ProcessorConsumes trade events and persists settled state.
databasedatabaseDatabasePostgreSQL persistence service.
grafanaobservabilityGrafanaDashboard and observability visualization UI.
prometheusobservabilityPrometheusMetrics collection and query engine.

State Notes​

  • Functional behavior remains intentionally equivalent to state 009.
  • Primary delta is runtime/operations model (Compose to Kubernetes).
  • Edge proxy remains NGINX-based to keep route semantics stable.
  • Observability stack from state 009 remains available in Kubernetes runtime.