Skip to content

v2.1.0 — multicloud

Choose a tag to compare

@SebaScript SebaScript released this 23 Sep 01:24
· 102 commits to main since this release

The multicloud release: the inventory API runs on AWS, talks to its partner API on Google Cloud through an orchestrator, and is observable end to end.

Cross-cloud integration

  • GET /v2/items/:id adds a partner block with a record fetched live from the other cloud (ok, unavailable or disabled; never an error).
  • GET /v2/interop/random hands one item to the other cloud in a domain-agnostic contract.
  • POST /v2/interop/messages is this API's step in the flow: appends an item to the message and stores the accumulated JSON in object storage. ?itemId= picks the item, so a live change shows up in the next message.
  • Partner records are cached for 30 s, failures never are, and DELETE /v2/interop/cache forces a refresh.
  • Every route under /v2 also answers under /api/v2.
  • X-Correlation-Id is honoured, generated when missing, returned and logged.

Kubernetes

  • Liveness and readiness probes, requests and limits, ConfigMap and Secret.
  • Horizontal autoscaling from 2 to 6 replicas on CPU.
  • A PodDisruptionBudget and do-not-disrupt, so node consolidation no longer takes both replicas down at once.

Observability

  • Prometheus metrics: request rate, errors and latency by route pattern, cache hits and misses, cross-cloud lookups.
  • OpenTelemetry, injected by the cluster rather than bundled, sent through a collector to both AWS X-Ray and Grafana Cloud Tempo.
  • Every request log line carries the trace id; every span carries the correlation id.
  • A Grafana Cloud dashboard and alert, templated in observability/.

Deployment

  • deploy/ manifests as templates; filled-in copies stay out of the repository.