ElephantSQL Is Shutting Down
elephantsql.com
elephantsql.com
I just started evaluating them about a month ago, loved their hosted postgres and a couple of days later the EOL announcement poped up in my dashboard :(
Source?
> Smaller providers (and also local in the case of 84codes) are preferred
AWS have a reputation and stability to keep because half of the internet, governments, banks, etc. rely on them. If a small provider makes a mistake, or goes bankrupt due to unforseen circumstances, you're left holding the bag on your own.
Insert LLM-generated variation thereof.
The idea of AWS as some kind of bag-holding partner is risible. They're a machine that helps convert capex to opex. Any systems services they may offer along the way are purely secondary.
Rarely. And never if you've setup your environment across multiple regions.
But unless you need a complex control plane or highly dynamic scaling on a daily basis you also can do exact same thing with any non-cloud provider (and a CDN). Order some bare metal, roll out, enjoy - if it goes bad, order bare metal from someone else, redeploy to it, restore from backups, and recover in about the same time (half a day) it takes AWS to fix us-east-1 when it fails. It also probably will save a lot of money (NATgw bills alone) in the long term.
They have the ability to kill comeptition by losing money until they go broke first.
Would love it if someone had more of the detailed history.
I recall seeing them crop up in the early days of building and running Heroku Postgres, they were a very very early managed service provider. To my knowledge they never seemed to grow to massive scale but were a steady business (though I don't know any of the details for sure). That they were still around for over a decade is a testament from a lot of others.
https://wheretohostmy.app/?tech=%5B%22postgresql%22%5D
It's a side project I'm currently building so hearing some feedback is highly appreciated.
https://www.vultr.com/news/a-note-about-vultrs-terms-of-serv...
The point of cloud was selling businesses on IT as a subscription. And it did start simple as "look ma, no hands managing a database".
But then biggesr cloud providers went and threw themselves heavily at sales to enterprises. And well, they start adding more features for enterprises. And as they add more features, they all more technical and security complex.
Next thing you know, you fired your on premise IT staff and hired just as many if not more staff just to babysit your aws usage. Lol
Or you subscribe to another saas service to try and automate away automating in AWS. Lol
Networking was drop dead simple. Basically I think all my instances got an 10.x.x.x IP address. You had a basic firewall (security groups nowadays) but that was it.
Let's say you had another account for a separate project or a client with another account.
You could literally connect to their instance via private IP.
All your own resources and all theirs were in this same 10.x.x.x address space which seemed to be globally reachable inside AWS.
The layers of config to go across account now between different orgs is wild by comparison.
Digital Ocean will give you the cost as you configure the options. Complete transparency. This is how it SHOULD be.
Cost obfuscation is an AWS feature. I was afraid to spin up the smallest instance because I didn't want to find out it was going to cost me over $100 at the end of the billing cycle.
Maybe for a few cloud offerings, but not for cloud in general. I think the point of the cloud is that businesses can exchange employees for services, and shift some of the maintenance responsibility.
No service is for the people who actually interact with it. It's for the ones that pay for it.
The primary benefit of cloud though is that you don’t have to fight for or wait for capital expenditure budgets to grow, you don’t have to wait for hardware to arrive, you don’t have to negotiate with vendors, you don’t have to fight about how long you should keep old hardware or replace it, you don’t have to deal at all with the political or business aspects of managing millions of dollars of hardware.
I can just go on a website and click a few buttons and have something new, and the biggest argument about it is a yearly cloud budget discussion.
It's just a collection of binaries configured with a few pages of text. The configuration should be fairly similar for a typical setup.
So why is it complex?
I mean, is it a fundamental complexity, or is it more like "nobody bothered to write an easy configuration script", or is it learned helplessness?
Are the backups working? Who's checking?
Can anyone delete a directory when tired at 6PM on a Friday?
The main thing I'm looking for in managed PostgreSQL isn't "installation" -- that's easy -- what I need is not to have to spend weeks of configuring and testing and drilling, to be reasonably confident that I won't lose customer data.
I see DigitalOcean does PG standby servers, and daily backups, but I'm unclear on whether they're doing separate, say, WAL-based backups.
The couple mentions I saw of "PITR" seemed to conflate that with the daily backups.
There's a partial description of the UI, but it's still unclear: https://docs.digitalocean.com/products/databases/postgresql/...
> In the Create a new cluster from a backup window that opens, choose whether you want to restore to the latest transaction available or choose a point in time,
What's the "latest transaction available"?
(Is it to moments before someone ripped the cables out of the storage server? Or is it the most recent daily backup, which might've been 23 hours ago?)
> By default, the name is the original databases’ name appended with the date of the backup and the word “backup”, like originalname-aug-13-backup.
I don't want to be trying urgently to recover the businesses of myself and my customers, and find myself asking design questions akin to "Why isn't this a UTC ISO date/timestamp?" but more like "Why are the backups done in such a way that they can't be restored for this ordinary failure scenario that just happened?"
I don't see any technical reason that a cloud provider can't give enterprise DBA confidence at kitchen table startup rates, but I'd feel silly for assuming that they do.
I think, the next time I need this for a kitchen table startup, I'll have see whether the documentation is much more reassuring then, or contact them.
If I need more reassurance than I'm getting, I might have to get AWS startup credits, and hope AWS costs don't outpace my ability to pay.
how do you know they do WAL backup if they don't mention it anywhere in the doc?..
People get dragged into the big cloud when they start using one service or the other, moving the database if for no other reason than to minimize latency seems smart.
I do agree with other people on here that dealing with a laser focused independent company is far preferable than big cluod.
In today's world there are countless Postgres providers (Supabase, RDS, DigitalOcean, GCP, Azure, etc) so there is plenty of choice now.
Although I don't see why anyone would choose niche providers today other than the cloud provided ones like RDS now.
If you are using AWS anyway and are accustomed to it, obviously, RDS is a good choice. But I don't want to learn what DNS and Filesystem are called in AWS-speak just to shoehorn myself into getting stuck with AWS forever, when all I need is a hosted database so I don't have to worry about backups, etc.
My typical situation sees small to medium (virtual) servers that run software for tens to possibly thousands of users. There are plenty of use cases that aren't "google scale" and can be operated on a simple machine and can profit from a "simple" hosted DB.
Rant: Same goes for things like CDNs, I'd guess that 99% of websites don't get nearly the amount of traffic that a simple linux server couldn't handle out of the box. Let alone need sub 100ms ping responses, yet there is this weird cargo cult that requires putting your terraformed, docker stuff running javascript from with a python container with multiple layers of caching behind cloudflare because people don't dare consider simple architectures.
So you’d assume most people are already dealing with the AWS behemoth.
And if the cloud provider is providing a competing Database as a Service then it’s almost impossible to compete.
This is one of the things I quite liked about Azure, funnily enough. They basically give you a connection string. It's not ideal, and I think for production we did something slightly different with Azure identities, but it got us going quickly, and the identities thing devops just swapped in later behind the scenes. Other than that it was just regular Postgres.
Compared to this, stateless application server part is usually quite easy. If you would like to be cost effective, with small team, you could outsource the database part and manage the applications on dedicated servers.
I'm also questioning their decision to put all their chips on message brokers. Don't those services require fast and reliable access that is only possible if they are provided as support services running within the same network? They seem to be the kind of service that only makes sense as a value-added service provided as part of a more general cloud hosting offering.
I suspect it's not time but money—they host the service on various cloud providers in various data centers so that latency is low. In order to pull that off economically they have to be doing some tricks that are only possible at scale, and if they're seeing a lot of natural attrition those techniques will stop working, and they'll probably end up footing an AWS/GCP/Azure bill that won't leave any margin left for the other expenses.
It's something you'd need to trial though, perhaps a few times even.
Due to the time it takes to export, or because it can't handle a database of that size at all?
https://gds.blog.gov.uk/2024/01/17/how-we-migrated-our-postg...
With their approach, there would always be a minimum of 1 second downtime from the DNS changeover.
Takes some research but not rocket science.
2. pg_restore to the new database
3. setup replication between the two databases
4. redeploy your service. Usually, deployments are hot swapped so you continue ingesting into your old database, replicating to the new one, until the deployment is complete. If you use sequential identifiers, I don't think it's possible to do this without dropping a few records due to duplication, unfortunately. If duplication is something you cannot handle, you should deploy two instances of your application in parallel, take the original instance down, wait for replication to complete, and then switch to the new one. This will probably be <10s downtime.
I did something similar recently, but I switched both application hosts and database providers. End user DNS replication would theoretically take some time, but for me consumption dropped to zero within a minute or so https://shottr.cc/s/1ngg/SCR-20240407-hoa.png
2025-01-28
Brownout
Read more about the Brownout schedule below.
2025-02-28
Blackout
Service terminated. All data deleted.
Brownout schedule
First week
1 hour down each day
Second/Third week
8 hours down each day
Forth week
24h down each day
So, in case you haven't migrated off with a month to go before full shutdown (possibly because you haven't realised you're using the service, etc), they introduce intentional outages of increasing length. Harsh but effective!What's the deal with the fourth week? The service is down, but data is not yet deleted - is there still a way to export your data at that point?
Also Ubicloud look interesting, though I've not personally used them:
I'd be happy to answer if anyone has any questions about our managed service.
If Hetzner offers bare metal servers in the future, we would definitely prefer them as well since we are already using Hetzner in EU. However, at the end, the goal is being provider agnostic as much as possible.