Check out PlanetScale [0] (if you use MySQL). Their hobby tier is free and very generous. If you get to the point of needing more, $30/mo isn't bad for what you get. It's way better than Aurora Serverless V1 or V2 which I was super excited for but turned out to not be worth it all. It failed scaling so much that I had to crank it up before an event or it would never find a good "migration point" or whatever they called it. Aurora Serverless' marketing is straight lies and their pricing is opposite of what I think of when I hear "serverless", $45/mo per DB if you want a single instance in V1 or 0.5 of one in V2. At least V1 allowed you to scale to 0, they removed that in V2.
While I agree with you, the answer is that some people don't want to manage the DB. This means patching the OS, patching the database, and making backups (with reasonable disaster recovery). While you could do all of this, many ask, "How much of my time will be spent DevOp'ing (like learning how to do it and then executing)?" If the number of hours is over some threshold, they might prefer to pay someone to do all of that.
I think people tend to overthink about running your own db.
There is nothing to patch manually. Security updates are handled automatically via "unattended-upgrades" for Ubuntu and when the OP says,
> tiny, almost free, sql database for personal projects
running "mysqldump" on a cron job sounds enough to me.
> with reasonable disaster recovery
You may send that dump file to any S3 based storage anywhere in the world for a decent disaster recovery. (Tools like restic allows automatic data rotation easily.)
Launching an instance (even use "MySQL" app instance cloud providers provide) and installing MySQL with 1 command, write a few lines of shell script to take a daily backup should take at most an hour.
Optionally, install Caddy web server and set up a few lines for PHP fpm or for other languages a single line to reverse proxy for automatic Let's Encrypt and your site is up. I'm sure there are plenty of tutorials on that.
Once things are up, there's nothing to manage. It gives you flexibility with lower price, not to mention gives you the little knowledge you likely want to have down the road.
100% agree !
When did "running your own db" became such a code-smell !?
Sure at the higher of traffic and usage you might want to outsource, but it's stupidly easy to get reasonable performance and security with the defaults or the most basic of configs.
You can actually learn a lot about db's (and become a better user of the db) by actually knowing what some of the configs do as well.
running your own db is not a code smell, it's a productivity smell if you're a one/two person startup - are you so good at running your own db that the people a cloud provider would put on the job would be definitely and probably significantly worse at it than you? If so, keep on with it, if not maybe consider if you can afford to have someone do it for you.
If like the original poster, I want to spend less than 15 dollars a month then I would be forced to run my own DB. If price is predominant you have to do it yourself.
I am not the OP but I setup a fairly expensive server to run my Postgres,redis,and other fire and forget processes. Now, five years later, I have never once had to login to change anything.
And thanks to that I saved thousands of dollars versus what I would have paid for a managed systems of the same performance so I could do all kinds of wild experimental projects that would’ve otherwise been too expensive.
The uptime has been phenomenal. We would have hit 5 years uptime, except briefly the data center caught fire resulting in a few hours of downtime.
>are you so good at running your own db that the people a cloud provider would put on the job would be definitely and probably significantly worse at it than you?
Most of the time, I don't need to be as good or better then the cloud provider. I just need to "be good enough".
Ansible. Every morning I run two commands that are wrappers around "apt-get update" and "apt-get upgrade" that upgrade the entire fleet of servers I manage. They're the same two commands every morning and they're in my bash history. It's really not that hard.
You don't need to do that if you're satisfied with the current version. It rarely breaks but mostly it doesn't give you anything unless you needed the specific new version.
Just keep unattended-upgrades do the important updates without any manual labors.
There's also https://railway.app/ too. I find their free tier incredibly generous and I am using their managed postgres instance for my side projects
(I am not affiliated)
Supabase developer here. Just to clarify, inactivity means "no api calls, no dashboard usage", so your project only gets paused if it's truly inactive for a full week. If you have an application with any sort of usage at all you should not get paused.
The more I've worked with sqlite, the more I've been impressed. Spins up as a file that can be put in source control. Supports SQL - all the basic stuff one might try to pull off with a small MySQL instance. The main gotcha is you get a single, local node. For most personal workloads, it covers the basics really well.
I have a similar desire, I'm considering trying out AWS' RDS Aurora Serverless v2. (ugh, that's a mouthful) Full Postgres/MySQL but extremely quick scale up and down so as long as you have small use, it shouldn't cost a ton.
I'm also super interested in Cloudflare D1, looking to get my hands on it and try it out.
Check out PlanetScale [0] (MySQL). It's free for hobby projects and then a flat $30/mo (+usage if you go over their very high limits). You can run your dev/qa/prod environment all on one "database" using their branches and you also get zero-downtime schema changes which is pretty sweet. I've been very happy with them so far.
I migrated from RDS Aurora Serverless V1 after being frustrated with the high prices (V2 is even worse) and the annoyance of sleeping DBs (for my dev/qa environments, I couldn't afford $45x3/mo). Now I get all 3 for only $30/mo and safe/easy schema migrations. It's been a joy to work with and their support has been very responsive. This week is a "launch week" for them so you'll probably see a few posts about it this week and I encourage you check them out if you are looking for scalable managed MySQL DBs.
V2 is a garbage fire and that was before I knew it didn't scale to zero.
It doubles the cost of V1 and they have the gall to say:
> most Aurora Serverless customers can lower costs by moving to v2 due to a lower starting capacity of 0.5 ACU (vs. 1 ACU in v1)
Oh, why thank you AWS, how kind of you. I can go to 0.5? That doesn't matter at all, the price is the save as 1 ACU on V1.
D1 is interesting but if you want Serverless MySQL then check out PlanetScale [0]. It's free for hobby projects (it will turn off if you go 1 week with no activity) and then it's a flat $30/mo and you can have 2 production branches and 5 development branches. I've been very happy with them so far. The usage-based pricing is a little scary (I know I don't think in rows read/written) but the limits are super high and so far my usage has been barely a blip.
Probably not super popular, but last I checked (a couple months ago), Oracle Cloud will give you up to 2 free Oracle Autonomous (managed) SQL databases and I think if you work the free storage / virtual CPUs right, up to 4 virtual servers that you can put other unmanaged dbs on with their free tier.
Why not just host it on a Raspberry Pi? May as well host the entire project on it. If your Internet provider doesn't let external clients directly access your connection, tunnel it through the cheapest VPS you can find. Or just host the whole thing on said cheap VPS.
Lots of answers below but no one has yet asked what you want the db to do? Know nowing your specific needs will make it easier to give meaningful recommendations.
The cheapest option here is $15 a month, and similar prices for other cloud managed dbs.
Heroku was nice and I guess is still a good option, but hard to make a usable site on their free tier because of start up time.
Then there's the interesting new option from Cloudflare, D1.
Currently I just run my personal project on AWS lambda + dynamodb. It's free, but using dynamodb for relational data is a little awkward.