Practice map¶
Practice should arrive when an idea is ready to become visible, not after you have finished the entire course. Use the shortest loop that answers your current question:
Read the picture → predict → simulate → run the real system → diagnose
You do not need every column on every visit. A simulation is enough for a first pass. Add the runnable lab when you want to inspect real metrics, and the incident when you want to practise deciding what those metrics mean.
The core practice loops¶
| Idea | Read | Make it visible | Run it | Diagnose |
|---|---|---|---|---|
| Why one key becomes one bottleneck | Partitioning | Kafka partitions | Kafka lab | Kafka lag |
| Why distributed grouping moves bytes | Spark shuffle | Shuffle visualiser | Spark lab | Skewed join OOM |
| Why event time can stop | Flink time | Watermark simulator | Flink lab | Stalled watermark |
| Why physical order changes query cost | ClickHouse | ORDER BY explorer | ClickHouse lab | Slow query |
| Why label choices consume memory | Cardinality | Cardinality calculator | Time-series lab | Use the lab's head-series metric |
| Why a partition key is a capacity decision | Cassandra | Consistent hashing | Cassandra lab | Use the lab's partition histogram |
Focused simulation loops¶
These simulations do not need a full service running locally. Each isolates one mechanism so you can change one variable and see the consequence.
| Mechanism | Read first | Simulation | Stop when you can explain |
|---|---|---|---|
| Queue growth and recovery | Backpressure | Backpressure calculator | Why matching arrival rate stops growth but does not drain the backlog |
| Replica acknowledgements | Kafka replication | ISR failure simulator | Why acks=all depends on the current ISR and min.insync.replicas |
| Snapshot metadata and pruning | Iceberg | Manifest explorer | How a reader finds the current table without listing object storage |
| Row-group pruning | Parquet internals | Row-group explorer | Why sorted data produces useful min/max ranges |
| Probabilistic skipping | Columnar storage | Bloom-filter playground | Why false positives waste reads but never remove correct rows |
| DynamoDB hot keys | DynamoDB | Hot-key simulator | Why table capacity cannot rescue one overloaded partition key |
| Slowly changing dimensions | Data modelling | SCD2 timeline | Which version is valid for an event at a particular time |
A 30-minute practice session¶
- Read through Build the mental picture on the linked concept page.
- Write one prediction before opening the simulation.
- Change one input only and explain the changed output.
- Return to Check your understanding on the concept page.
- Stop, or schedule the runnable lab as a separate session.
A 60-minute lab session¶
- Reproduce the simulation's safe case in the real service.
- Run the lab's Break step and watch the named metric.
- Run the automated check; a
PASSproves the intended condition occurred. - Open the paired incident and rank hypotheses before reading its resolution.
- Write one sentence connecting the design choice to the observed signal.
Start small: Kafka partitions is the easiest first simulation, and the Kafka lab is the most direct first system lab.