Neon Serverless Postgres is generally available
neon.tech
neon.tech
I've migrated my customer's workloads over to neon's managed postrgres and it's been consistent and reliable for the use case.
I have nightly backups pushed to Cloudflare R2 triggered by a GitHub action for disaster recovery but, to date, I haven't had to touch those.
I ask because my experience with Neon has been completely different to what you just described. Ever since their 'closed beta' days, it has always 'just worked'. Their CLI has been great, none of my automation has ever bombed out without good reason, and I've never seen it cost me more than I expected. Notably, I was also able to self-host it with relative ease, and found that they actually encouraged people to do so. (In contrast, there are a number of similar 'open source' offerings such as Supabase that I've tried self-hosting, and found that while their core codebase is on GH, it is extremely difficult to deploy outside of their own environment. Not intended as a dig at Supabase, they do some really great work and contribute a ton back to the Postgres community - I'm just using them as a relevant example).
As an aside, I've also met people from Neon at various conferences, including co-founder Heikki. They all struck me as genuine Postgres enthusiasts & great fun to geek out with. Neon (like Supabase) have been _really_ pushing the envelope on Postgres for the last couple of years, and have sponsored some significant developments & proposals. In my view they're a 'real OSS company'. While that probably does rose-tint my view of them a little, that's important to me & makes me happier to give them my money. They've certainly done more for Postgres than AWS ever has.
I'm a proud PostgreSQL contributor myself and value the work of my collegues highly. However, it should be said that AWS' RDS PostgreSQL offering in late '13 significantly helped increase PostgreSQL adoption, and the recent contributions by AWS' own PostgreSQL Contributors Team should not be discounted. IIUC, their Aurora PostgreSQL offering also was the inspiration for Neon as a product, so I don't think that your last jab to AWS was justified like that.
(Neon Postgres engineer)
Hey, we do want to add numbers back to that page. The issue was that the original numbers were inaccurate.
"The goal of this metric is to represent the health of a system. However, we found this binary “is there an incident or not” approach wasn’t accurate for describing our service. For example, in the past 30 days, 99.9% of projects hosted on Neon had an uptime better than 99.95%; however, the status page displayed 99.89% uptime."
How many times do you expect to slice it? "For 99% of days this year, 99% of our customers have experienced 99% reliability for 99% of their users, we're 99% sure"? (That's just the long way of saying 95%)
(Neon engineer)
Edit: to be more specific, we will have a new calculations similar to how Snowflake does theirs.
Hope that helps!
Internally we are measuring the number of projects under 5 min in the last 30 days and it's been lower double digits over 700K+ total databases under management.
A TON of effort is going there, twice a week standups, tightening our processes and quality across the board, a standing item in our monthly board meetings. While stability is black and white, what goes into delivering it is a long tail of small and large improvement and a major team effort.
We will also update the status page soon.
Good that they added it now.
(neon empl)
I’m not the parent commenter but just giving you a heads up that your HN profile doesn’t list any socials so I don’t know if people will find how to DM you. Unless you guys have a public Discord or something and it’s implied that that is how people would be able to DM you.
A nice marketing opportunity for Neon/Supabase to get a fix officially released.
We have an SLA in place and haven’t had a single issue so far.
I don't have any proof, but you'll just have to trust me, which could be a tough ask. Neon really tries to be transparent in internal and external communication.
(Neon engineer)
I’m always hesitant to add additional technology to the stack if it doesn’t provide a bullet proof benefit. A lot of use cases are perfectly fine with plain postgres, and I’m always fighting against polluting the stack with additional unneeded complexity.
Are you able to handle branching as well?
It does seem a bit pricey though. For $69/month (Scale), I could rent a dedicated server with 8 dedicated CPUs, twice the RAM and 20x the storage (and that's physically attached NVMe in raid 1), and have money to spare: https://www.hetzner.com/dedicated-rootserver/matrix-ax/
(Obviously if it's just like a hobby deal then run it on a cheap VPS).
As an avid self-hoster, by all means, self host Postgres! But self hosted Postgres is not the same product as managed Postgres.
By all means, self-host Neon and come talk about it in our Discord (https://neon.tech/discord)!
Cheeky jokes aside, you can definitely go down the hetzner/VPS route. Not everyone has the expertise or desire to spend time doing so, but if you do, then go for it I say. We have some nifty features that are non-trivial to recreate, but again, it depends on your needs.
this also doesn't cover 100% uptime, but only 300h, and you will pay extra for each extra hour.
I also looked at (and spun up) RDS but Neon was way easier to work with and scales to 0 (Aurora Serverless is trash IMHO). Neon starts very quickly as well (hundreds of milliseconds in my testing) which is pretty awesome.
I have nightly backups dumped to Cloudflare R2 from a GitHub action.
If Neon announces they're shutting down, migrating the database to another provider is a bash 1 liner and an hour of downtime.
If Neon just "goes dark" I can recover from the nightly backup and lose at most 24 hours of data - data that is denormalized into other systems and can be manually recovered if absolutely necessary (but probably not).
Not every company is the same, but for many use cases the database layer is an inconsequential decision as long as the API is fungible for your use case.
Not every decision is a 1-way door.
The most important way you can spend your time when making a 1-way door decision for a company isn't picking the right door. It's turning the decision into a 2-way door.
I‘d argue that the most important way to spend the time is on building something customers want and not micro-optimize with shiny database vendor of the week. Get a boring managed Postgres and it‘ll scale for a very very long time, it‘s well understood and if you hit the limit, that‘s a good problem to have and there‘s many solutions for that when the time comes.
My customer profile at the time was mom-and-pop small businesses. Bespoke application development that automated back office work delivered on ~6week timeline.
The size of their tech department was 0.
The goal with the architecture I delivered was to delegate as much as possible below a vendor boundary.
My solution was: Cloudflare workers for compute. R2 for storage. Neon for database. HTML/JS/CSS for the frontend.
Neon wasn’t a micro-optimization. It was the only vendor in town that would own that much of the DB layer’s responsibility (D2 wasn’t prod ready yet).
12months in and so far so good. I’ve had to “come back in” for a total of 30minutes of maintenance when mobile Chrome broke uploading a photo via camera.
Wouldn‘t you want the most boring solution that‘s unlikely to change in the next 5 years for this use case? (AWS etc.)
With a company that did a big funding round it‘s very likely that it gets acquired, shut-down, products get sunsetted, API endpoints need to be changed in the next years.
#!/usr/bin/env bash
OBJECT_NAME="pg_dump_$(date -u +"%Y-%m-%dT%H:%M:%SZ").dump.gz"
pg_dump --dbname="${DB_CONNECTION}" | gzip > "${OBJECT_NAME}"
rclone copy "./${OBJECT_NAME}" "cf:${CLOUDFLARE_NAMESPACE_ID}/db/"I have 1 database per client and their needs almost never overlap so I wanted to share the underlying server/cluster between them. You can't do that on PlanetScale. Aside from that I liked working them.
I wish you the best of luck, but please know that for a lot of us time is money and also literally our most invaluable / irreplaceable asset, and also tech startups who want us to make a bet on them need to have some sort of value proposition given the risk of "you might die or disapear or be aqui-hired in three months after we moved" so I would encourage to not answering this as your 1).
To me the instinctive reaction is "it's for when you will have time to fool around and figure it out by yourself". It is my opinion only, it's worth nothing more than that, and I realize you didn't ask for it, but I just wanted to let you know.
"Unlike AWS Aurora we decided to open source all the changes in Postgres and also send them upstream as well as fully open source our cloud native storage."
Also, at the top right there's a link to the GitHub repo: https://github.com/neondatabase/neon
You can find replies from folks in this thread as well discussing self hosted deployments and you can find an entire discord channel dedicated to that topic here: https://discord.gg/92vNTzKDGp
I'm not associated with Neon and I've never used it before and I certainly don't disagree with your sentiment, but it seems like Neon has gone above and beyond in making sure that workloads could continue to run in the event the company fails and broadly assuaging those concerns.
(Neon engineer)
> (Neon DevRel here) [...] However, many production databases won't scale to zero often.
I think a planned consistent message might be best
Neon won't pull the rug from under an active production database by scaling to 0 when there are still active queries, instead it'll scale databases to 0 only after a longer period of inactivity. So production databases are less likely to scale to 0 because they generally are active most of the time, yet Neon does scale to 0 when it's possible and allowed.
Congrats to the amazing Neon team on launching serverless Postgres to the world!
(neon product)
The only issue I've found with Neon is that to use listen/notify the DB needs to be awake 24/7 which defeats the purpose of serverless.
This is valid. However, many production databases won't scale to zero often. The serverless proposition is still valuable if you factor in the development, test, and staging environments scaling to zero plus our autoscaling that doesn't require downtime or dropped connections.
For guaranteed message delivery, you're probably best of using a messaging system designed with that in mind instead of listen/notify.
Our storage tech is amazing :)
And written in Rust for extra fun and profit
Your HN profile doesn’t tell.
Stas Kelvich one of my bosses, and one of the founders of Neon.
We are rethinking this, please stay tuned
By the way, I do want to say that branching is a game changer. The recent usability improvements like graphs/metrics and being able to reset a branch to the state of another one without affecting the endpoint is so nice. We previously had a messy script that took care of creating a new branch, moving endpoints, renaming, deleting, etc.
More fine-grained permissions for users on projects would be my number one ask at this point, but overall, I really appreciate the improvements the Neon team has made in recent months.
Reducing our COGS is very important, and also something that we will be working on. I would definitely reach out to our sales team for a more custom quote.
(Neon engineer)
This architecture delivers really good safety: Once your transaction commits, the data is already replicated across different AZs, and this is done without there being an S3 request each time. It also means that Neon can deliver features like branching.
(Neon engineer)
I hope it is encrypted on S3 at least? :)
https://neon.tech/docs/introduction/architecture-overview
There is no system of per-project encryption keys though.
Either way, if you get big enough (will use more storage + compute), it makes sense to move. I'd be against such platforms as they make changes to Postgres that might make you depend on them.
FWIW, Neon is really "just" Postgres. I can't think of anything Neon specific that would lock you in, other than that we don't support certain kinds of extensions yet. But if you were going to use those extensions, then you probably wouldn't have picked Neon in the first place. I also wouldn't consider that a lock-in. Do you have any examples that you might be aware of in Neon? Postgres compatibility is something that we take very seriously.
(Neon employee)
hey all, i've only been with neon for a very short time but i'm super excited to be here because i believe neon can deliver an amazing developer experience that databases have been lacking. while we are simply postgres on top the neon platform is something special that unlocks a lot of new possibilities.
this ga is simply marking readiness for the platform and the team that has been building it. there's a lot more to do going forward.
as we're looking forward, post-GA, i'd love to hear what you think neon needs to focus on next. here's what i'm seeing so far: - improved gh actions integration - more extensions - better developer extension support - autoscaling communications - metrics / logs integrations
what else?
(Neon engineer)
https://github.com/neondatabase/neon/issues/4989
If the Neon driver were to allow us to easily pass in a localhost connection, the development and test experience would be easier. Perhaps Neon could swap to something like this internally: https://github.com/porsager/postgres.
Having run a local dev environment connected to Neon and tests connected to Neon got in our way of adoption. We'd prefer to develop and run tests against a regular Postgres localhost database.
To the PMs of Neon, put yourself in the shoes of a new developer thinking of giving Neon a try. What changes will I have to make to my code and my development workflow?
People who really find Neon valuable usually partake in our "differentiating" features, so if all you need is a managed Postgres, there will definitely be more competitive prices out on the market.
So, my question is, what trade offs am I making other than a persistant/local db to off-site (ie probably a degree of speed). Since it's free, does that mean my data might be inspected? I'm under an NDA, and my client would prefer his data stays in-house unless there's a good reason for it not to be.
(Neon engineer)
Neon will never be as fast as a database local on your computer, but performance is always something we are paying attention to.
Won’t be a lot of EU enterprise that will be capable of using your services without rather strict compliance. Which may or may not be in your interest but you might as well just be up front about it. With the way EU is heading in regards to data protection it may not just be enterprise organisations either by 2025. Those compliance laws are getting stricter and stricter by the day.
I'd love to be able to just use a helm chart to have Neon in my homelab.
Not bashing Postgres, however that statement is an overstatement. Postgres was a "it exists" database back in the early 2000's.
All the scripts my scripts kiddie paws could get on were always orientated towards MySQL.
Uploading .php3 files on 56k were my teenagers eyes of fun.
> Postgres was a "it exists" database back in the early 2000's.
If we're really nitpicking it's not saying Postgres is the most popular database since the early 2000's. If you base it of off install counts as the metric, I would assume the statement is true since I'd think it's either Postgres or MySQL today.
LAPP wasn't a thing, which is now. And Apache is falling behind thanks to nginx.
It wasn't until JSON and Postgres supporting JSON that made developers change their cog. 2012, and I'd agree.
https://www.crunchydata.com/blog/when-did-postgres-become-co...
edit: given the headline feature of infinite PITR capability, knowing the price tag could be quite important. Especially if purging old data isn’t supported (is it?)
I have an application on MySQL that I’d love to move to a service like Neon. Maybe I’ll port it to Postgres some day. But not at those storage prices, at least not without serious care.
That aside, I think Neon is pretty cool. I will wait some time to see how stable a service it is, whether price hikes happen often, or whether VC money destroys it.
I think Autora for me is too pricey, but I settled for self hosting PG on Hetzner. I'm there bc Hetzner has been stable for me for years. What I fear the most is having to migrate a db off of some service bc I stopped being their target audience. I know this sucks for startups trying to make it but a risk is a risk. I'll wait and see.
I think the Postgres ecosystem has many differentiating factors where MySQL and MariaDB just can't compete.
(Neon engineer)
I'm wondering what accounts for the difference; is Turso just bleeding money on smaller tiers, etc?
> Lots of people have been reaching out to me asking if they should expect our free tier to be around, given recent news.
> Yes, you can expect our free tier to be around.
> The main reason we built a service on SQLite is that we knew we could build the most efficient thing in the market with that. I usually keep these number semi private, but last month Turso had over 20,000 databases under management - in all plans - and our Cloud bill was less then 3.5K USD.
> I sympathize with Planetscale, in the sense that running a company is hard and you sometimes have to make hard choices. But look beyond words, into cost structures and incentives:
> Of course our service is expensive to operate, like any service, but most of it is staffing. We'll never find ourselves in a situation where killing our free tier will make any dent in the profitability of the company.
Is this faster / more resilient?
With Neon you get a postgresql database over a postgres wire format connection.
So if you have an already existing app speaking postgres to a database somewhere, Neon is a drop-in-replacement, while Turso would require adapting to their custom API.
If you are creating a new service, you might need/want to take advantage of e.g postgres extensions [0] for storing geographical data or pg_vector for similarity searches etc. Or you simply need more stringent serialisability promises than what libsql / turso can provide.
But if you just writing something new from scratch and have "simple" demands, I think something like Turso looks cool (and cheap!).
I guess it's just trust. I trust postgres more than I trust sqlite for building big apps.
One last point: I'd look at feature set of both offerings. I suspect the features of the postgres offering to be more conducive to scale.
Take some time to learn about the differences between postgres and sqlite it is good to know about the trade offs.
We are also iterating over prices - we were purely consumption before and realized that we need to offer $19 pain plan to start based on the value our customers get. This is in line for what other devplatform charge for using their services.
If the branches are achieved using a COW file system, how does this part from the blog post work?
> Suppose a developer fat fingers a table or a database out of existence? No problem, move the branch to the second before that event happened.
How can I go back in time arbitrarily here? I would have assumed that you can only go to existing snapshots if the underlying method is a COW file system.
This blog post has a lot more details: https://neon.tech/blog/get-page-at-lsn
PostgreSQL writes changes to disk using WAL for consistency. Every WAL record is a set of changes to the PostgreSQL data directory (data files, metadata, ...) that need to be persisted together.
Neon indexes this WAL, and restores pages to the right version by replaying all WAL from the previous page snapshot up to the right version, allowing full point-in-time for all persistent tables in the database.
Branching in Neon should be interpreted more like the branches seen in graph theory's trees rather than the featureset exposed by git: the whole history of a Neon project is a unidirected graph with a single path between any two points in the history.
> For instance, would this also work across major PG versions
As for multiple major versions: We currently can handle multiple major versions in different tenants on the same pageserver/safekeeper servers, just not for the user's PostgreSQL instance. Major version upgrades (by way of pg_upgrade) are something we're working on, but that's still quite far down the road.
> afaict, it is just not possible to merge two differently versioned postgres-es
Correct, and AFAIK we don't actually advertise anything related to merging histories. If we do, please do tell where, so we can correct that.
We can branch off the main database to test things out, and periodically reset the branch to its parent.
There are some points where the analogy doesn't quite work, but what should they call it instead?
Source code here: https://github.com/neondatabase/autoscaling
Edit: Love to see several Neon folks in this thread from various parts of the company. It's always good to get insight from engineering, devrel, product, and CEO.
For a simple comparison, let's assume you only use 0.25 vCPU computes and your primary compute runs 24/7 (~750 hours per month) to keep the comparison easy:
1. On the Free plan, you can have the primary running 24/7 plus an additional 20 hours for other branches.
2. On the Launch plan, you can have the primary running 24/7 plus an additional 450 hours for other branches. And of course the 10 GiB storage + other paid features.
Full details at https://neon.tech/docs/introduction/plans
Also, custom postgres implementations are a bit scary from a performance tuning perspective.
They never exceed the limit you set in the number of cpus.
In practice the cost a lot less than max number of cpus * time. Think about area under the curve of cpu(t).
Storage costs can be calculated as something along the lines of:
size of current database * retention period (configurable) + compute hours
(Neon engineer)(Neon Engineer)
Are there any resources for IaC, e.g. terraform provider etc?
Does it mean a postgres server hosted by Neon and you basically pay them for administration?
"Managed" means we take care of Postgres administration.
"Serverless" means that your database isn't running if you're not using it. We put computes to sleep after a certain amount of time. We can also scale database resources up and down as needed.
(Neon engineer)
(Neon engineer)