🌳 고급 고급
멀티테넌시(Multi-tenancy)란?
쉽게 이해하기
멀티테넌시는 아파트 한 동에 여러 세대가 사는 것과 같아요. 건물(시스템)은 하나지만, 각 집(테넌트)마다 독립적인 공간과 보안이 보장되죠. 옆집 사람이 내 집 현관문을 열 수 없듯이, 각 고객의 데이터는 철저히 격리돼요.
핵심 정리
하나의 시스템을 여러 고객이 안전하게 함께 쓰는 구조예요.
자세히 알아보기
멀티테넌시는 하나의 애플리케이션 인스턴스를 여러 고객(테넌트)이 공유하면서도 각자의 데이터와 설정을 독립적으로 유지하는 아키텍처예요. SaaS(Software as a Service) 비즈니스에서 필수적인 개념이에요.
실무에서는 데이터베이스 격리 전략이 중요해요. 가장 간단한 방법은 테이블에 tenant_id 컬럼을 추가해서 모든 쿼리에 WHERE tenant_id = ? 조건을 붙이는 거예요. 더 강력한 격리가 필요하면 테넌트마다 별도의 스키마나 데이터베이스를 만들 수도 있어요. 예를 들어 Slack은 워크스페이스마다, Notion은 워크스페이스마다 독립된 데이터를 관리해요.
인증 시스템도 테넌트를 고려해야 해요. 사용자가 로그인할 때 어느 테넌트에 속하는지 식별해야 하고, JWT 토큰에 tenant_id를 포함시켜서 모든 API 요청에서 자동으로 필터링하도록 만들어요. 미들웨어 레벨에서 테넌트 컨텍스트를 설정하면 실수로 다른 테넌트 데이터에 접근하는 버그를 방지할 수 있어요.
성능 측면에서는 특정 테넌트가 시스템 자원을 독점하지 않도록 Rate Limiting과 리소스 쿼터를 설정해야 해요. 한 고객이 대용량 파일을 업로드하거나 과도한 API 호출을 해도 다른 고객에게 영향이 없도록 격리해야 하죠. 이를 'Noisy Neighbor Problem'이라고 불러요.