We have built a multi-party conferencing WebRTC app using an SFU. One of its features is to record a live meeting in the backend which will be uploaded to Cloud storage once it's completed.
Since the workload is quite intensive and unpredictable (depending on how many Users choose to record or not) we are interested in extracting the functionality from our "Main" app and moving execution into the Cloud. For someone who's new to Serverless-land, it is quite overwhelming to get started. We are hosting our services in GCP and I've looked at their offered solutions App Engine, Run, Functions (and others) but none seem to fit our requirements very well. Can someone give a recommendation on which provider/product would be best suited for our needs?
The process is quite elaborate (which is exactly why we would like to remove it from the rest of our code). In short, it looks a bit like this:
- Receive signal to start recording with the desired MeetingID
- Spawn Puppeteer to visit an HTML page where we display all Videos in a custom layout
- Connect with SocketIO to start the WebRTC session
- Receive all Media
- Use MediaRecorder API and Audio API to mix the media together
- Pipe the resulting stream into ffmpeg to save it to disk
- Receive signal to stop recording and upload the generated file
Our desired solution would look something like this:
- Ability to scale from 0 to N (each call should ideally be isolated from each other and run in its own environment)
- Startup time of maximum 5 seconds (Container or common boot disk perhaps?)
- Allow up to 2 hours of execution time
I'd greatly appreciate any input. Thank you, SO