Remix.run Logo
drdexebtjl 3 hours ago

> 4. Use separate bouncers for each application that might be different (extension of #1)

I wonder if clients send something equivalent to a User-Agent, such that the connection pooler could assign them to different pools automatically.

tpetry 3 hours ago | parent | next [-]

This exists, its called a user. You just use different database users for this.

drdexebtjl 2 hours ago | parent [-]

I was thinking of something that only exists at the pool level.

Every new version of your app has the potential to change behavior in a way that would affect the previous version if the connection was recycled during a progressive rollout.

But I don’t think I would want to create a real database user for every version of the app.

I suppose the connection pooler could map versioned users to the same real user, and use separate pools, but a dedicated UA field is probably better.

SahAssar an hour ago | parent [-]

> But I don’t think I would want to create a real database user for every version of the app.

Why not? Database users are (usually) not expensive, and with groups you can give access to a group you just add the user to.

Adding this logic to the connection pooler seems more complicated.

nijave 3 hours ago | parent | prev [-]

Can also use different database names since pgbouncer lets you remap that