Any experiences with Postgres on AWS RDS? Good/bad/horror/managed alternatives?
it's great
pay attention to how they do restarts for maintenance though
and the reviews on aurora are mixed. I've heard absolute nightmare stories from others but we've found it to be ok
Aurora doesn’t seem to support in place major upgrades which seems off. I’d probably start with plain multi-az rds and see how it feels like...
We don’t have a DBA on the team so my main fear with Postgres is that we’ll mess up :)
scripting your own postgres upgrades sucks a lot
and amazon periodically forcing upgrades actually helps a lot with making organizations take maintenance windows for upgrading it
We use PostgreSQL on RDS a lot. Never had any issues.
Yes, keep an eye on maintanence windows, and plan for it. We have multi-region A-Z setups
PostgreSQL is my favourite relational DB 🙂
Are you using read replicas of any sorts? I was surprised to see that the multi-az setup, the second instance is only on standby and can’t serve traffic.
So it seems that the only possible scaling is via read replicas with some lag, or scaling up for bigger machines.
Not really concerned for my needs, just checking to see if I have an accurate picture...
no read replicas, we dont' have that use-case (mostly it's very heavy writing)
I consume millions of events per day and the CPU on the instance never goes about 4-5%
Oh wow, what kind of instance are you running?
db.r4.2xlarge
Cool - may I also ask what your tech stack is? JVM/JDBC etc?
We have many. But for what I'm doing, it's JVM based (running Clojure!)
Mostly we are JVM based
I'm using next jdbc and honeysql
oh, I also do a lot of Postgis (geospatial) work
🙂
bbl
We use Postgres on RDS heavily too. Smooth experience.
running around dozen postgres instances (often with read replicas or even many) on rds in production. i'm really happy i don't have to manage those machines by hand, can spend my time elsewhere.
for only very big postgres instances we run separate boxes, there it becomes financially reasonable to host your own
from the default settings of read replicas - you probably want to increase the time interval that the replicas allow queries to run, the default is something super low , like 30 or 60 seconds. if you use a read replica as a reporting database you probably will have queries that run for several minutes.