AWS에서 **테넌트(Multi-Tenancy)**는 SaaS(Software as a Service) 애플리케이션에서 여러 고객(테넌트)이 하나의 공유 인프라를 사용하면서도 데이터와 리소스가 안전하게 격리되는 아키텍처를 의미합니다.
싱글 테넌트(Single-Tenancy)는 각 고객에게 전용 인스턴스를 제공하는 방식으로 보안과 커스터마이징이 강하지만 비용이 높습니다. 반대로 멀티 테넌시는 리소스를 공유해 비용 효율성과 스케일링이 우수하지만, **테넌트 격리(Tenant Isolation)**가 핵심 과제입니다.
AWS는 SaaS 빌더를 위해 다양한 격리 모델과 베스트 프랙티스를 제공합니다. 주요 패턴은 데이터베이스 중심으로 Silo, Bridge, Pool 모델입니다.
주요 테넌트 격리 모델 (AWS 공식 Guidance 기준)
| 모델 | 설명 | 격리 수준 |
비용/복잡도 | 장점 | 단점 | 적합한 경우 |
| Silo | 테넌트당 별도 데이터베이스 인스턴스 (e.g., RDS 인스턴스 하나당 하나의 테넌트) | 최고 | 높음 | 강력한 격리, 규제 준수 용이, 성능 독립 | 비용 높음, 관리 복잡, 스케일링 어려움 | 고보안 요구 (금융, 의료 등) |
| Bridge | 테넌트당 별도 스키마(Schema), 공유 인스턴스 | 중간 | 중간 | 격리와 비용 균형, 테넌트별 커스터마이징 가능 | 스키마 관리 필요, 노이즈 이웃 영향 가능 | 중간 규모 테넌트, 혼합 요구사항 |
| Pool | 모든 테넌트가 하나의 데이터베이스 공유, 행 수준(Row-level) 보안으로 격리 | 낮음 | 낮음 | 비용 최소, 운영 간편, 최고 효율성 | 격리 약함, 노이즈 이웃(Noisy Neighbor) 위험 | 대규모 테넌트, 비용 최적화 우선 |
- 혼합(Hybrid) 접근: 많은 SaaS에서 Silo와 Pool을 조합 (e.g., 일반 테넌트는 Pool, 프리미엄은 Silo).
- AWS 서비스 예시:
- 데이터베이스: Amazon RDS/Aurora (Silo/Bridge/Pool 지원), DynamoDB (테넌트 ID로 파티셔닝).
- 스토리지: S3 버킷-per-테넌트 (Silo) vs. 공유 버킷 + prefix (Pool).
- 컴퓨트: Lambda/ECS/EKS에서 테넌트 컨텍스트 전달.
AWS에서의 테넌트 격리 베스트 프랙티스
- 아이덴티티와 인증 (Amazon Cognito):
- 공유 User Pool: 모든 테넌트가 하나의 풀 공유 → 보안 정책 통일 (MFA, WAF 등).
- 테넌트별 User Pool: 최대 격리, 하지만 관리 복잡.
- 앱 클라이언트나 커스텀 스코프로 테넌트 분리.
- 데이터 격리:
- 행 수준 보안(Row-Level Security) 사용 (PostgreSQL 등).
- 테넌트 ID를 모든 테이블에 추가하고, 애플리케이션 레이어에서 필터링.
- 노이즈 이웃(Noisy Neighbor) 방지:
- 하나의 테넌트가 리소스를 독점하지 않도록 쿼터/스로틀링 적용 (API Gateway, Lambda 등).
- 모니터링: CloudWatch로 테넌트별 메트릭스 수집.
- 보안 및 컴플라이언스:
- IAM 정책으로 테넌트별 접근 제어.
- VPC, Network Policy로 네트워크 격리.
- 로깅/감사: 테넌트별 로그 분리 (CloudTrail, S3).
- 온보딩 및 관리:
- 테넌트 프로비저닝 자동화 (AWS CDK/CloudFormation).
- 테넌트 컨텍스트를 API/Lambda全程 전달 (e.g., JWT 클레임에 tenant_id 포함).
- 비용 최적화:
- 공유 리소스 최대화 (Pool 모델 기본).
- 서버리스(Lambda, DynamoDB) 활용 → 사용량 기반 과금으로 테넌트 비용 정확 배분.
추천 자료 (AWS 공식)
- Multi-Tenant Architectures on AWS Guidance
- AWS Well-Architected Framework - SaaS Lens
- SaaS Tenant Isolation Strategies Whitepaper
멀티 테넌시는 비용과 보안의 트레이드오프입니다.
대부분의 SaaS는 Pool 모델을 기본으로 시작하고, 필요 시 Silo로 업그레이드 옵션을 제공하는 게 효과적이에요.
실제 구현 시 AWS SaaS Factory나 파트너와 상담 추천합니다!
반응형
'IT관련 > AWS' 카테고리의 다른 글
| Amazon Pinpoint API와 AWS End User Messaging 정리 (0) | 2026.01.01 |
|---|---|
| AWS End User Messaging에서 한국 전화번호/발신자 ID 지원 제외 이유 (0) | 2025.12.31 |
| AWS S3 정적 사이트 변경 후 바로 적용하는 방법 (1) | 2025.12.24 |
| AWS End User Messaging 완벽 정리 (0) | 2025.12.21 |
| AWS WAF란 무엇인가? 웹 애플리케이션 보호를 위한 필수 도구 (0) | 2025.11.14 |