I'm building an app that is constantly appending to a buffer while many readers consume from this buffer independently (write-once-read-many / WORM). At first I thought of using Apache Kafka, but as I prefer an as-a-service option I started investigating AWS Kinesis Streams + KCL and it seems I can accomplish this task with them.
Basically I need 2 features: ordering (the events must be read in the same order by all readers) and the ability to choose the offset in the buffer from where the reader starts consuming onwards.
Now I'm also evaluating Google Cloud Platform. As I am reading the documentation it seems that Google Pub/Sub is suggested as the equivalent to AWS Kinesis Stream, but at a more detailed level these products seem a lot different:
- Kinesis guarantees ordering inside a shard, while on Pub/Sub ordering is on a best-effort basis;
- Kinesis has all the buffer (limited to max 7 days) available to readers, which can use an offset to select the starting reading position, while on PubSub only the messages after the subscription are available for consuption.
If I got it right, PubSub cannot be considered a Kinesis equivalent. Perhaps if used together with Google Dataflow? I must confess that I still can't see how.
So, is PubSub an alternative to Kinesis? If not, is there a Google Cloud Product that would fulfill my requirements?
Thanks!