This post from fly.io [1] has a pretty comprehensive survey of the tech available for running users' code safely. It's a good read.
I've been investigating something similar for a feature I want to launch. I'm currently leaning towards running users' code in Kubernetes using Firecracker or gVisor.
My main takeaway has been that while there are good solutions for isolating users' code, there's going to be a lot of worked involved in orchestrating it at scale. I.e. building and storing images, spinning up containers, managing storage, tracking/billing minutes and bandwidth, killing timed-out containers, etc. I have not found a good library for that. It seems like a good use-case for a Kubernetes operator, so I think that's what I'll wind up building.
One powerful way to deal with these problems is event sourcing. It's a reasonably elegant way to materialize a single application-specific cache based on many different data sources. Two great resources:
Makes sense. Why do you think Google and Amazon didn't pursue that approach for services like Cloud Functions and Lambda? Is there a trade-off or is it a matter of complexity?
Looks like a useful product! I think it's neat how you built it directly on Google Sheets. I'd love to hear more about why you made that decision (versus building an independent tool).
Some feedback on the landing page:
- Would be nice with a 2-3 minute demo video
- Put the screenshots (or demo video) closer to the top, so they're visible without scrolling
- Some of the copywriting could be clearer. For example: "Pre-built financial models for SaaS companies, with plug-and-play software built directly in Google Sheets" could be just "Financial models for SaaS companies, directly in Google Sheets"
Last year I read Masters of Doom by David Kushner after someone mentioned it on Hacker News. It was the best book I had read in a long time. It won't improve your skills, but I think it will motivate and inspire you to immerse yourself (if we're talking programming, doing small projects and getting feedback is a better way to improve your skills anyway).
I think you could find some inspiration in cryptocurrency exchanges. Most of them expose public websockets for prices, order books, trades, etc. They're high volume with lots of subscribers.
If you could tell me a little more about the data format, data volumes, number of subscribers, and how you get the data on the backend, I can try to give you some more concrete advice.
I've been investigating something similar for a feature I want to launch. I'm currently leaning towards running users' code in Kubernetes using Firecracker or gVisor.
My main takeaway has been that while there are good solutions for isolating users' code, there's going to be a lot of worked involved in orchestrating it at scale. I.e. building and storing images, spinning up containers, managing storage, tracking/billing minutes and bandwidth, killing timed-out containers, etc. I have not found a good library for that. It seems like a good use-case for a Kubernetes operator, so I think that's what I'll wind up building.
[1] https://fly.io/blog/sandboxing-and-workload-isolation/