aws-samples / aws-samples/sample-edge-to-cloud-digital-ops-workshop
[Epic] Frac load generator + dashboard time-series panels
- Dominant language
- TypeScript
- Stars
- 3
- Forks
- 1
- Avg merge
- 7h 19m
- Merged PRs (30d)
- 12
Description
# Epic — Frac load generator + dashboard time-series panels
Let an operator run a **local** script that generates realistic well-fracturing telemetry at configurable volume, push it into the **cloud MSK** cluster, and **watch the data stores behave under load** via three new time-series panels on the cloud-analytics dashboard (ingest volume, freshness-over-time, query-latency-over-time).
**Design spec:** [https://github.com/aws-samples/sample-edge-to-cloud-digital-ops-workshop/blob/feat/frac-load-dashboard-timeseries/docs/superpowers/specs/2026-09-09-frac-load-and-dashboard-timeseries-design.md](https://github.com/aws-samples/sample-edge-to-cloud-digital-ops-workshop/blob/feat/frac-load-dashboard-timeseries/docs/superpowers/specs/2026-09-09-frac-load-and-dashboard-timeseries-design.md) (branch `feat/frac-load-dashboard-timeseries`).
### Key design facts
- Only **RisingWave, TimescaleDB, InfluxDB** read MSK; **Athena/Iceberg + AppSync are MQTT-only** and stay flat under a direct-MSK load (accepted non-goal).
- Target topic **`sensors.raw.sim`**, real frac schema `{sensor, value, unit, ts_ms, site_id}`, `site_id` prefixed `ws-slotNN-…` — **zero pipeline schema changes**.
- Reachability: **sshuttle over SSH-over-SSM** to an EKS node (plain SSM port-forward breaks on multi-broker DNS).
- Freshness/latency trends use a **client-side ring buffer** (~600 pts), not a server-side history table.
### Child issues (implement in order, one PR)
1. #268 — local frac → MSK producer + sshuttle/SSM tunnel
2. #269 — `mv_fleet_ingest_rate` MV + `/api/volume` route *(blocks #270)*
3. #270 — dashboard time-series panels + ring buffer *(blocked by #269)*
4. #271 — tests: generator schema + screenshot assertions *(blocked by #268, #270)*
### Scope for the remote agent
Write all code and land it in **one PR** closing #268→#269→#270→#271 in order. Agent acceptance is **offline/static** (`--dry-run`, `pnpm build`/typecheck, `shellcheck`, `helm template` where relevant). **Live-slot validation — real tunnel, real MSK produce, screenshot against a running slot — stays with the local credentialed session and is NOT required from the agent.**
Contributor guide
Research direction
Start with the linked design spec, then read child issues #268 through #271 in order to map the producer, API route, dashboard panels, and tests. Validate the work with the specified offline checks—dry-run, pnpm build/typecheck, shellcheck, and helm template where relevant; done means one PR completes all four child issues, while live MSK and screenshot validation remains out of scope.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- aws, kafka, kubernetes, typescript
- Domain
- cloud, data, devops, frontend, observability
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Active
- Clarity
- Clearly specified
- Newbie friendliness
- 25/100