Core Concepts
Understanding these concepts is essential for creating effective scenarios.
Component
A component is a deployable building block -a piece of infrastructure that runs in the lab environment.
What Components Represent
| Category | Examples |
|---|---|
| Databases | PostgreSQL, MySQL, MongoDB, Redis |
| Message Brokers | Kafka, RabbitMQ |
| Search & Analytics | Elasticsearch, OpenSearch |
| Storage | MinIO (S3-compatible) |
| Processing | Apache Flink, Ververica Platform |
| Custom Apps | Your own Docker images |
Component Anatomy
Each component has:
| Property | Description |
|---|---|
| Label | Identifier used in template variables and tab links (e.g., kafka) |
| Deployment Type | Helm, Docker, or Compose |
| Resources | CPU and memory requirements (e.g., 500m CPU, 1Gi RAM) |
| Tabs | Access methods for participants (Terminal, Web UI) |
| Configuration | Helm values, environment variables, files, etc. |
Component Sources
When adding a component to a scenario, three sources are available:
| Source | Description |
|---|---|
| Catalog | The component library. By default, the platform's common catalog is available to all organizations. Your organization can complement or override it with custom components. |
| From Scenario | Import components from an existing scenario in your organization. Useful for reusing a configuration you already tested. |
| From File | Import components from a JSON file (scenario export or component definition). |
Scenario
A scenario is a complete lab definition -a package containing everything needed to run a hands-on exercise.
What a Scenario Contains
| Element | Description |
|---|---|
| Components | The infrastructure to deploy |
| Instructions | Step-by-step guidance |
| Settings | TTL, resources, metadata |
Scenario States
| State | Meaning |
|---|---|
| Draft | Work in progress, not visible to participants |
| Published | Available for participants to run |
Scenario Lifecycle
- Create a new scenario in the Studio
- Edit it: add components, write instructions, configure settings
- Publish it to make it available to participants
You can continue editing a published scenario. Changes apply to every new run immediately - no need to re-publish.
Run
A run is an active instance of a scenario -a live lab environment where a participant works.
What Happens During a Run
- Provisioning: SnapBench creates an isolated Kubernetes namespace
- Deployment: Components are deployed in the correct order
- Access: Participant gets terminal and web UI access
- Execution: Participant follows instructions, interacts with components
- Cleanup: After TTL or manual stop, all resources are deleted
Run States
| State | Next State | Description |
|---|---|---|
| REQUESTED | RUNNING | Run has been requested, provisioning in progress |
| RUNNING | STOPPING or FAILED | Components are deployed, participant is working |
| STOPPING | STOPPED | Cleanup in progress |
| STOPPED | - | Run ended, all resources deleted |
| FAILED | - | Something went wrong during provisioning or execution |
Run Isolation
Each run is completely isolated:
- Own Kubernetes namespace
- No access to other runs
- Resources deleted on completion
Track
A track is an ordered collection of scenarios -a learning path that guides participants through a curriculum.
Why Use Tracks
| Use Case | Example |
|---|---|
| Courses | "Kafka Fundamentals" with 5 progressive labs |
| Certifications | Series of exercises validating skills |
| Onboarding | Step-by-step introduction for new team members |
Track Features
- Ordered scenarios: Participants progress in sequence
- User assignment: Control who can access the track
- Default track: Auto-assigned to new organization members
- Reusable scenarios: Same scenario can appear in multiple tracks
Track vs Scenario
| Track | Scenario |
|---|---|
| Collection of scenarios | Single lab |
| Defines learning path | Defines lab content |
| Assigns to users | Runs as instances |
Instruction
An instruction is a step in your scenario -a piece of guidance that tells participants what to do.
Instruction Anatomy
Each instruction has a title and content written in Markdown. For example:
Title: Create a Kafka Topic
Content:
Open the Kafka terminal and run:
bashkafka-topics --create --topic orders \ --bootstrap-server localhost:9092You should see "Created topic orders."
Instruction Features
| Feature | Description |
|---|---|
| Markdown | Full formatting support |
| Code blocks | Syntax highlighting + copy button |
| Tab navigation | [link](tab:component) switches tabs |
| Ordering | Drag to reorder in the Studio |
How Concepts Relate
An Organization contains:
- A Catalog of reusable components
- Tracks, each containing ordered Scenarios
- Users (Authors and Participants)
Each Scenario contains Components and Instructions. When a participant starts a scenario, it creates a Run - an isolated instance with its own namespace and resources.
Next Steps
- Catalog & Components - Explore available components
- Tracks & Scenarios - Organize your content
