How Apache Flink Processes Streaming Data
Apache Flink is a distributed stream-processing framework that ingests continuous data, applies transformations in parallel, and outputs results with fault tolerance and low latency.
GrabTee Long LangProblem & solution
Grab’s Coban data streaming team addresses production-only Apache Flink deployment failures, which can leave an application unavailable for about 10 minutes while the system observes it and rolls it back. Its Shadow Testing stage runs a new version in parallel with the current Main version, replaying production data without affecting Main outputs and allowing behavior and regressions to be assessed before promotion. The Shadow deployment uses a shadow Kubernetes namespace, a shadow-prefixed application name, isShadow=true, a distinct Job ID, isolated sinks, and connector-specific separation such as suffixed Kafka consumer groups and shifted Debezium Server ID ranges. By default, Shadow runs for one hour while its job-manager status is monitored; users then continue to Main deployment, which receives a 10-minute health check and automatic rollback if unhealthy. The framework isolates Kafka and S3 outputs, prefixes metrics and logs for observability, and plans more connector support.
Flink applications can encounter production-only failures involving traffic volume, production checkpoints or savepoints, and environment-specific dependencies or configurations. The existing deployment process observes a new production version for 10 minutes before automatically rolling it back, causing roughly equivalent downtime.
Shadow Testing deploys the new Flink version alongside the Main application in a shadow Kubernetes namespace. Production data is replicated to the Shadow application, whose runtime flag, distinct Job ID, namespace, application name, and connector-specific source and sink settings keep its results isolated. Shadow stability is monitored for a configured period before the Main deployment proceeds.
Shadow Testing runs a new Flink version beside Main and compares behavior using replicated production data without allowing Shadow results to interfere with Main outputs.
Kafka Shadow sources use consumer groups suffixed with -shadow, while Debezium Change Data Capture sources shift Server ID ranges so both applications receive independent full data streams.
Shadow runs for one hour by default; after users continue, Main receives a 10-minute health check and is automatically rolled back if its job manager is unhealthy.
Summaries are generated from the original by a language model. Check the original before relying on it.
See the idea
Apache Flink is a distributed stream-processing framework that ingests continuous data, applies transformations in parallel, and outputs results with fault tolerance and low latency.
Keep reading
The Good Stuff
Paid picks we use ourselves. Links carry a referral code — a subscription through one earns us a commission at no extra cost to you.
One useful email. Unsubscribe anytime.