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.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With