Hello everyone !
I have a node app and a PostgreSQL DB in VPS using Docker, with Coolify as a CI/CD, nothing too fancy, you might say.
My question is the following.
I have a lot of read/write on my DB and even the lowest increase in DB latency can have an impact on my users’ experience. As my VPS is in France, what could be the best/easiest (selfhosted?) option to solve this problem in other regions (North America, Asia…) ?
Thks in advance 🎄🎁
Caching and/or DB hosted in a region closer to your users, or perhaps even in their browsers (if the data is not sensitive).
Naturally, if you use secondary DBs you will have to deal with data replication.
Is hitting a real RDBMS absolutely necessary? Consider producing precomputed data sets which can be cached as JSON or with other non-dynamic, storage-only methods. A distributed CDN can be much cheaper than a VPS.
Also consider if Postgres is really your best option. You could use various other database engines that can optimize certain factors: some could be cheaper, or make replication easier etc.
For example (just one example out of many, may not even be applicable to you) using CouchDB on server and PouchDB on browser would make data replication and propagation extremely easy, and it’s also a very efficient and scalable query engine.
I’ve never used it, but I believe cockroachdb is also an option for multi-region replication.
I’ll check it out, I’ll learn more about CouchDB. Thks ;)
Your app and DB should be deployed together in the same datacenter to minimize latency between app and DB. Nothing should be hitting your DB besides your app and any etl tools if applicable. So latency to your DB shouldn’t be an issue.
If you need to add redundancy with a deployment in another region you should consider having separate environments between regions with totally separate data which allows you to better manage data protection/export regulations appropriately.
If that doesn’t work you’ll need a multi region database, a vendor with support for that such as aws rds would be the sanest method but you can always hack it yourself.
There’s other options but those require an architecture designed to be heavily distributed and that depends a lot on the nature of your application and you’d ideally hire an architect experienced in such deployments.
My app and DB are on the same server, even more the same Docker Network. Environments separated by region seem to be the best solution for my use case. I hadn’t thought of that at all, thank you very much.
You may have one psql server per region and then use Bucardo to synchronize them.
I’ve never done this in production, so take my advice with a grain of salt.
I’ll make a note of that, thanks!
Who are your users? Where are they located?
France 100%, so for the moment it’s not a problem at all. But I was thinking about for the future.
I’d cross that bridge when I get there.
Are you expecting to have users in far away countries any time soon?
Nothing here is self hosted. You are running VPS (!!) and want to expand to other continents where presumably you don’t live.
Go bother someone in a random web hosting forum.
Running a VPS does not disqualify as self-hosted, but I do agree that this type of question is not really on-topic.
@Mateleo@lemmy.dbzer0.com, you’ll be better off by asking on some other community on programming.dev or !pro@selfhosted.forum
Yes you’re right, I wouldn’t make the same mistake 🥺
While I agree with @rglullis@communick.news, this isn’t strictly speaking on-topic for this community, that kind of knee-jerk response is very much out of the topic as well. The first community rule is to be civil and in general I, perhaps optimistically, would like that conversation over fediverse in global would be civil, or at least well argumented, a bit like it used to be (more or less, YMMV) back in the usenet days.
And on the topic of self-hosting, that’s a line drawn in the water. I run various of things by myself (postfix+dovecot, LAMP, bitwarden, seafile, nextcloud…) on a rented servers running linux+kvm. And I get money by doing that, it’s a very much a business case, so I’m a bit reluctant to ask questions about the setup I have in here as I think it wouldn’t be fair to ask for advice from hobbyists in a project where money is directly involved. But for me personally that setup checks both sides of things. I get money by doing it, but at the same time I personally can get out of the walled gardens like M365 or Gsuite.
TL;DR: There’s no need to be rude, you can choose to politely point people in the right direction.
Good point. This was uncalled for. I apologize.
I wasn’t quick enough to answer @vsq, but I’d really like to know, as a false beginner, isn’t renting a VPS server considered as selfhosting? Even if I have all my services on it (Jellyfin, n8n, Immich, TeamCity etc).
Depends on whom you ask from. For me selfhosting is all about the software and renting hardware is a perfectly fine solution for that. You don’t need to worry about UPS’s, maintaining hardware and all the jazz which comes with your own gear. Sure, then you’re depending on your VPS provider that services actually stay up, but even a small VPS provider has more people working on things than just yourself. And they have power solutions, like industrial scale power solutions with generators, multiple connection points to the internet and things like that which are either impossible or very expensive to set up just for your own hardware.
And then there’s the other side, like home automation, where relying on internet connectivity to get your lights on is, in my opinion, a bit silly thing to do for yourself and running server for that locally makes perfect sense. So, right solution depends on your needs, but if you want to define what counts as self hosting in my opinion it boils down to who has the root/administrator credentials on your server. Other may have different opinions.