Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

easy-db-lab

easy-db-lab creates lab environments for database evaluations in AWS. It provisions infrastructure, deploys databases, and sets up a full observability stack so you can focus on testing, benchmarking, and learning.

Supported databases include Apache Cassandra, ClickHouse, TiDB, and OpenSearch, with Trino, Presto, and Apache Spark available for analytics workloads.

If you are looking for a tool to aid in stress testing Cassandra clusters, see the companion project cassandra-easy-stress.

If you're looking for tools to help manage Cassandra in production environments please see Reaper, cstar, and K8ssandra.

Quick Start

  1. Install easy-db-lab
  2. Set up your profile - Run easy-db-lab setup-profile
  3. Follow the tutorial

Features

Database Support

  • Apache Cassandra: Versions 3.0, 3.11, 4.0, 4.1, 5.0, and trunk builds. Includes custom build support, Cassandra Sidecar, and integration with cassandra-easy-stress for benchmarking.
  • ClickHouse: Sharded clusters with configurable replication, distributed tables, and S3-tiered storage.
  • TiDB: MySQL-compatible HTAP clusters deployed via the TiDB Operator, with TiKV row storage for OLTP and TiFlash columnar storage for analytics.
  • Trino: Distributed SQL query engine with federation support for querying across data sources.
  • Presto: Distributed SQL query engine for in-memory analytics.
  • OpenSearch: AWS OpenSearch domains for search and analytics.
  • Apache Spark: EMR-based Spark clusters for analytics workloads.

AWS Integration

  • EC2 Provisioning: Automated provisioning with configurable instance types
  • EBS Storage: Optional EBS volumes for persistent storage
  • S3 Backup: Automatic backup of configurations and state to S3
  • IAM Integration: Managed IAM policies for secure operations

Kubernetes (K3s)

  • Lightweight K3s: Automatic K3s cluster deployment across all nodes
  • kubectl/k9s: Pre-configured access with SOCKS5 proxy support
  • Private Registry: HTTPS Docker registry for custom images
  • Jib Integration: Push custom containers directly from Gradle

Monitoring and Observability

  • VictoriaMetrics: Time-series database for metrics storage
  • VictoriaLogs: Centralized log aggregation
  • Tempo: Distributed trace storage with trace-to-metrics correlation
  • Pyroscope: Continuous profiling of database and system processes
  • Grafana: Pre-configured dashboards for Cassandra, ClickHouse, and system metrics
  • OpenTelemetry: Distributed tracing and metrics collection
  • eBPF Observability: Beyla for L7 network metrics and ebpf_exporter for low-level kernel metrics
  • AxonOps: Optional integration with AxonOps for Cassandra monitoring and management

Developer Experience

  • Shell Aliases: Convenient shortcuts for cluster management (c0, c-all, c-status, etc.)
  • Server: Integration with Claude Code for AI-assisted operations
  • Restore Support: Recover cluster state from VPC ID or S3 backup
  • SOCKS5 Proxy: Secure access to private cluster resources

Stress Testing

  • cassandra-easy-stress: Native integration with Apache stress testing tool
  • Sysbench: OLTP benchmarks against any MySQL- or PostgreSQL-compatible kit, with live results in Grafana
  • Kubernetes Jobs: Run stress tests as K8s jobs for scalability
  • Artifact Collection: Automatic collection of metrics and diagnostics