토픽 160 / 201·NewSQL 및 특수 목적 DB
Multi-tenancy Database (멀티테넌시 데이터베이스)
Multi-tenancy Database (멀티테넌시 데이터베이스)
단일 데이터베이스 인스턴스에서 여러 테넌트(고객/조직)의 데이터를 격리하여 저장·관리하는 아키텍처로, SaaS 애플리케이션에서 비용 효율과 운영 단순화를 위해 사용하며 스키마 분리, 테이블 분리, 행 수준 분리 방식이 있음
목적: 비용 효율(리소스 공유), 운영 단순화, 테넌트 격리, SaaS 확장성
특징: 테넌트 격리, 리소스 공유, 스키마 유연성, 보안/컴플라이언스
격리 수준
- •Database per Tenant: 테넌트별 별도 DB, 완전 격리, 비용 높음, 관리 복잡
- •Schema per Tenant: 테넌트별 별도 스키마(PostgreSQL), 중간 격리, 연결 공유
- •Table per Tenant: 테넌트별 별도 테이블, 테이블 수 폭발 위험
- •Row Level(Shared Table): 테넌트 ID 컬럼으로 구분, 최고 효율, 격리 약함
Row Level Security (행 수준 보안)
- •모든 쿼리에 tenant_id 조건 자동 추가
- •PostgreSQL RLS, MySQL View + 컨텍스트 변수
- •실수로 다른 테넌트 데이터 접근 방지
장점: 비용 효율(리소스 공유), 운영 단순화(단일 인스턴스), 테넌트 추가 용이한 확장성
단점: Noisy Neighbor(리소스 독점), 격리 약함(유출 위험), 스키마 변경 복잡, 규제 제약
설계 고려사항: 테넌트 ID 인덱스(파티셔닝 키), 쿼리 tenant_id 조건 필수, 연결 풀 설정, 테넌트 단위 백업/복원
적용사례: SaaS(Salesforce, Shopify), B2B 플랫폼, 멀티 브랜드 서비스
기술요소: Tenant ID, RLS, Schema 분리, Partitioning, Connection Pool
비교: DB per Tenant(격리 높음/비용 높음) vs Schema per Tenant(중간) vs Row Level(효율/격리 낮음)
연관: SaaS, Row Level Security, 파티셔닝, 샤딩, 데이터 격리