Skip to content

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

CategoryExamples
DatabasesPostgreSQL, MySQL, MongoDB, Redis
Message BrokersKafka, RabbitMQ
Search & AnalyticsElasticsearch, OpenSearch
StorageMinIO (S3-compatible)
ProcessingApache Flink, Ververica Platform
Custom AppsYour own Docker images

Component Anatomy

Each component has:

PropertyDescription
LabelIdentifier used in template variables and tab links (e.g., kafka)
Deployment TypeHelm, Docker, or Compose
ResourcesCPU and memory requirements (e.g., 500m CPU, 1Gi RAM)
TabsAccess methods for participants (Terminal, Web UI)
ConfigurationHelm values, environment variables, files, etc.

Component Sources

When adding a component to a scenario, three sources are available:

SourceDescription
CatalogThe 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 ScenarioImport components from an existing scenario in your organization. Useful for reusing a configuration you already tested.
From FileImport 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

ElementDescription
ComponentsThe infrastructure to deploy
InstructionsStep-by-step guidance
SettingsTTL, resources, metadata

Scenario States

StateMeaning
DraftWork in progress, not visible to participants
PublishedAvailable for participants to run

Scenario Lifecycle

  1. Create a new scenario in the Studio
  2. Edit it: add components, write instructions, configure settings
  3. 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

  1. Provisioning: SnapBench creates an isolated Kubernetes namespace
  2. Deployment: Components are deployed in the correct order
  3. Access: Participant gets terminal and web UI access
  4. Execution: Participant follows instructions, interacts with components
  5. Cleanup: After TTL or manual stop, all resources are deleted

Run States

StateNext StateDescription
REQUESTEDRUNNINGRun has been requested, provisioning in progress
RUNNINGSTOPPING or FAILEDComponents are deployed, participant is working
STOPPINGSTOPPEDCleanup 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 CaseExample
Courses"Kafka Fundamentals" with 5 progressive labs
CertificationsSeries of exercises validating skills
OnboardingStep-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

TrackScenario
Collection of scenariosSingle lab
Defines learning pathDefines lab content
Assigns to usersRuns 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:

bash
kafka-topics --create --topic orders \
  --bootstrap-server localhost:9092

You should see "Created topic orders."

Instruction Features

FeatureDescription
MarkdownFull formatting support
Code blocksSyntax highlighting + copy button
Tab navigation[link](tab:component) switches tabs
OrderingDrag 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

Released under the MIT License.