Atlas is built to answer a practical question in multi-cloud environments:

Why is this bill this much?

The system is designed around two constraints: (1) cost and usage data is repeatable and should be replayable, and (2) the UI must support fast drilldowns by provider, region, product, and time window.

Architecture goals

  • Repeatable ingestion and reproducible analysis
  • A replayable event log for backfills and reprocessing
  • A time-series store optimized for drilldowns and comparisons
  • A query layer that supports interactive exploration
  • A forecasting path for planning and “what-if” scenarios

Data flow (high level)

Provider signals → gRPC ingest → Redpanda → Postgres/TimescaleDB → Hasura GraphQL → Deck.gl UI
Forecasting jobs (Pandas) consume from the same store and publish projections back for visualization.

Ingest: gRPC subscriptions

Atlas connects via gRPC to provider FinOps endpoints to subscribe to cost and usage signals. The ingest layer normalizes records into an immutable event shape (provider, region, product, time, cost, usage, and contract context when available).

Transport: Redpanda event stream

Cost/usage data is naturally replayable. Redpanda is used as the durable event log:

  • backfills are just replays
  • new transforms can be applied without re-ingesting from providers
  • downstream consumers can evolve independently

Storage: Postgres + TimescaleDB

Redpanda sinks into Postgres with TimescaleDB hypertables for time-series facts. The core table is modeled as append-only facts keyed by:

  • time window
  • provider / region / product
  • account/project/subscription identifiers
  • optional allocation dimensions (team, environment, cost center)

This structure enables fast drilldowns, comparisons, and aggregation.

Query layer: Hasura GraphQL

Hasura exposes GraphQL endpoints over the relational model. This keeps the frontend simple:

  • dimension-based drilldowns
  • time-window filters
  • provider/region/product pivots
  • consistent query patterns for all views

Forecasting: Pandas + scenarios

Forecasting is treated as analysis, not magic:

  • baseline trend projections
  • what-if growth scenarios
  • Monte Carlo runs for confidence bands and sensitivity

Projections are stored alongside actuals so the UI can overlay “actual vs forecast.”

Visualization: Deck.gl

Deck.gl renders Atlas as a “presence and cost map”:

  • region/provider footprints
  • drilldowns by product/service
  • time-series overlays
  • anomaly surfaces when patterns break