PostgreSQL 멀티테넌시 구성 전략

PostgreSQL에서 멀티테넌시(Multi-Tenancy)를 구현하는 방법과 주요 전략을 살펴봅니다. 이를 통해 각 전략의 특성과 PostgreSQL에서의 구현 방안을 이해할 수 있습니다.


멀티테넌시(Multi-Tenancy)란?

멀티테넌시는 하나의 소프트웨어 인스턴스를 활용해 여러 고객(테넌트)의 데이터를 분리관리하는 아키텍처입니다.

  • 단일 테넌시: 각 고객이 별도의 소프트웨어 인스턴스를 사용하는 방식
  • 멀티테넌시: 하나의 인스턴스를 공유하며 고객 데이터를 격리하는 방식

이를 통해 비용 절감, 효율성 증대 등의 장점이 있지만 데이터 격리 및 보안 관리를 신중히 설계해야 합니다.


PostgreSQL에서의 멀티테넌시 구성 전략

멀티테넌시를 구현하는 주요 전략은 사일로 모델, 풀 모델, 브릿지 모델로 나뉩니다.

1. Silo Model (사일로 모델)

  • 구성 방법: 각 테넌트별로 독립적인 데이터베이스 인스턴스를 생성
  • 특징:
    • 완벽한 데이터 분리: 물리적, 논리적으로 테넌트 간 간섭 없음
    • 보안 및 규제 적합: 고도의 데이터 보안 요구사항 충족
    • 단점: 리소스 낭비, 높은 운영 비용
  • 적용 사례: 민감 정보 관리, 고객이 독립적인 데이터 저장을 요구하는 경우

2. Pool Model (풀 모델)

  • 구성 방법: 하나의 데이터베이스 인스턴스를 공유하고, 각 데이터 행에 **테넌트 식별자(Tenant ID)**를 추가
  • 특징:
    • 운영 효율성: 리소스 소비가 적음
    • 단점: 데이터 분석 및 리소스 관리가 어려움, 보안 요구사항 충족 어려움
  • 적용 사례: 다수의 소규모 테넌트를 관리해야 하는 서비스

3. Bridge Model (브릿지 모델)

  • 구성 방법: 단일 데이터베이스 내에서 **스키마(Schema)**를 테넌트별로 생성
  • 특징:
    • 장점: 사일로 모델과 풀 모델의 장점을 결합, 데이터 격리 수준 강화
    • 단점: 스키마 관리의 복잡성 증가
  • PostgreSQL에서의 구현:
    • PostgreSQL의 스키마(namespace) 기능 활용
    • 테넌트별 스키마 생성으로 데이터 격리

멀티테넌시 구성 전략 비교

전략데이터 격리운영 복잡도리소스 효율성보안 수준
사일로높음높음낮음매우 높음
낮음낮음높음낮음
브릿지중간중간중간중간

선호하는 구성 전략: 브릿지 모델

브릿지 모델은 스키마를 활용해 각 테넌트의 데이터를 분리하면서도 단일 데이터베이스 인스턴스를 사용하는 방식입니다.

  • 관리 방식:
    • ORM(e.g., SQLAlchemy, Prisma, TypeORM)을 활용해 기본 스키마를 생성
    • 테넌트 추가 시 스키마 복제
    • 주의 사항: Raw SQL 사용 시 스키마별 데이터 모델 불일치 가능성 있음
  • 장점:
    • 확장성과 데이터 무결성을 균형 있게 관리 가능
    • 운영 효율성 유지

PostgreSQL 멀티테넌시 구성 시 서비스의 요구사항과 데이터 격리 수준을 고려해 최적의 전략을 선택하는 것이 중요합니다. 브릿지 모델은 유연성과 효율성을 제공하며 다양한 상황에 적합한 선택이 될 수 있습니다.

참고자료
https://docs.aws.amazon.com/prescriptive-guidance/latest/saas-multitenant-managed-postgresql

Leave a Reply

Your email address will not be published. Required fields are marked *