Basically I’m wondering:
Do you ever need to use a persistent server anymore, or does Vercel’s product offering somehow cover that now? Like do I need to use DigitalOcean, GCP, AWS, etc., for anything that Vercel won’t be able to handle? If so, what are the major use cases still, reasons why I would need these alternative services?
Some things I can think of (reasons why I chose to use DigitalOcean like a year ago, in addition to Vercel/Next.js):
- Long-running tasks such
- Large file uploads (10mb up to many GBs). Could take several minutes or hours, could fail in the middle and have to be resumed, etc..
- Background processes
- Resizing images in the background
- Processing videos
- Sending batch emails
- Cron jobs
- …
- Large file downloads (same size range, maybe even larger)
- Video streaming
- WebSockets
- Push notifications
- Better real-time UI
- Worker system running constantly
- Queues
- Kafka
- Temporal
- Running open source projects (so you don’t have to pay for expensive cloud SaaS versions)
- Meilisearch for fuzzy text search (cloud offering is insanely expensive for solo dev with large text database)
- Grafana
- Other cases?
Basically, I am uncertain in my decision, and don’t know fully what Vercel is offering these days. Saw rauchg on 𝕏 post about Express support, but don’t know what that means totally, if I can stop supplementing with DigitalOcean for the above use-cases.
If you could clarify if Vercel now handles permanent servers, or falls short still, that would be great. I’d like to develop a better sense for if I need to use DigitalOcean/etc. for the above service types/needs that I listed, but not sure really/totally yet still. Thanks.
FWIW (my practical problem, in more detail), I am basically using DigitalOcean with a Kubernetes cluster, and also Meilisearch as one of the nodes, and temporal as a sort of worker/queuer manager system (still learning as I go), as another node, and then basically a persistent server with a Docker image with a bunch of CLI tools like ffmpeg to handle large file uploading and file processing in the background. In the far future I might add a 4th server to do WebSockets for real-time, but haven’t thought that much into best real-time solutions yet. So that’s basically where I’m coming from. Vercel/Next.js are the frontend apps connecting to the DB. But even with that, Supabase was slow at scale, so switched to PlanetScale, and am having the persistent Express server on DigitalOcean connect to PlanetScale even, for handling the REST API. That way I can have one subdomain, api.myapp.com, which does EVERYTHING (file uploading, REST API, pushing into temporal, etc.). So now Vercel/Next.js is literally just doing the frontend, and proxies to that persistent API entrypoint. So this original post idea comes from me wondering if I’m doing things right kind of haha. Wish there was someone to talk to in-person about it, probably would be much easier.