9 ms·
If Next.js + Vercel is the leader of the production-ready frontend-as-a-service space, why hasn't a similar leader emerged in the backend-as-a-service space? I
by jekude 5y ago
If Next.js + Vercel is the leader of the production-ready frontend-as-a-service space, why hasn't a similar leader emerged in the backend-as-a-service space?
I would love a clean Vercel-like abstraction on top of standard cloud primitives (functions, queues, events, workflows, etc.) with everything wired up nicely and focused on developer experience. It just seems like AWS is so configuration heavy that it is ripe for a Vercel-for-backend to emerge.
Does anyone know of an existing open source framework + hosted cloud platform that is a one-stop-shop for writing a production-ready backend in the vein of Next.js + Vercel?
- chrisco255 5y agoVercel / Next.js does function as a backend, too. You simply add an api folder and create 'routeName.js' files in there and you've got an endpoint backed by a lambda. And Vercel itself allows you to install backend services such as Redis caching, databases, or queues that you can pull in from those functions.
- letmeinhere 5y agobut (at least last I checked and from what I can glean from current docs) Vercel doesn't host databases, or integrate on a network level with the major cloud providers that do, so if you run your "back end" on Vercel you still need a "back back end" from a different provider and are opting into a huge amount of network operations burden to securely connect the two.
- gherkinnn 5y agoWelcome to the Jamstack. /snark I'd think of a Next-driven BE as a BE for FE. And since it's co-located, You can share types, validators, utilities, (mental) models, etc. across the same codebase. A technique that does have its place. Not always. Maybe not even half the time. But cleverer people than me use it to some effect.
- sroussey 5y agoCheck out supabase https://supabase.io/ https://supabase.io/
- rattlesnakedave 5y agoFor this sort of thing I really like fauna (https://fauna.com/ https://fauna.com/). I don't think you really "need" a "backend backend" anymore, and small dev teams are probably better off without them.
- adam12 5y agoYou might be able to use GunJS for your database (decentralized). https://gun.eco/ https://gun.eco/
- chrisco255 5y agoRight, they don't host the databases, but they do integrate with other database, etc. providers: https://vercel.com/integrations https://vercel.com/integrations Vercel itself I believe runs on a combination of Google Cloud and AWS.
- jekude 5y agoDefinitely get that it works as a backend as well. I guess I am imagining a frontend-agnostic platform that is more backend-centric, rather than targeted directly for frontend web development. Ideally I just get an endpoint from my backend-as-a-service (Supabase style) I can pop into Vercel as an environment variable, and use it as well in my moblile apps, public api, etc.
- Abishek_Muthian 5y agoIf you're already using likes of Supabase, Firebase etc. then Parse.com (RIP) was that OG BaaS but Facebook acqui-killed it. Now it's available as a open-source project and is used by several providers to provide BaaS[1]. I had used both proprietary & open-source Parse until 4 years back for several production applications but has since gone back to relational DB(pgSQL), so don't know the current status of the ecosystem. [1] https://parseopensource.github.io/ https://parseopensource.github.io/
- mritchie712 5y agoYep, I'm using Vercel + Supabase for a SaaS right now. Easy, fast, cheap, and effective.
- swyx 5y agohttps://supabase.io https://supabase.io has: - Postgres DB (+ admin panel + realtime sync + search + workflows) - Auth - Storage - Functions (beta) (disclosure: am small angel investor) its interesting that you consider workflows a "standard cloud primitive". what do you currently use? (i work on a workflow engine myself)
- city41 5y agoAs far as I know, Supabase is unique in this space in that you really are given a postgres db. You can log into it with any postgres client and do just about anything you want. Combine that with its "backend as a service" layer of niceties and it's a really potent combo.
- jekude 5y agoCurrent company's infrastructure is currently all on AWS, so using Step Functions. However I really _really_ like temporal.io's code-first solution (just didn't want to self-host). Perhaps the dust on best practices / tech for workflows or sagas just hasn't settled yet to include in a framework like the one I am envisioning. In general I think Supabase is fantastic in terms of the interoperability of all of the features they introduce. Just waiting on functions (and perhaps events / queues for async communication).
- swyx 5y agoah nice! make sure to fill out our waitlist if you want our managed service: https://temporal.io/cloud https://temporal.io/cloud meanwhile if you like workflows as code and want to stay in the AWS world what about AWS SWF? our CEO used to be tech lead of that and it shares similar ideas. yeah we are hoping to establish what best practice/architecture for workflows looks like. Feedback/questions welcome: https://docs.temporal.io/blog/workflow-engine-principles https://docs.temporal.io/blog/workflow-engine-principles
- jekude 5y agoam an ex-AWS engineer who worked on a service team that depends on SWF and also on one that depends on Step Functions. IMO the serverless-ness (?) of Step Functions and not having to manage pollers like SWF is huge.
- nsonha 5y agoI think amplify wants to be this? Also Hasura, not that I used or like them.
- mritchie712 5y agoSupabase is headed in that direction and already works for most simple CRUD like apps.
- melony 5y agoSupabase is overly SQL heavy.
- swyx 5y agocan you elaborate on what "overly SQL heavy" even means? it's just a postgres db as a service, use as much or as little as you want
- melony 5y agoThe authn/authz is heavily tied to PSQL. It lacks the polish and ease of use of Firebase. It takes too much configuration to get started. Poor support for things like migrations management and generation.
- habosa 5y agoMaybe something like https://encore.dev https://encore.dev? Looks like a similar mindset.
- jekude 5y agoThis certainly is akin to what I had in mind, and looks really great. A couple of thoughts: 1) Ideally the framework is polyglot (Go seems sensible though) 2) I wish they had queues/events that were wired up to functions 3) Not sure if using autoscaling k8s services under the hood as opposed to serverless functions is the right choice 4) A bit too opinionated on DB/Auth (maybe I don't want to use Postgres) 5) With all of the above you could get really great end-to-end integration tests as unit tests that I don't see them taking advantage of
- Zababa 5y ago> 4) A bit too opinionated on DB/Auth (maybe I don't want to use Postgres) This feels like a weird criticism considering Next is React only.
- jekude 5y agoI think your criticism of my criticism is fair. Perhaps this is somewhere you simply cannot provide a clean abstraction and need to be opinionated.
- Zababa 5y agoI think that's the case. On the other hand, at a very large scale you may want to move out from Postgres while React can still be fine. I'm not sure if people change more often frontend frameworks or databases.
- pscanf 5y agoI guess https://dapr.io/ https://dapr.io/ could also be considered a contender in that space, though the developer experience is not as polished as next.js (yet?).
- quantumOctopus 5y agoI would give MongoDB Realm a try, it has all the building blocks you need!
- asim 5y agoTried a couple shots at it Go Micro (17k stars) https://github.com/asim/go-micro https://github.com/asim/go-micro Micro (10k stars) https://github.com/micro/micro https://github.com/micro/micro M3O (1.7k stars) https://m3o.com https://m3o.com
- biggestlou 5y agoThis appears to be a framework and not a hosted backend service
- asim 5y agoWe tried https://m3o.dev https://m3o.dev. It was a pretty hard thing to do with limited resources. Some sort of backend hosting will make its way back in soon.
- tonyspiro 5y agoMost of the modern frontend hosting services also push for a backend as a service. Whether it be a DBaaS, like Fauna https://www.fauna.com https://www.fauna.com, or Headless CMS, like Cosmic https://www.cosmicjs.com https://www.cosmicjs.com as it gives you the auto-scaling capabilities without the infrastructure time and headache (Disclaimer: I'm CEO at Cosmic)
- leodriesch 5y agoI would suggest render.com and fly.io if you’re looking for something that has a similar deployment experience to Vercel.
- fillskills 5y ago+1 for render. Great experience so far building an airbnb like marketplace on top of their services
- jonathannorris 5y agoWe are finding that Next.js + Nest.JS to be a really strong combo so far.
- kervantas 5y agoGreat choices. I love Nest.
- dimitrisnl 5y agoSounds interesting! Do you have any templates, resources, or just tips to share?
- maccaw 5y agoI think because the answer here is using Next.js with hosted backend solutions like Firebase, Supabase, Pusher, etc.
- jekude 5y agoThe reason I love Next.js + Vercel though is because I don't need anything else for the frontend (besides a CMS maybe). If I have to use: 1) Pusher for realtime 2) Supabase for DB 3) Temporal for workflows 4) Vercel / Netlify, etc. for functions / cron jobs My backend becomes primarily a bunch of stuff glued together, rather than something cohesive like Next.js
- bluewalt 5y agoAnd you end up with tons a network calls and services to monitore, logs, manage and pay. I'd do the exact opposite by default, trying to have the most cohesive service, and occasionnaly use some external APIs when I can't do the stuff by myself (eg. Stripe)
- midrus 5y agoGoogle App Engine?
- sbacic 5y agoI'm using Hasura for that right now to handle the API + database part. Fairly satisfied with GraphQL API generators so far - they get the ball running quickly and take over the boring CRUD parts so that I don't have to.
- AccountAccount1 5y agoHasura is at that level of being a full-featured back-end platform. I think that the best way to get started with Hasura is https://www.nhost.io https://www.nhost.io
- 1023bytes 5y agoWhy not use Hasura Cloud and also support the developers?
- digvalley 5y agoFor me it is because og the pricing model. Free or $99 I’d pay more to get eur datacenter, but not that much when I can host it myself for $5 on DO with the same performance (for my usage) Would gladly pay to support them, so I have given them feedback on my pereicament
- gavinray 5y agoDisclaimer: Work at Hasura > "I can host it myself for $5 on DO with the same performance (for my usage)" Yeah for sure, I know what you're getting at. Though it's not really so much about performance (there is caching) -- There's a chunk of functionality that comes with Cloud/Enterprise. The majority of this has to do with metrics/observability and monitoring tools, or access-control tools for teams. If you check here: https://hasura.io/docs/latest/graphql/cloud/index.html#hasura-cloud-documentation https://hasura.io/docs/latest/graphql/cloud/index.html#hasur... And look under "Features" and "Security" you can get a decent idea of what the differences are between OSS and the Cloud product. There's 2 demographics I think Cloud stands out to -- those who want convenience ("I don't want to think about/manage my own instance"), and those who want an integrated APM tool or more security & access-control features, or are working on teams/orgs. > Would gladly pay to support them, so I have given them feedback This is always neat to hear! I don't blame you, with Cloud being $99 there could be potential for some future tier to fill the gap between OSS and Cloud. Like "I have some weekend projects but nothing I can afford to blow $100/mo" on, you know? I don't know enough (or really anything) about the business side though. It could be that $99 might be the only number where it starts to make sense to offer this sort of thing, based on infra costs/complexity. Or this could be the stupid thing I've ever said. I'm not a Cloud-Scientist ;^)
- AccountAccount1 5y agoNhost.io does functions, database, Graphql API, rate-limiting, authentication. Basically everything you need.
- jensneuse 5y agoI'm the founder of WunderGraph. https://wundergraph.com/ https://wundergraph.com/ We're doing exactly this. Our philosophy is simple, instead of forcing you into a specific stack, we can "introspect" multiple data sources like GraphQL & REST APIs, MySQL and PostgreSQL, S3 for file storage and OpenID Connect for authentication. This way you can plug and play any of your existing infrastructure and services and turn them into your own private Firebase. Finally, because we "introspect" all your data sources, we get end-to-end type safety. We don't just generate an API for you but also a truly type safe client. Controlling everything from backend to API client allows for a lot of optimizations, e.g. the generated client knows if authentication is required to fire off a Query and therefore waits until the user is authenticated. If you have any questions or feedback, feel free to join our discord: https://wundergraph.com/discord https://wundergraph.com/discord We're going OSS 100% soon, exciting times ahead..
- goforbg 5y agoHey I really like the product, I would recommend you embed the video you've made[0] somewhere in the website's homepage or docs. I'm sure a lot of devs mostly get started by reading docs, but I personally love videos which show me what's possible and I follow along. [0] :https://www.youtube.com/watch?v=1_Nl6ZQJJQY https://www.youtube.com/watch?v=1_Nl6ZQJJQY
- deleted 5y ago[deleted]
- billiam 5y agoIf you like the idea of getting developers out of the backend plumbing and repair business you might want to check out https://stepzen.com https://stepzen.com (I work there). We agree that APIs and the data sources behind them need to be modernized the way that companies like Vercel and Netlify are modernizing frontends. Our platform is built on top of GraphQL to give developers that one-stop shop for any and all data sources; we'll keep your API fast and secure. Next week we're going to release a new product to make that even easier.
- jkaplan 5y ago1. I'm not sure about this premise: "leader of the production-ready frontend-as-a-service space." They def seem like a good fit for some frontends -- but they're certainly not a good fit for ALL frontends generally. (For example, sufficiently small sites should probably just go with static hosting, and sufficiently dynamic web apps still will want a SPA.) 2. At the end of the day, web backends are just a lot more varied and complex than web frontends. On the technical side, a web frontend is always just bundles of JS, HTML, CSS, that have to be transmitted to the client. And functionally, there's a relatively large set of common things they pretty much all do (routing, serve images, etc.) Therefore, it's relatively simple to build an opinionated framework that can still cover a good number of situations. By contrast, a "backend" is really a lot of different things (like the four you mention, plus various types of storage and caching), which can use many different languages/technologies, all working together in different ways. It's hard to conceive of a universal "backend" framework that could cover all of that complexity. 3. There are some efforts to do this kind of thing (to some extent). Google's Firebase and AWS Amplify are the two that I think are closest -- they try to give low-configuration generic backend building blocks. (I'm currently using Amplify for a project -- still too early to tell. It also works with Next.js!) There's also platform-as-a-service options like Heroku.
- charesjrdan 5y agoNot sure I agree with your first point. Next can output static sites easily, I've used it for some tiny marketing sites recently and I think its fine for small sites. You get auto routing, and can use react components without any hassle. And 'sufficiently dynamic web apps still will want a SPA' doesn't make much sense to me because you can just use nextjs in full SPA mode and its just as 'dynamic' as any react app
- albertgao 5y agoBackend is probably a lot easier than the frontend, which is why you can see service like hasura and supabase. Backend is a highly patternized work, which is why it can be low to no code, whereas front end as a service is merely just deployment as a service.
- dragonwriter 5y ago
- corentin88 5y agoWhat about Firebase? It’s not open-source I know, but it brings tremendous primitives to backend (cloud functions, database, queues (with Google Cloud Tasks), etc.)
- brandonbloom 5y agoWe're working on something like this at Deref: https://exo.deref.io/ https://exo.deref.io/ - The version of our Exo tool that is out there now is a local process & docker container orchestrator with log viewer etc. We're working on adding support for a rich set of component types like functions, queues, workflows, cron jobs, etc. Everything would have a nice console GUI, so you don't need to be an expert at infrastructure-as-code, yet you'd get a version-controlled manifest file that you can use for reproducible deployments. We plan to support deployment to your own infrastructure or an eventual PaaS platform. If folks are interested in working on something like this, my email address is in my profile. Don't hesitate to reach out.
- IceWreck 5y agoDjango + Django rest framework ? A headless CMS ?
- Graffur 5y agoOthers have posted various solutions but I haven't seen Redwood mentioned yet. Would that be something you're looking for?
- findjashua 5y agoPostgraphile, Hasura, Supabase etc might be of interest to you
- awayto 5y agoI am developing a framework that might handle some of these needs. Right now it incorporates: - an RDS postgres instance with a curated set of DB scripts with auditing baked in - Lambda/API Gateway based API - fully implemented with users, roles, groups - application level authorization - Cognito for user authentication (sign up or admin created) - S3/CF for hosting/files - React frontend - all in Typescript with a robust type-set; same types for the whole stack - deployed via CF template along with some custom scripting I have done to tie it all together It's been a work in progress for some time on the side, but I am now formalizing it. It might seem a bit rough on the edges at first, but it gets the job done, and can more or less be extended into other AWS services as needed. I haven't really received much feedback yet. It's all open source, you just pay for the AWS resources, and it installs from npm and deploys in about 10 minutes based on how long the DB and CF distribution take to deploy. Here's a sped up install video: https://www.youtube.com/watch?v=b3mzwtIyt9s https://www.youtube.com/watch?v=b3mzwtIyt9s And here's the git, https://github.com/keybittech/awayto https://github.com/keybittech/awayto I am in the midst of drafting formal documentation, how-tos, and other media that I can share with the community to help make it easier to understand and use. Any feedback is greatly appreciated!
- justjake 5y agoOh hello there! I'm the founder of https://railway.app/ https://railway.app/ and "Vercel for Backends" is what we get a lot You can give us a go at https://dev.new/ https://dev.new/ We're working on making the project connections a bit better so that generalizable connected services are as trivial to build as stateful monolithic backends in the current platform Anything else we've missed and I'm happy to sit down with you (or anybody else) and hear what your needs are. Arbitrary evented triggers are coming pretty soon as well as the API so the infrastructure should be fully composable/meta. P.S We integrate with the lovely lads/lasses/fiends at Vercel :)
- jelling 5y agoBlitz.js is a superset of NextJS that should do what you want
- flybayer 5y agoWe are working on this right now at https://Flightcontrol.dev https://Flightcontrol.dev
- archeroed 5y agoWhy not using Caprover ? That's an open source self hosted PaaS that use Docker and let you configure almost everything through their GUI, as well as checking Logs, easily scale horizontally, spinning up Postgres/Redis/Next cloud or whichever docker images in one click and letting you communicate via different parts of your projects through environment variables set through the GUI. That way instead of learning a new and likely less advanced framework you can use your favorite and likely more mature and well maintained backend framework and just deploy in a minute with caprover, as long as you can dockerize it it should work, you just have to write a single dockerfile ( they also have a way to not write dockerfiles directly and use their abstraction ). You take advantage from the backed framework you already know with all its advantages and also benefit from Docker's huge community. Their UI is really good to be honest, you can enable and force https in one click and other goodies like that, DigitalOcean also have a preconfigured Ubuntu droplets with caprover preinstalled to make it even smoother.