A team wants Postgres order data in Snowflake. 2M orders a day, one consumer today. Kafka with Debezium, or a nightly Airflow extract? Argue both and commit to one.
Why they ask this
The signature trade-off question of the subject. Interviewers are not checking which you pick — they are checking whether you can name the cost of the one you did not pick, and whether you asked what the data is for.
Say this
Start from a nightly extract unless the freshness requirement is real, because it is one scheduled job against a permanently running distributed system. Kafka earns its cost when several consumers need the same events, or when minutes matter.
The reasoning
The extract's advantages are almost all operational. It is a job that runs, succeeds or fails, and can be rerun; there is no cluster, no retention policy, no consumer lag, and nobody carries a pager for it. It is also trivially reprocessable — run it again for a different date. Against that, it puts periodic load on the source, cannot see intermediate states between runs, and has a floor on freshness set by the schedule.
Kafka's real advantage is usually misidentified as latency. The more durable one is *fan-out*: publish once and let five consumers read independently, with a replayable log in between that decouples producer from consumer. If three teams each want order events, the extract answer means three extracts hitting the same database. That is the argument that survives scrutiny; 'we want it faster' often does not.
So the answer depends on two questions, and asking them is most of the signal. How many consumers want these events, and what changes if they arrive at 09:00 instead of overnight? One consumer and a morning deadline is an extract, and building Kafka for it means running a distributed log to serve one nightly reader. Several consumers, or a genuine minutes-matter requirement, and the platform pays for itself. **What would change my answer**: the moment a second and third consumer appear for the same data, or the source can no longer absorb repeated full extracts.
The formulations
scheduled job -> full or incremental extract -> keyed merge
One job, rerunnable, no always-on infrastructure. The correct default for a single consumer.
producer -> topic (retained) -> N independent consumers
Earns its operational cost on fan-out and replay, not on latency alone.
producer -> topic -> a single warehouse sink
A permanently running distributed system serving one reader. A 15-minute batch usually meets the same need.
The answer most people give
"Kafka, because it scales." Scale is rarely the binding constraint at the volumes most teams have, and the sentence skips the question that decides it — how many consumers there are. Naming a tool before naming the requirement is what interviewers are listening for.
They’ll ask next
They confirm one consumer and a 09:30 meeting. Now what do you build, and what would make you revisit it in a year?
