데이터 분석 계열 B2B SaaS를 운영 중인데, 고객마다 데이터가 많다 보니 멀티테넌트 구조에서 쿼리 성능과 데이터 분리를 동시에 신경 써야 하는 상황입니다.
스키마를 고객마다 나눌지, 테이블은 하나지만 테넌트 키로 구분할지, 아니면 아예 DB를 분리할지 내부에서 논쟁이 많습니다.
실무적으로 어떤 기준으로 멀티테넌시 전략을 선택하는 게 좋을까요?
--
안녕하세요. SaaS 전환지원센터입니다.
데이터 분석 SaaS에서는 멀티테넌시 전략이 성능·보안·운영비용을 한꺼번에 좌우하는 핵심 설계입니다. 크게 보면 ① 완전 공유 스키마(tenant_id 컬럼으로 구분), ② 스키마 per 테넌트, ③ DB per 테넌트 정도로 나눌 수 있는데, 보통은 공유 스키마 + 일부 대형 고객에 대한 분리 옵션을 둔 하이브리드 모델을 많이 택합니다. 이유는, 완전 분리(DB per 테넌트)는 보안·격리는 좋지만 운영 복잡도와 비용이 급격히 올라가기 때문입니다.
실무 기준은 3가지로 정리해볼 수 있습니다.
1. 규모와 성장성: 대부분 소규모 고객이고 데이터량이 상대적으로 적다면 공유 스키마로 시작하는 것이 효율적입니다. 대신, 특정 기준(데이터량/쿼리 비율/매출 규모 등)을 넘는 “대형 테넌트”에 대해서는 별도 스키마/DB로 분리할 수 있는 탈출구를 설계해 두는 게 좋습니다.
2. 보안·규제 요구: 금융·공공처럼 “논리적 분리”만으로는 부족하다고 판단되는 고객은, 별도 인스턴스나 VPC/DB 분리를 제안하는 식으로 티어를 나눌 수 있습니다.
3. 운영 도구: 백업·마이그레이션·버전 업그레이드를 어떤 단위(전체/DB/스키마)로 할지 미리 상정해 보는 것도 중요합니다.
또한 쿼리 성능은 멀티테넌시 구조뿐 아니라, 인덱스 설계와 파티셔닝 전략에 크게 영향을 받습니다. tenant_id + 날짜 필드를 기준으로 파티션을 나누거나, 자주 쓰는 필드 조합에 맞춰 인덱스를 최적화하는 것만으로도 체감 성능이 많이 달라질 수 있습니다. 결론적으로, 처음부터 완벽한 답을 찾으려 하기보다, “공유를 기본으로 하되, 특정 조건을 만족하는 고객은 수평 확장/분리”할 수 있는 구조와 기준을 문서로 만들어 두는 것이 가장 현실적인 선택입니다.
추가로 궁금하신 사항이나 더 자세한 안내가 필요하실 경우, 언제든 문의해 주시기 바랍니다.
감사합니다.