Which pub/sub service to horizontally scale y-websocket?

Hi everyone, first of all, great work with Yjs, really love it.

As some others in this community, I also have been wondering how to horizontally scale a client/server based backend, preferably using some (modified) version of y-websocket.

As @dmonad and braden pointed out (post), you can do this using a pub/sub service like Redis pub/sub.

@kapv89 implemented a working version of this using Redis pub/sub (thread)

  1. Question: Why has Redis pub/sub apparently been the first choice for this? Is there any reason Redis Pub/Sub fits the task better than any other pub/sub service, for example Google Cloud Pub/Sub?

  2. Question: Afaik, most Pub/Sub services do not persistently store messages, so an additional data storage is needed to regularly store “snapshots” of the document. What do you think about using persistent log-based message systems like Kafka? Wouldnt it be able to act as a message queue and persistent data storage (source of truth) all in one? What might be the downsides that might make you prefer separate message services and data store like Redis Pub/Sub + some storage service?