
내 고용주는 현재 고객 구내에서 물리적으로 분리된 여러 Postgres 인스턴스(고객당 하나, 고유한 사이트 코드 포함)를 보유하고 있습니다. 각 고객은 인스턴스 내에서 1~4개의 데이터베이스를 실행하고 있으며, 각 데이터베이스에는 20개 이상의 스키마가 포함되어 있습니다.
우리는 액세스/제어를 단순화할 수 있도록 온프레미스 또는 클라우드 공급자(RDS 등)를 통해 단일 Postgres 인스턴스에서 이러한 데이터베이스를 통합하려고 노력하고 있습니다. 고객은 계속해서 데이터베이스에 액세스하지만 공유 RESTful 서비스 계층을 도입할 예정입니다. 여기서 특정 데이터베이스는 각 API의 URL 경로의 일부로 추가된 사이트 코드를 사용하여 대상이 됩니다. 성능에 대한 SLA(1초 미만 90%)를 충족하고 리소스 사용량을 낮게 유지하기 위해 서비스 계층에서 연결 풀링을 활용할 계획입니다.
우리가 직면하고 있는 주요 문제는 연결 중에 Postgres에 데이터베이스가 필요하다는 것입니다. 즉, 많은 리소스를 비효율적으로 사용하는 고객당 연결 풀이 있어야 한다는 것입니다. 리소스를 효율적으로 사용하지 않기 때문에 더 많은 서비스 계층 인스턴스가 필요할 수 있으며, 이로 인해 아키텍처에 더 많은 비용과 복잡성이 발생할 수 있습니다. 서비스 계층의 여러 인스턴스에 걸쳐 고객을 효과적으로 "샤딩"하는 것이 가능하지만 비효율적인 연결 사용이라는 실제 문제는 해결되지 않습니다.
내가 고려하지 않은 또 다른 해결책이 있습니까? 요청이 특정 데이터베이스로 전달되는 단일 연결 풀을 갖는 방법일까요? 아니면 부하에 따라 동적으로 크기를 조정할 수 있는 동적 연결 풀이 있을까요?
감사해요
답변1
AWS RDS 프록시연결 요구 사항을 줄이는 실용적인 방법일 수 있습니다.