Search code examples
amazon-kinesisamazon-kinesis-firehoseamazon-kinesis-kpl

Kinesis vs KPL vs KCL


This is somewhat of a shallow-level question. However, I perplexed by this trio of services.

I understand that KPL produces fast data and KCL consumes fast data produced by Kinesis. However, what I fail to understand is the if KPL and KCL make up this pair, what do we need AWS Kinesis for?

Another way to look at it: If AWS Kinesis can produce the fast data and KCL can consume it, then what we need KPL for?

Any clarifying answer is greatly appreciated.


Solution

  • AWS Kinesis is a very broad platform. Roughly , you can think of AWS Kinesis as: Kinesis Data Streams + Kinesis Video Streams + Kinesis Firehose + Kinesis Analytics. (Each one has its own purpose).

    More detail here: https://aws.amazon.com/kinesis/

    Now, lets take Kinesis Data Streams, for example: What if you are a developer and you need feed data to a specific Kinesis Data Stream programatically (i.e. SDK)? This is where KPL comes into play. You use KPL to feed data to THAT stream.

    Similar Story with KCL:

    If you are a developer and you want get data ("consume") from that DATA STREAM, you use KCL.

    In short: AWS Kinesis is huge platform, where KCL and KPL serve specific purposes.