Data Insights Platform - Usage Billing
Overview
Section titled “Overview”These Data Insights Platform (DIP) instances help ingest consumption-based billable_usage events from internal consumption services, e.g. AI-Gateway (AIGW) and export it to customerdot ClickHouse Cloud instances.
Following is a brief overview of its setup in these environments:

- production:
billing.prdsub.gitlab.netonprdsubGKE environment. - staging:
billing.stgsub.gitlab.netonstgsubGKE environment.
Access to these clusters
Section titled “Access to these clusters”- All currently provisioned DIP instances should be accessible to on-call engineers. The access to these underlying GKE clusters follows our standard VPN-based tool chain as documented here.
- In case of other folks needing access to these environments, an access request needs to be created - for example.
Cluster Topology
Section titled “Cluster Topology”Within these environments, we setup DIP in the single-deployment mode which allows us to run all DIP components within the same statefulset. This deployment mode keeps our topology simple to begin with.
Note, if needed, we can run each of the components in their own deployments/statefulsets to scale cluster throughput further.
For example, on the stgsub GKE cluster:
➜ ~ kubectl -n data-insights-platform get statefulsetNAME READY AGEdata-insights-platform-single 3/3 70d
➜ ~ kubectl -n data-insights-platform get podsNAME READY STATUS RESTARTS AGEdata-insights-platform-ingress-nginx-controller-596f47b544vdgr6 1/1 Running 0 11ddata-insights-platform-single-0 1/1 Running 0 20hdata-insights-platform-single-1 1/1 Running 0 20hdata-insights-platform-single-2 1/1 Running 0 20hWe can of course, scale the statefulset to multiple replicas - in this case 3.
Observability
Section titled “Observability”SLIs for Data Insights Platform within customerdot environment is defined in its specific metrics-catalog file, and available on Grafana here.
Metrics
Section titled “Metrics”- production: Grafana dashboard
- staging: Grafana dashboard
Alerts
Section titled “Alerts”(work in progress)
Infrastructure & Networking
Section titled “Infrastructure & Networking”production: billing.prdsub.gitlab.net
Section titled “production: billing.prdsub.gitlab.net”| Entity | Details |
|---|---|
| Provider | GCP/GKE |
| GCP Project | gitlab-subscriptions-prod |
| Region | us-east1 |
| Networks | |
| DNS Names | billing.prdsub.gitlab.net |
| Deployment configs | In config-mgmt repository In gitlab-helmfiles repository |
| Cloudflare settings | In config-mgmt repository Zone: billing.prdsub.gitlab.net Host: billing.prdsub.gitlab.net |
staging: billing.stgsub.gitlab.net
Section titled “staging: billing.stgsub.gitlab.net”| Entity | Details |
|---|---|
| Provider | GCP/GKE |
| GCP Project | gitlab-subscriptions-staging |
| Region | us-east1 |
| Networks | |
| DNS Names | billing.stgsub.gitlab.net |
| Deployment configs | In config-mgmt repository In gitlab-helmfiles repository |
| Cloudflare settings | In config-mgmt repository Zone: billing.stgsub.gitlab.net Host: billing.stgsub.gitlab.net |
How data flows across these system(s)
Section titled “How data flows across these system(s)”For Usage Billing deployments, following is a good representation of how usage-billing data flows across the various systems and/or network boundaries.

- Duo Agent Platform requests and/or workflows are sent to be processed on AIGW.
- AIGW first calls CustomerDot to check entitlements & allocated GitLab credits to enforce cutoff and/or overages.
- Once clear to move forward and having processed the request, a corresponding billable_usage event is emitted to billing.prdsub.gitlab.net backed by Data Insights Platform (DIP).
- DIP ingests & parses these events internally, eventually exporting it to CustomerDot-owned ClickHouse Cloud instance.
- CustomerDot then fetches these parsed events from their ClickHouse Cloud instance; extracts necessary information from the payload, enriches it as needed and runs all usage-based billing logic.
- Once processed, fully-enriched events are bulk-uploaded to Zuora via their API for eventual revenue recognition with users/customers.
- Subsequently, fully-enriched events are also bulk-uploaded to Snowflake for internal analytical purposes.