-
Notifications
You must be signed in to change notification settings - Fork 13
Relax 1000-user limit on text chats #256
Comments
This is definitely, definitely not fixed |
High priority for SPLASH (and CSCW?), then! |
From Twilio:
Let's just hope we don't cross 3k :) |
Good. But... How confident are we that 3k is enough? Given that SPLASH and ECOOP are colocated, I could actually well imagine more than that number of participants... |
I think that if 3k is a problem, we need to move out of Twilio and into something else. We can also make it somewhat better by removing users from channels when they are offline, so that our limit is 3k concurrent users (rather than 3k total users, including users who are subscribed to a channel but offline). |
We can also make it somewhat better by removing users from channels when they are offline, so that our limit is 3k concurrent users (rather than 3k total users, including users who are subscribed to a channel but offline).
This might make it enormously better!
|
And, it might not work so well, since joining/leaving a channel is an expensive operation - each channel has a limit of 30 actions-per-second (where an action is a subscribe/unsubscribe or message send/update/delete). This would be a bottleneck if 30 people all open Clowdr at the same time (and each of them try to join a whole bunch of channels). Also, we would need to manage read/unread counts on our own (not in Twilio). |
Too bad. This is sounding like a problem...
|
I suspect for our purposes, operating our backend as a read-only mirror of large Twilio chats will be both easy and more than adequate. It would operate something like this:
It would be worth checking the Parse DB load of doing this after my new client-side caching system is ready (since the client side cache could cache such read-only channels thus eliminating duplicate downloads of lots of messages). Also, only fetching recent messages unless someone scrolls back in time would reduce load for our systems. |
For large channels, read/unread counts could be easily emulated - for each user for each large channel, store in Parse DB the last time the user opened that channel, then client side count the number of messages since that time. This would utilise a read-modify-write db transaction. |
I'm not ignoring Rocket.Chat by the way - I've been digging through their scaling documentation, etc. We would either use Rocket as SaaS or as a custom install. The latter is beyond our ability - we would need a full time devops person to even get that running properly. The former is feasible, but: using Rocket.Chat removes our ability to customise the chat. As far as I can see, to integrate it with the "conference program"-system would be tricky. I don't think it will yield the kind of smooth UI we are aiming for. |
@EdNutting I like your design. I think that we might want to make some notification layer on top of Twilio anyway eventually to help manage @ mentions, and eventually deliver daily or hourly digests by email. |
Yes, I think notifications would be a good feature (and beyond Twilio's chat API as there are things like "watched sessions" that we might want to notify about.) Refs: |
Just making sure to confirm that / when this is fixed.
The text was updated successfully, but these errors were encountered: