Deploying Cassandra
Distributed NoSQL DB for high write throughput, multi-region, and linear scalability.
PlatformsAdvanced
Why
Cassandra is designed for high write throughput across commodity hardware with no single point of failure. It uses consistent hashing for data distribution and tunable consistency.
Platform-as-a-Service adoption grew 24% in 2024 as teams shift from VM management to git-push deploys. the cloud infrastructure market reached $330B in 2024, growing 22% year-over-year (Synergy Research), and PaaS layers capture the majority of new workloads.
When
Use Cassandra for time-series, IoT, and write-heavy workloads needing multi-region. Avoid for ad-hoc queries (CQL is limited).
How
1. Docker — cassandra:4 image
2. Cluster — 3+ nodes, same seed nodes
3. Keyspace — replication factor and strategy
4. Table — CQL CREATE TABLE with partition key
5. Replication — NetworkTopologyStrategy for multi-DC
6. Compaction — SizeTiered or Leveled compaction strategy
7. CQL — cqlsh or driver for queries
Example
# docker-compose.yml — 3 node cluster
services:
cass1: { image: cassandra:4, environment: { CASSANDRA_SEEDS: "cass1" } }
cass2: { image: cassandra:4, environment: { CASSANDRA_SEEDS: "cass1" } }
cass3: { image: cassandra:4, environment: { CASSANDRA_SEEDS: "cass1" } }
# Create keyspace and table
cqlsh cass1 9042 -e "
CREATE KEYSPACE myapp WITH replication = {'class':'SimpleStrategy','replication_factor':3};
CREATE TABLE myapp.events (id uuid, ts timestamp, data text, PRIMARY KEY (id, ts));
"
# Insert and query
cqlsh cass1 9042 -e "INSERT INTO myapp.events (id, ts, data) VALUES (now(), toTimestamp(now()), 'hello'));"
cqlsh cass1 9042 -e "SELECT * FROM myapp.events;"
Common Problems
- ⚠Single node no HA — development only, production needs 3+ nodes
- ⚠Bad partition key — hot spot, choose key that distributes evenly
- ⚠Configuration drift between environments — use infrastructure-as-code (Terraform/Pulumi) to keep dev/staging/prod identical
Best Practices
- ✓Use 3+ nodes with replication factor 3 — tolerates 1 node failure
- ✓Design schema for queries — Cassandra is query-first, no ad-hoc joins
- ✓Set up health checks and graceful shutdown — handle SIGTERM to drain in-flight requests before exit