Prerequisites

Software and accounts you need before starting the workshop.

Reference

What you need

Requirement For Codespaces For local
GitHub account (free tier) Required Required
Modern web browser Required Required
Docker Desktop (or Docker Engine + Compose v2) Included Required
8 GB RAM available for containers Included Required
Language SDK (see below) Included Required
Newman (optional) Included Optional

The fastest way to get started. Everything is pre-configured in the devcontainer:

  1. Navigate to the workshop repository
  2. Click Code then Codespaces then Create codespace on main
  3. Wait for the post-create script to finish (2-3 minutes)
  4. The devcontainer installs all language SDKs, Docker, Newman, and VS Code extensions automatically

No additional setup is required. Skip to Module 0.


Option B: local setup

If you prefer to run locally, you need Docker and one language SDK.

Docker

Install Docker Desktop (macOS/Windows) or Docker Engine with the Compose v2 plugin (Linux). Verify:

docker compose version
# Docker Compose version v2.x.x

Allocate at least 8 GB of RAM to Docker. The workshop runs 5 application services plus 7 infrastructure containers (Kafka, Postgres, OTel Collector, Tempo, Prometheus, Loki, Grafana).

Language SDK

You only need the SDK for one language – pick the one you are most comfortable with.

Quarkus (Java)

  • JDK 25 – download from Adoptium or use SDKMAN: sdk install java 25-tem
  • Maven 3.9+ – or use the included Maven wrapper (./mvnw)

Verify:

java -version
# openjdk version "25"
mvn -version  # or ./mvnw -version
# Apache Maven 3.9.x

Python

  • Python 3.14 – download from python.org or use pyenv: pyenv install 3.14. The workshop Docker images run Python 3.14 (UBI 9).
  • pip – included with Python

Verify:

python3 --version
# Python 3.14.x
pip3 --version

C# (.NET)

Verify:

dotnet --version
# 10.0.100

Newman (optional)

Newman is the CLI runner for Postman collections. The workshop uses it to run pre-built test scenarios against the services.

npm install -g newman
newman --version

If you prefer, you can use curl instead – the test collections are just HTTP requests.


Verify your setup

Clone the repository and start the stack for your chosen language:

git clone https://github.com/patterncatalyst/domain-driven-design-observability-workshop.git
cd domain-driven-design-observability-workshop/exercises/python  # or quarkus, dotnet
docker compose up --build -d

Wait 30-60 seconds for all services to start, then verify:

# Check all containers are running
docker compose ps

# Check Grafana is accessible
curl -s http://localhost:3000/api/health | jq .

# Run the smoke test
newman run ../../tests/collections/01-checkout-happy-path.json \
  -e ../../tests/environments/local.json

If the smoke test passes, you are ready for Module 0.