|
1 | | -
|
2 | | -# === Beat 1 — Cluster topology (00:25) === |
3 | | -$ kubectl get nodes --show-labels | head -5 |
4 | | -NAME STATUS ROLES AGE VERSION LABELS |
5 | | -hq-demo-control-plane Ready control-plane 6h18m v1.35.0 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,branch=msk,kubernetes.io/arch=amd64,kubernetes.io/hostname=hq-demo-control-plane,kubernetes.io/os=linux,node-role.kubernetes.io/control-plane=,node.kubernetes.io/exclude-from-external-load-balancers=,nodepool=hq-control |
6 | | -hq-demo-worker Ready <none> 6h18m v1.35.0 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,branch=msk,kubernetes.io/arch=amd64,kubernetes.io/hostname=hq-demo-worker,kubernetes.io/os=linux,nodepool=hq-data-tier-a,workload=postgres |
7 | | -hq-demo-worker2 Ready <none> 6h18m v1.35.0 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,branch=msk,kubernetes.io/arch=amd64,kubernetes.io/hostname=hq-demo-worker2,kubernetes.io/os=linux,nodepool=hq-data-tier-b,workload=clickhouse |
8 | | -
|
9 | | -# === Beat 2 — DV2.0 model surface (00:45) === |
10 | | -$ kubectl exec -n dv2 clickhouse-0 -- clickhouse-client --user default --password demo --query "SELECT splitByString('_', name)[1] AS kind, count() FROM system.tables WHERE database='rv' GROUP BY kind ORDER BY kind" |
11 | | -bv 6 |
12 | | -hub 8 |
13 | | -lnk 8 |
14 | | -sat 39 |
15 | | -
|
16 | | -# === Beat 3 — Multi-branch distribution (01:05) === |
17 | | -$ kubectl exec -n dv2 clickhouse-0 -- clickhouse-client --user default --password demo --query "SELECT splitByString('__', record_source)[2] AS branch, count() AS orders, round(count()*100.0/(SELECT count() FROM rv.hub_order),1) AS pct FROM rv.hub_order GROUP BY branch ORDER BY pct DESC FORMAT PrettyCompact" |
18 | | - ┌─branch─┬─orders─┬──pct─┐ |
19 | | -1. │ msk │ 4200 │ 40.5 │ |
20 | | -2. │ spb │ 2500 │ 24.1 │ |
21 | | -3. │ ekb │ 1500 │ 14.5 │ |
22 | | -4. │ dxb │ 1160 │ 11.2 │ |
23 | | -5. │ ala │ 1000 │ 9.7 │ |
24 | | - └────────┴────────┴──────┘ |
25 | | -
|
26 | | -# === Beat 4 — Business Vault MDM (01:25) === |
27 | | -$ kubectl exec -n dv2 clickhouse-0 -- clickhouse-client --user default --password demo --multiline --query "SELECT 'msk' AS branch, count() AS rows, countIf(first_name != '') AS with_pii, countIf(loyalty_segment != '') AS with_loyalty FROM rv.bv_customer_mdm__msk UNION ALL SELECT 'dxb', count(), countIf(first_name != ''), countIf(loyalty_segment IS NOT NULL AND loyalty_segment != '') FROM rv.bv_customer_mdm__dxb FORMAT PrettyCompact" |
28 | | - ┌─branch─┬─rows─┬─with_pii─┬─with_loyalty─┐ |
29 | | -1. │ dxb │ 200 │ 200 │ 0 │ |
30 | | -2. │ msk │ 800 │ 800 │ 640 │ |
31 | | - └────────┴──────┴──────────┴──────────────┘ |
32 | | -
|
33 | | -# === Beat 5a — Cold offload (01:50) === |
34 | | -$ kubectl create job --from=cronjob/dv2-cold-offload-msk cold-demo-3455 -n dv2 |
35 | | -job.batch/cold-demo-3455 created |
36 | | -
|
37 | | -# === Beat 5b — MinIO parquet listing === |
38 | | -$ kubectl exec -n dv2 minio-0 -- mc ls -r local/cold-tier | tail -5 |
39 | | -[2026-05-23 09:44:37 UTC] 6.7KiB STANDARD branch=ala/year=2026/month=05/customers_anon.parquet |
40 | | -[2026-05-23 09:44:32 UTC] 6.7KiB STANDARD branch=dxb/year=2026/month=05/customers_anon.parquet |
41 | | -[2026-05-23 09:44:37 UTC] 8.6KiB STANDARD branch=ekb/year=2026/month=05/customers_anon.parquet |
42 | | -[2026-05-23 10:20:13 UTC] 20KiB STANDARD branch=msk/year=2026/month=05/customers_anon.parquet |
43 | | -[2026-05-23 09:44:32 UTC] 13KiB STANDARD branch=spb/year=2026/month=05/customers_anon.parquet |
44 | | -
|
45 | | -# === Closing (02:00) — Single bootstrap reproduces everything === |
46 | | -$ bash infrastructure/dv2/bootstrap.sh |
47 | | -
|
48 | | -Demo complete. See docs/dv2-multi-branch/demo_evidence.md for the full breakdown. |
| 1 | + |
| 2 | +# === Beat 1 — Cluster topology (00:25) === |
| 3 | +$ kubectl get nodes --show-labels | head -5 |
| 4 | +NAME STATUS ROLES AGE VERSION LABELS |
| 5 | +hq-demo-control-plane Ready control-plane 6h18m v1.35.0 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,branch=msk,kubernetes.io/arch=amd64,kubernetes.io/hostname=hq-demo-control-plane,kubernetes.io/os=linux,node-role.kubernetes.io/control-plane=,node.kubernetes.io/exclude-from-external-load-balancers=,nodepool=hq-control |
| 6 | +hq-demo-worker Ready <none> 6h18m v1.35.0 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,branch=msk,kubernetes.io/arch=amd64,kubernetes.io/hostname=hq-demo-worker,kubernetes.io/os=linux,nodepool=hq-data-tier-a,workload=postgres |
| 7 | +hq-demo-worker2 Ready <none> 6h18m v1.35.0 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,branch=msk,kubernetes.io/arch=amd64,kubernetes.io/hostname=hq-demo-worker2,kubernetes.io/os=linux,nodepool=hq-data-tier-b,workload=clickhouse |
| 8 | + |
| 9 | +# === Beat 2 — DV2.0 model surface (00:45) === |
| 10 | +$ kubectl exec -n dv2 clickhouse-0 -- clickhouse-client --user default --password demo --query "SELECT splitByString('_', name)[1] AS kind, count() FROM system.tables WHERE database='rv' GROUP BY kind ORDER BY kind" |
| 11 | +bv 6 |
| 12 | +hub 8 |
| 13 | +lnk 8 |
| 14 | +sat 48 |
| 15 | + |
| 16 | +# === Beat 3 — Multi-branch distribution (01:05) === |
| 17 | +$ kubectl exec -n dv2 clickhouse-0 -- clickhouse-client --user default --password demo --query "SELECT splitByString('__', record_source)[2] AS branch, count() AS orders, round(count()*100.0/(SELECT count() FROM rv.hub_order),1) AS pct FROM rv.hub_order GROUP BY branch ORDER BY pct DESC FORMAT PrettyCompact" |
| 18 | + ┌─branch─┬─orders─┬──pct─┐ |
| 19 | +1. │ msk │ 9540 │ 95.4 │ |
| 20 | +2. │ spb │ 180 │ 1.8 │ |
| 21 | +3. │ ekb │ 130 │ 1.3 │ |
| 22 | +4. │ dxb │ 75 │ 0.8 │ |
| 23 | +5. │ ala │ 75 │ 0.8 │ |
| 24 | + └────────┴────────┴──────┘ |
| 25 | + |
| 26 | +# === Beat 4 — Business Vault MDM (01:25) === |
| 27 | +$ kubectl exec -n dv2 clickhouse-0 -- clickhouse-client --user default --password demo --multiline --query "SELECT 'msk' AS branch, count() AS rows, countIf(first_name != '') AS with_pii, countIf(loyalty_segment != '') AS with_loyalty FROM rv.bv_customer_mdm__msk UNION ALL SELECT 'dxb', count(), countIf(first_name != ''), countIf(loyalty_segment IS NOT NULL AND loyalty_segment != '') FROM rv.bv_customer_mdm__dxb FORMAT PrettyCompact" |
| 28 | + ┌─branch─┬─rows─┬─with_pii─┬─with_loyalty─┐ |
| 29 | +1. │ dxb │ 60 │ 60 │ 0 │ |
| 30 | +2. │ msk │ 2190 │ 2190 │ 152 │ |
| 31 | + └────────┴──────┴──────────┴──────────────┘ |
| 32 | + |
| 33 | +# === Beat 5a — Cold offload (01:50) === |
| 34 | +$ kubectl create job --from=cronjob/dv2-cold-offload-msk cold-demo-3455 -n dv2 |
| 35 | +job.batch/cold-demo-3455 created |
| 36 | + |
| 37 | +# === Beat 5b — MinIO parquet listing === |
| 38 | +$ kubectl exec -n dv2 minio-0 -- mc ls -r local/cold-tier | tail -5 |
| 39 | +[2026-05-23 09:44:37 UTC] 6.7KiB STANDARD branch=ala/year=2026/month=05/customers_anon.parquet |
| 40 | +[2026-05-23 09:44:32 UTC] 6.7KiB STANDARD branch=dxb/year=2026/month=05/customers_anon.parquet |
| 41 | +[2026-05-23 09:44:37 UTC] 8.6KiB STANDARD branch=ekb/year=2026/month=05/customers_anon.parquet |
| 42 | +[2026-05-23 10:20:13 UTC] 20KiB STANDARD branch=msk/year=2026/month=05/customers_anon.parquet |
| 43 | +[2026-05-23 09:44:32 UTC] 13KiB STANDARD branch=spb/year=2026/month=05/customers_anon.parquet |
| 44 | + |
| 45 | +# === Closing (02:00) — Single bootstrap reproduces everything === |
| 46 | +$ bash infrastructure/dv2/bootstrap.sh |
| 47 | + |
| 48 | +Demo complete. See docs/dv2-multi-branch/demo_evidence.md for the full breakdown. |
0 commit comments