Hosting: A couple CPU-optimised droplets from Digital Ocean, Firebase
Next.js + Styled Components was a really good choice. When time is limited, reducing any silly roadblocks is really important.
Mediasoup is pretty raw when it comes to setting up basics of video conferencing but allows for a much higher level of customisability and optimising final operational cost. It was a world of pain initially (not many solid examples of how to use it) but worth it at the end.
> Do you think your choices had any impact on your success?
Maybe not on success (reality will verify that in the coming months) but on avoiding any unnecessary failure on the way. I worked and interacted with startups in the past that would get excited and jump on using newest tech (the very first version of Swift or early version of React Native for example...) just to end up battling the unknowns after a couple weeks / months. I try to keep the product fun but keeping the tech stack boring and predictable.
This is neat! Two questions for you:
- how does firebase fit into your stack? I’ve looked at them in the past but their pricing potentially changing makes me nervous
- how many concurrent websocket connectione are you able to support per server? Anecdotally, it seems socket.io struggles to scale beyond 10k or so
The usage is quite minimal, mostly for authentication and storing basic CRUD data. All of the real-time data flies through the servers mostly without being persisted. Firebase indeed gets quite expensive at scale. I'm cheap at heart so I avoid it when I can.
> how many concurrent websocket connections are you able to support per server?
That is a very good question. Nevertheless, I don't think that concurrent WebSocket connections are the bottleneck at the moment. Audio/video and game physics seem to be the biggest drain on the CPU usage which means before I'd get to max WebSocket connections, the machine would be overloaded before.
I did however have a problem though with throughput of a Socket.io server. A basic setup of Socket.io runs on a single thread which means it's easy to clog your event loop when you have a lot of concurrent guests in the same room. I managed to workaround this one quite well with a bunch of hacks - from packet sizes to designing features in a more networking-friendly way.
Front-end: Typescript, Next.js, Styled Components
Back-end: Typescript, Node.js, Express, Socket.io, Express Audio/video: Mediasoup
Deployment: Github workflows, Docker
Analytics: GA, Mixpanel, Sentry
Hosting: A couple CPU-optimised droplets from Digital Ocean, Firebase
Next.js + Styled Components was a really good choice. When time is limited, reducing any silly roadblocks is really important.
Mediasoup is pretty raw when it comes to setting up basics of video conferencing but allows for a much higher level of customisability and optimising final operational cost. It was a world of pain initially (not many solid examples of how to use it) but worth it at the end.
> Do you think your choices had any impact on your success?
Maybe not on success (reality will verify that in the coming months) but on avoiding any unnecessary failure on the way. I worked and interacted with startups in the past that would get excited and jump on using newest tech (the very first version of Swift or early version of React Native for example...) just to end up battling the unknowns after a couple weeks / months. I try to keep the product fun but keeping the tech stack boring and predictable.