[HN Gopher] Supabase Edge Functions
___________________________________________________________________
Supabase Edge Functions
Author : lightslit
Score : 212 points
Date : 2022-03-31 16:13 UTC (6 hours ago)
(HTM) web link (supabase.com)
(TXT) w3m dump (supabase.com)
| jimmy2020 wrote:
| It feels the CDN edge functions are the new Jamstack. It's fast
| but comes at a high cost and the excitement shifted from static
| pages to literally data distributed near the user.
| kiwicopple wrote:
| edge functions was an obvious complement for us. we already
| have database functions [0] which can be executed through a
| REST api (database co-location is great for data-intensive
| operations).
|
| Edge Functions are deployed to 29 regions globally, which means
| that you can use them for low-cost, low-latency operations.
|
| [0] Postgres Functions:
| https://supabase.com/docs/guides/database/functions
| marcus_cemes wrote:
| Static pages relied on the client being able to run JS to
| populate user-specific data. Also, a lot of data is fine with
| being eventually consistent, which is a good fit for edge
| functions. An example is rendering the account icon and
| username on the top write, without hitting a central
| database/static file server.
| poetril wrote:
| I'd love to learn more about how its making use of Deno. I have
| been loving Supabase lately, both for hacking away at side
| projects. I have been thinking about moving some of my own
| backends over to Supabase.
| kiwicopple wrote:
| Feel free to ask any specific questions about our Deno usage
| which isn't covered in the blog post. Inian is in the comments
| and will be able to cover anything technical
| ilrwbwrkhv wrote:
| I am so torn between Supabase and Render. My two favourite cloud
| providers right now. Please don't become enterprise-y guys.
| digianarchist wrote:
| Two solid products and the choice between them is down to
| whether you want to write your backend.
| anurag wrote:
| (Render founder, Supabase fan) You can use both! Render will
| always be developer-focused even as we move into the
| enterprise. It's the only way to avoid Heroku's fate.
| latchkey wrote:
| > Serverless compute options can be broken down into two broad
| categories: > Containers as a Service (e.g. Google Cloud
| Run, Fly.io) > Functions as a Service (e.g. Cloudflare
| Workers, Fastly Compute @ Edge, Suborbital)
|
| There are also Google Cloud Functions, which is odd to not
| mention here.
|
| For what I'm working on, I've put CF Workers in front of my
| GCF's. This allows me to terminate the SSL at the CF Worker
| (along with easy control of DNS) as well as control the URLs (and
| even content) that ends up being sent to the GCF workers as well
| as caching of results in CF. It gives me a huge amount of
| flexibility and very little complexity.
|
| Currently doing 1m hits/day through CF workers and it is ~$6/mo +
| ~$20 for GCP (including a Postgres db and heavy use of pub/sub).
|
| All the other important things are done... CI/CD for the whole
| development flow with Github actions doing deployments on push to
| main, logging and graphs comes standard. The developer experience
| with both GCP and CF is top notch.
|
| Supabase continues to be an interesting alternative, but I really
| don't see a reason why I'd go with them.
| rvnx wrote:
| The Google Cloud Functions are not really good compared to
| CloudFlare Workers :/ The GCF are regioned, slow to start and
| behaving like an on-demand temporary cloud instance, than an
| actual FaaS offering.
| latchkey wrote:
| Using golang cloud functions. I have a constant stream of
| hits, so there are always available functions.
|
| Connecting to cloud sql postgres and serving a request that
| hits the database takes under 1s. Hot request/responses are
| ~20ms.
|
| My hits are all US based, so I plopped myself into Central.
| No issues there either.
| getcrunk wrote:
| This uses deno deploy under the hood, which interestingly enough
| still doesn't list pricing because it is pre-release.
| [deleted]
| KyleJune wrote:
| The latest preview screenshot I've seen from the Deno discord
| had the following. I believe official pricing will be out in a
| few weeks.
|
| Free plan: 100k requests per day with up to 10ms CPU time per
| request.
|
| Pro plan: $5/mo + $0.50/million requests per month with up to
| 50ms CPU time per request.
| paxys wrote:
| And Deno deploy itself likely uses AWS or the like under the
| hood. So you are paying base infrastructure costs plus the
| premium for every provider in the stack.
| marcus_cemes wrote:
| Amazing work, kudos to the Supabase team!
|
| > However, Supabase already offers a flexible solution for that -
| Database Functions! As such, for Supabase [Edge] Functions, we
| decided to deploy far-and-wide so that they are as close to your
| end-users as possible.
|
| Does this mean that a choice has to be made between high latency
| (Edge Functions) and specialised SQL-only functions (Database
| Functions)? I see that cron-like triggers are still on the
| roadmap, is there a plan to have TypeScript functions that can
| run close to the database (or other resources)? Call me new
| school (as in not old school), but I prefer processing complex
| queries in a language that I feel comfortable working in, SQL is
| not that.
|
| I know a lot of folks are huge fans of writing pure SQL, the lack
| of type safety and lack of good intergration with source control
| (I dream of a world where database schemas, functions, security
| access and the rest can be saved to source control for
| reproducibility) scare me.
| inian wrote:
| We can look at offering an option to restrict edge functions to
| just launch in the same region as your database (probably can't
| call it "edge" at that point though). This might also be useful
| if you are processing data in your function that you do not
| want to leave a particular geographical region.
|
| We are also exploring running Deno directly inside your
| database - https://github.com/supabase/postgres-deno
| kiwicopple wrote:
| > is there a plan to have TypeScript functions that can run
| close to the database (or other resources)?
|
| Just to double-up on Inian's comment - there is definitely a
| world where this happens, perhaps even inside the database
| itself (like plv8). We were focused on the Edge experience this
| time, but I'm excited about the future that an open-source TS
| runtime like Deno enables.
|
| > I dream of a world where database schemas, functions,
| security access and the rest can be saved to source control for
| reproducibility
|
| this was one of the main reasons we started supabase. we hope
| to make database development as easy as application development
| awelfkjlkj34t wrote:
| MacAndSmeg wrote:
| Love me some supabase... probably the most fun platform out there
| at the moment.
| zwarag wrote:
| Congratulations on the launch Supabase-team! Can't wait to try it
| out. I love that you went with deno for that.
| kylehotchkiss wrote:
| I'm excited about the new functionality and find the cause of not
| defaulting to Cloudflare Workers commendable, I worry a little
| about the long term viability of Deno Deploy - is there a backup
| platform that Supabase edge could deploy to in the event of a
| Deno Deploy acquisition, or even better, is Supabase going to
| acquire Deno Deploy?
| kiwicopple wrote:
| > is there a backup platform that Supabase edge could deploy to
| in the event of a Deno Deploy acquisition
|
| Yes, we could host this all ourselves (since the Deno runtime
| is open source) on AWS, or more likely we'd work with someone
| like Fly who have a globally-distributed platform like Deno
| Deploy.
|
| > is Supabase going to acquire Deno Deploy
|
| There's no chance of that happening. We couldn't afford them.
| Deno will be a huge company - and rightfully so, their product
| is best-in-class
| kylehotchkiss wrote:
| Thanks for taking the time to respond to my concerns
| kiwicopple - I'm looking forward to giving your edge
| functions a spin then!
| onelovetwo wrote:
| Supabase is becoming quite impressive, I think the main thing
| missing is a native iOS/Android sdk.
| jFriedensreich wrote:
| glad to see this is using deno, wich is an obvious choice at this
| point and seems to get more and more traction.
| ajuhasz wrote:
| Two questions:
|
| 1) Do the functions "freeze" once the response body has been sent
| back? Is it possible to return a response to the user (for a
| quick API response) and then continue doing some background work?
| This is has been a source of pain with AWS Lambda based services
| like Vercel that freeze execution once the response has been
| sent.[1]
|
| 2) How does keeping a connection pool work between function
| invocations? For example using Prisma for the nice typed DB
| functions.
|
| [1]
| https://vercel.com/docs/concepts/limits/overview#streaming-r...
| kiwicopple wrote:
| > Do the functions "freeze" once the response body has been
| sent back?
|
| Just checked with the Deno team. These functions should not be
| used as "background workers" - perhaps that is something we
| explore in the future. It will work for a short time in theory,
| but it's not guaranteed.
|
| > How does keeping a connection pool work between function
| invocations
|
| Supabase offers several options here. You can either use the
| API (PostgREST)[0] - an autogenerated REST API, or the
| connection pooler (pgbouncer)[1] which we offer with every
| project.
|
| > For example using Prisma
|
| Supabase is a popular database hosting service for Prisma users
| because of the built-in pooling - it's a great product,
| especially their typed interface.
|
| [0] PostgREST API: https://supabase.com/docs/guides/api
|
| [1] pgbouncer:
| https://supabase.com/docs/guides/database/connecting-to-post...
| ajuhasz wrote:
| > These functions should not be used as "background workers"
|
| Thanks for checking on it. We actually had to create a
| Cloudflare worker based "fire-and-forget" system to allow our
| Vercel functions to shoot off background tasks. Was hoping to
| replace that.
|
| > Supabase is a popular database hosting service for Prisma
|
| Agreed! We actually use Supabase as our backend for Willow[1]
| and use Prisma when writing backend functionality. It's been
| a real easy and fast process to use Supabase's JS client on
| the frontend to access data (with RLS!) and then
| Prisma+Supabase on the backend to modify data (with types!).
| We would love to allow user's to directly change data
| everywhere directly from the browser but we need to do some
| background tasks (sending notifications or updating related
| rows).
|
| The dream would be to have a great DX experience around using
| insert/update triggers to call Supabase functions to run
| background tasks. Some type of Terraform-esque configuration
| (in a SCM) to set it up and keep it in sync would be awesome.
| We have some triggers that make http calls but we're limiting
| usage as keeping track of them outside of our other code
| isn't simple.
|
| [1] https://heywillow.io
| kiwicopple wrote:
| > The dream would be to have a great DX experience around
| using insert/update triggers to call Supabase functions to
| run background tasks
|
| We have something for this: Function Hooks (soon to be
| renamed "Async Triggers")[0]. They are still in alpha, but
| the extension [1] is getting close. It was important to
| build something which works with PG background workers so
| that it's non-blocking. We'll make quick progress on this
| now that we've released Edge Functions.
|
| > sending notifications or updating related rows
|
| Tune in for tomorrow's announcement - it's related.
|
| [0] Function Hooks / Async Triggers:
| https://supabase.com/blog/2021/07/30/supabase-functions-
| upda...
|
| [1] https://github.com/supabase/pg_net
| andrew_ wrote:
| These folks are absolutely killing it. Can't wait to try this
| out.
| productceo wrote:
| Love it! Congrats!
| kiwicopple wrote:
| hey everyone, supabase ceo here. The team is extremely excited
| about this release.
|
| This one has been a long-time coming. It's one of our most
| requested features. We spent a long time getting the Developer
| Experience right - we investigated several approaches
| (Containers, Isolates, WASM), and eventually landed with Deno.
|
| Big shout-out to the Deno team. Their open source and DX-focused
| philosophy made it an obvious choice in the end. We've wrapped
| their open-source runtime to make the Supabase experience as
| integrated as possible, from the local CLI development, to
| realtime logs on the Dashboard. Edge Functions are still
| Experimental, so make sure you send your feedback to make the
| experience even better.
|
| We'll have a few of the team in the discussion ready to answer
| any questions.
| no_wizard wrote:
| I have a feeling you may not be able to talk about this, and
| thats okay. That said, I'm asking anyway.
|
| Did you consider working with CloudFlare? I feel like Supabase
| is the perfect fill for the "holes" that CloudFlare has in
| their services, that you guys fill. They don't have two crucial
| things currently: Persistent Data Store that's accessible
| outside of its platform, and an Authentication product. They
| otherwise have everything else and more. Seems like it would
| have been a very mutual relationship.
|
| Any insights on this one by chance?
|
| I'm loving Supabase, and the only gateway to adoption on my
| side is the lack of SOC 2 compliance, which I understand is
| coming. However I don't want to give up best in class services
| for things like CDN, Storage, Workers etc. I'm kind of an "all
| in" platform person. I don't want variance in vendors, I want
| one vendor with variance, if that makes sense.
|
| Don't per se mean I wouldn't use Supabase still, of course! I
| love the product where I have been able to test it out, and
| once SOC 2 compliance lands that will clear the final adoption
| hurdle for me anyway
| kiwicopple wrote:
| we're working closely with Cloudflare and really love their
| products.
|
| We did consider Cloudflare Workers - ultimately it came down
| to the open source philosophy of the Deno runtime. It's
| incredibly important to us that everything in Supabase has
| "escape hatches" - you can choose to host wherever you want
| to. I'm certain that Workers will get there eventually, but
| it's not there yet. We're still big fans and will be doing
| other neat things with them in the future (also we'll revisit
| Workers if the runtime becomes an open source).
|
| > lack of SOC 2 compliance
|
| We've chosen the auditor - I believe SOC2 Type I will be
| around 4 months away (next Launch Week)
| ignoramous wrote:
| Congratulations on launching this oft requested feature!
|
| Any timelines for support for Functions over QUIC/HTTP3 and raw
| UDP/TCP?
|
| Cloudflare Workers, the closest thing to Deno Deploy, announced
| intention to support raw TCP a few months back (while "HTTP3"
| has been supported for quite a long time now).
|
| Re: Database Functions:
|
| I really like the dual nature of Cloudflare's database
| offerings:
|
| Durable Objects (run functions close to data) as an option for
| apps that need that kind of strong consistency guarantees.
|
| KV (move read-only data close to functions) as an option for
| apps that can tolerate race but desire speed.
| kiwicopple wrote:
| > Any timelines for support for Functions over QUIC/HTTP3 and
| raw UDP/TCP?
|
| I'll ask the Deno team. I'm curious what your use-case is for
| these (especially UDP)?
|
| > Cloudflare's database offerings
|
| DO and KV are both incredible products. I think we'll tackle
| these a little differently since our "base" is Postgres. We
| are announcing more "edge-like" products tomorrow which will
| lay the groundwork
| NHQ wrote:
| I very much like the idea of automagic edge compute but would
| like to see the analytics. I am skeptical of the edgey claims,
| even for cloudflare. Where are the nodes? How do they each tend
| to respond? I want a map with every node being lit up in real
| time. I want to be able to test nodes by location etc.
| yesbabyyes wrote:
| Supabase and Deno?! This is the best news in a while. I like the
| feeling of you biting at the heels of Cloudflare and even bigger
| competitors. I believe in this and am excited to build something
| new!
| tylermcginnis wrote:
| So impressed with Supabase's ability to continue to ship quickly
| even as they grow. Congrats team.
| tagnifi wrote:
| Do you see a future where a language like Dart could run on edge
| functions (via WASM), all while integrating nicely with the DX?
| jackrvaughan wrote:
| Supa interesting! Asked these on twitter but probably better
| here: - Where are the 30+ data centers located? - What is the
| average cold start time?
| jackrvaughan wrote:
| Answering my own question. Locations from Deno:
| https://deno.com/deploy/docs/regions
| moralestapia wrote:
| Awesome! Congrats for shipping!
|
| 90% of the projects I work on are built on Firebase, our main
| worry with that is that we are locked-in, not only to "Firebase",
| but to Google as well which has a nasty history of just pulling
| the rug from under your feet without even telling you why.
|
| Having alternatives to try and implement is always a priority for
| us and Supabase now (w/ edge functions) seems to cover most of
| our use cases, so we are definitely looking to switch to it.
| jimmy2020 wrote:
| I am curious how the edge functions can replace Firebase?
| inian wrote:
| If you are using Firebase Functions, it should be easy to
| port it over to Supabase Edge Functions. We also offer a
| Realtime database (Postgres), Auth and Storage as part of our
| stack.
| moralestapia wrote:
| Firebase has a product of the "functions on the cloud"-kind,
| which we use, a lot.
|
| Auth + Storage + Functions is all we really need, and that
| triad is now complete on Supabase.
| [deleted]
| imilk wrote:
| Supabase offers a lot more than edge functions (db, auth,
| etc). Take a look at their website
| jimmy2020 wrote:
| I know but the same goes for Firebase. As matter of fact,
| Supabase started as an open-source replacement for
| Firebase.
___________________________________________________________________
(page generated 2022-03-31 23:00 UTC)