Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is there any difference in processing times between AWS Kinesis Firehose and Streams?

Reading over the documentation of both offerings (Firehose and Streams), it sounds like Firehose is "near" real-time with a potential of 60 seconds delay between producing a message to emitting it, whereas Streams documentation makes no mentioning of this potential delay.

Does anyone have any real-world insight into any differences with regards to the message delivery times?

[Notes]

Link to Firehose FAQ mentioning the delay, based on buffer size for S3 events.

like image 340
Joshua Hansen Avatar asked Jun 17 '17 18:06

Joshua Hansen


1 Answers

With Kinesis Streams you can get your processing times to under a second. In my current streams the latency seems to be 5.5 ms for the Kinesis part and 330 ms for processing the record with a Lambda function. That is with a batch size of 1, which means that the lambda function processes records one by one.

Kinesis Streams can be a little expensive. To save some money I used a batch size of 500 in another stream with higher throughput. That added a couple of minutes of latency.

Firehose is generally much cheaper, but also gives limited functionality. If you are streaming a larger amount of data (more than you can 1 MB/minute) you can get the average processing time to under 60 seconds by adding a buffer size hint.

like image 77
Heikki Pulkkinen Avatar answered Nov 07 '22 14:11

Heikki Pulkkinen