Managed Flink
Managed Apache Flink for stateful stream processing: windows, joins, enrichment and exactly-once delivery that a per-record function cannot hold. You write the job in Java, Python or SQL; AWS runs the Flink cluster, scales it, and keeps the state. Capacity is measured in KPUs, one vCPU and 4 GB each.
Streams in, a stateful job in the middle, results out.
Source connectors track read positions (Kinesis sequence numbers, Kafka offsets) inside each checkpoint, so a restart replays from the last committed point and state stays consistent. Checkpoints run automatically to the 50 GB of running storage allocated per KPU; snapshots are optional durable backups you take on stop or on a schedule for point-in-time restore. Sinks reach exactly-once only where the destination supports a transactional or idempotent write (for example the S3/Iceberg and Kafka connectors).
Same engine, three front ends.
Java (DataStream API)
The full Flink API: custom operators, timers, broadcast state, complex event processing. Packaged as a JAR on S3. The most control, the most code.
PyFlink
The Table and DataStream APIs in Python, with user-defined functions. Fits teams whose logic and libraries already live in Python.
Flink SQL / Studio
Windows, joins and aggregations as SQL. A Studio notebook runs it interactively against a live stream, then deploys the same query as a streaming application.
A few decisions set the cost and whether it keeps up.
Do you actually need state
Flink earns its cost when the answer depends on past events: sliding windows, stream joins, enrichment against reference data, deduplication. For stateless per-record work, a Lambda consumer or a Firehose transform is simpler and cheaper.
Parallelism and ParallelismPerKPU
KPUs allocated = Parallelism / ParallelismPerKPU. Raising ParallelismPerKPU packs more tasks onto each KPU, which pays off when operators wait on I/O (lookups, sink writes). Default is 1, max 8; parallelism default max is 256.
Autoscaling or fixed capacity
Autoscaling adds KPUs on a throughput spike and removes them gradually. Fix the KPU count for steady load or tight cost control. If you plan to scale past parallelism 128, set maxParallelism up front: changing it later breaks restore from an existing snapshot.
Bar lengths are illustrative of task density per KPU, not measured throughput.
A Managed Flink bill, in one line.
Industrial-grade data pipelines
Use cases in production, not POCs: tests, CI/CD, lineage, on-call that sleeps at night.
Read the approach →The one-page Managed Flink field guide.
Best practices, cost traps and performance checks, in the order you should run them. Printable, no fluff.