Redpanda alternative — Redpanda vs Skippr
Redpanda is a Kafka-API streaming broker (C++, no JVM). Docs currently tag Streaming 26.2 (latest broker tag v26.2.6). Iceberg Topics is an Enterprise feature: enable iceberg_enabled on the cluster, set redpanda.iceberg.mode on the topic, and keep Tiered Storage on. Brokers write Parquet Iceberg v2 into object storage in addition to the log. Modes are key_value (binary value plus a redpanda metadata struct), value_schema_id_prefix (Schema Registry wire format), and value_schema_latest (latest subject schema, no magic byte). Catalogs are files in the same bucket or an Iceberg REST endpoint. You cannot append to an Iceberg table Redpanda did not create. Enabling Iceberg on an existing topic does not backfill. Kafka retention and Iceberg lifetime are separate (iceberg_delete). BYOC bills compute in Redpanda units (1 RPU = 2 vCPU + 8 GB), plus ingress, egress, storage, and a second hourly GB line for Iceberg-topic writes. CDC is not Iceberg Topics. Redpanda Connect's postgres_cdc input is an Enterprise connector; Debezium onto the topic is the other path. This is not Iceberg ∪ WAL you query in one binary.
Skippr is an open Streamhouse you run as one Rust binary. Write skippr.yml (or the same thing in Python), discover, sync. You query live state over Iceberg ∪ WAL, and the history is ordinary Iceberg in your bucket. No RPU. ELT into a warehouse is one path, not the product.
| Feature | Skippr | Redpanda |
|---|---|---|
| Deploy | Single Rust binary, your VPC or on-prem | Redpanda brokers, or Redpanda Cloud / BYOC |
| Schema | In-stream evolution, sibling columns | Schema Registry plus redpanda.iceberg.mode |
| Storage | Open Iceberg on Parquet you own | Kafka log plus Iceberg v2 Parquet (Enterprise). Table must be Redpanda-created |
| CDC | Log-based; fails closed if the dest cannot honour | Connect postgres_cdc (Enterprise) or Debezium onto the topic |
| Query | skipprd query on Iceberg ∪ WAL; history in any Iceberg engine | Kafka consumers on the topic. Iceberg after Spark/Trino/warehouse |
| Pricing | Free self-hosted engine | Iceberg Topics needs Enterprise. BYOC: RPU + ingress + extra Iceberg GB. |
What Redpanda is good at
A Kafka-compatible log you run without ZooKeeper, with Iceberg Topics when that same cluster must also land Parquet for Spark or Snowflake. That is the product. Schema-driven Iceberg columns (value_schema_id_prefix) are why some teams stop running a Connect sink. If the job is "this topic, and also this Iceberg table from the same brokers," that is a real product.
Where the job is wider
Redpanda is a streaming broker. Iceberg Topics is an extra copy in object storage, Iceberg v2, Enterprise-licensed. It is not Iceberg ∪ WAL. There is no skipprd query on in-flight rows. Postgres is not an Iceberg Topics source. CDC still starts in Connect or Debezium. You cannot merge into a table another engine already owns. No backfill when you flip the topic flag.
License math is the ops. Community connectors in Redpanda Connect are Apache-2.0; CDC and Iceberg Topics are not. Skippr will not replace a Redpanda topic that already fans out to many consumers. Skippr also will not speak rpk. Tableflow is the Confluent sibling (separate page).
If the job is "Redpanda we already staff," Redpanda is the narrower tool. If the job is live SQL on Iceberg you run, the broker was never that.
Getting started
Install skipprd from the install guide, or pip install skippr. The three tabs write the same skippr.yml. Then discover, sync, and query.
skippr:
workspace: analytics
skipprd_el_storage_mode: local
pipelines:
orders:
data_source: data_sources.app_db
data_sink: data_sinks.lake
data_sources:
app_db:
Postgres:
host: db.internal
user: skippr_reader
password: ${APP_DB_PASSWORD}
database: app
tables: [orders, customers]
cdc_mode: snapshot_then_cdc
data_sinks:
lake:
AthenaIceberg:
warehouse: s3://my-iceberg-warehouse/
glue_database_name: analytics
athena_workgroup_name: primary
athena_results_s3_bucket: my-athena-results
region: us-east-1
schema_sink: schema_sinks.lake_schema
schema_sinks:
lake_schema:
AthenaIceberg:
warehouse: s3://my-iceberg-warehouse/
glue_database_name: analytics
athena_workgroup_name: primary
athena_results_s3_bucket: my-athena-results
region: us-east-1skipprd --workspace analytics --storage-mode local connect data-source postgres \
--pipeline orders \
--name app_db \
--host db.internal \
--user skippr_reader \
--password '${APP_DB_PASSWORD}' \
--database app \
--tables orders \
--tables customers \
--cdc-mode snapshot_then_cdc
skipprd connect data-sink athenaiceberg \
--pipeline orders \
--name lake \
--warehouse s3://my-iceberg-warehouse/ \
--glue-database-name analytics \
--athena-workgroup-name primary \
--athena-results-s3-bucket my-athena-results \
--region us-east-1
skipprd connect schema-sink athenaiceberg \
--pipeline orders \
--name lake_schemafrom skippr import (
Config,
DataSinkAthenaIceberg,
DataSourcePostgres,
DataSourcePostgresSourceCdcMode,
EnvRef,
LocalStorage,
Pipeline,
)
cfg = Config().workspace("analytics").storage(LocalStorage())
app_db = cfg.data_source(
"app_db",
DataSourcePostgres(
host="db.internal",
user="skippr_reader",
password=EnvRef("APP_DB_PASSWORD"),
database="app",
tables=["orders", "customers"],
cdc_mode=DataSourcePostgresSourceCdcMode.SNAPSHOTTHENCDC,
),
)
lake = cfg.data_sink(
"lake",
DataSinkAthenaIceberg(
warehouse="s3://my-iceberg-warehouse/",
glue_database_name="analytics",
athena_workgroup_name="primary",
athena_results_s3_bucket="my-athena-results",
region="us-east-1",
),
schema_sink="lake_schema",
)
cfg.pipeline("orders", Pipeline(data_source=app_db, data_sink=lake))
cfg.save("skippr.yml")export APP_DB_PASSWORD='your-postgres-password'
skipprd discover --pipeline orders
skipprd sync --pipeline orders --once
skipprd query "SELECT count(*) FROM analytics.orders"Which to choose
Choose Redpanda if you want a Kafka-API broker, and Iceberg Topics as a second copy from those brokers is enough.
Choose Skippr if you want one binary, live SQL on Iceberg ∪ WAL, and files that stay yours. Skippr will not run a Redpanda cluster.
Install from Install. Connector and query reference live in Developer Docs. For optional onboarding in your VPC, Enterprise Jumpstart or Contact.
