Skip to content

docs: adopt the shared CueLABS Kafka bus in the system design - #263

Open
siyanbolagiggs1 wants to merge 4 commits into
cuesoftinc:mainfrom
siyanbolagiggs1:khalid-dev
Open

siyanbolagiggs1 wants to merge 4 commits into
cuesoftinc:mainfrom
siyanbolagiggs1:khalid-dev

Conversation

@siyanbolagiggs1

Copy link
Copy Markdown

Summary

Upstat shares one Kafka service with Expendit and Apparule. This PR records
that decision and adds the proposed system design, amended to fit it.

  • docs/decisions.md: adds X-11 Shared message bus, identical in
    all three products. Expendit is the keep-alive owner; Upstat runs no
    heartbeat or watchdog.
  • docs/system-design.md (new, [Proposed], awaiting ratification),
    with a shared-bus amendment:
    • Telemetry leaves Kafka: ingest → OpenTelemetry Collector →
      ClickHouse, for traces, logs, metrics, product events and usage. The
      Collector's persistent queue becomes the ClickHouse outage buffer.
    • Config: snapshot objects plus upstat.config.changed replace the
      7 compacted config.* topics.
    • only control-plane events ride the shared lanes (§5.4)
    • 2 partitions instead of 12; one Kafka user upstat, consumer groups
      upstat-<service>
  • .gitignore: ignores local copies of the CueLABS skills and personal
    notes.
  • Merges the latest main.

Related issues

Closes #262

Type of change

  • Bug fix
  • New feature
  • Refactor / chore
  • Documentation
  • Security fix

Affected areas

  • api/common (Go)
  • api/<service>
  • web
  • mobile
  • deploy
  • Other: docs/, .gitignore

Checklist

  • I followed the Contributing guide.
  • Commits follow Conventional Commits (feat:, fix:, chore:…).
  • Lint and tests pass locally. (Docs only; no code changed.)
  • No secrets, credentials, or .env files are committed.
  • Documentation updated where relevant.

Rework needed before ratification (listed in the design's amendment): §5.3
ClickHouse loading, §6.1 monitor evaluation without 12-partition sharding,
§6.3–§6.4 ingest paths, §9.2 and §9.4 buffers and capacity, §10.1 Collector
scaling, and S-2, S-6, S-8.

Expendit, Apparule and Upstat share one Aiven Kafka service (boss,
2026-10-13), under the CueLABS delivery standard's shared-messaging.md:
three lanes (cuelabs.uploads/requests/results), per-product event types,
pointer-only payloads, no compacted topics, one Kafka user per product,
and Expendit as the keep-alive owner. Added word for word in all three
products' cross-cutting decisions.
The [Proposed] system design draft, awaiting the boss's ratification,
with the 2026-10-13 shared-bus amendment (decisions.md X-11): this
product's events on the CueLABS lanes (cuelabs.uploads/requests/results),
pointer-only payloads, no compacted topics, and the sections that need
rework before ratification.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feature]: Adopt the shared CueLABS Kafka bus in the Upstat system design

1 participant