챕터별 상세
00:00
멀티테넌시의 개념과 기존 방식의 한계
멀티테넌시는 단일 데이터베이스 클러스터에서 여러 테넌트의 데이터를 격리하여 서비스하는 방식이다. Shopify와 같은 SaaS 플랫폼이 대표적인 사례이며, 각 비즈니스 데이터가 서로 섞이지 않도록 격리하는 것이 핵심이다. 기존에는 테넌트당 하나의 컬렉션을 생성하는 방식을 사용했으나, 이는 리소스 오버헤드가 크고 클러스터당 컬렉션 수 제한(Qdrant Cloud 기준 1,000개)에 걸리는 문제가 있었다.
06:00
파레토 법칙과 테넌트 규모의 불균형 문제
실제 서비스 환경에서는 테넌트의 크기가 극명하게 갈리는 파레토 분포가 나타난다. 소수의 대규모 기업 고객은 수백만 개의 벡터를 보유하는 반면, 대다수의 소규모 고객은 수천 개의 벡터만 보유한다. 대규모 테넌트는 독립적인 CPU와 RAM 리소스, 예측 가능한 지연 시간, 높은 가용성을 필요로 하므로 소규모 테넌트와 동일한 방식으로 관리하기 어렵다.
python
client.create_collection(
collection_name="shared_collection",
vectors_config=models.VectorParams(size=768, distance=models.Distance.COSINE),
hnsw_config=models.HnswConfigDiff(
payload_m=16, # Build graph per tenant
m=0, # Disable global graph
),
)테넌트별 그래프 구축을 위해 글로벌 그래프를 비활성화하고 페이로드 기반 파티셔닝을 설정하는 코드
10:00
계층형 멀티테넌시(Tiered Multi-tenancy) 아키텍처
Qdrant 1.16에서 도입된 계층형 멀티테넌시는 두 단계의 격리 수준을 제공한다. 소규모 테넌트는 페이로드 인덱스를 사용하여 기본 샤드(Default Shard) 내에서 논리적으로 격리되어 리소스를 공유한다. 반면, 대규모 테넌트는 전용 샤드(Dedicated Shard)로 승격되어 물리적으로 격리된 리소스를 할당받는다. 이 방식은 리소스 효율성과 성능 보장을 동시에 만족시킨다.
15:00
테넌트 승격(Promotion) 프로세스와 구현
성장하는 테넌트를 기본 샤드에서 전용 샤드로 옮기는 '테넌트 승격' 프로세스는 서비스 중단 없이 수행된다. 먼저 전용 샤드를 'Partial' 상태로 생성한 뒤, 기본 샤드에서 데이터를 복제한다. 복제가 완료되면 샤드 상태가 'Active'로 변경되고 이후의 모든 요청은 자동으로 전용 샤드로 라우팅된다. `ShardKeyWithFallback` API를 통해 데이터 이동 중에도 읽기 및 쓰기 작업이 정상적으로 유지된다.
20:00
실전 데모 및 제한 사항
데모를 통해 컬렉션 생성부터 데이터 업서트, 테넌트 승격 과정을 직접 확인했다. 특정 테넌트(User 3)의 데이터가 기본 샤드에서 전용 샤드로 이동하는 과정을 타임스탬프와 포인트 카운트로 검증했다. 현재는 기본 샤드가 단일 샤드 ID만 가질 수 있는 등의 제한이 있으나, 향후 릴리스에서 자동화된 승격 기능과 함께 개선될 예정이다.
python
client.upsert(
collection_name=collection_name,
points=points,
shard_key_selector=models.ShardKeyWithFallback(
target="user_3",
fallback="default"
)
)특정 테넌트 샤드가 존재하면 해당 샤드로, 없으면 기본 샤드로 데이터를 라우팅하는 코드
용어 해설
- 멀티테넌시(Multi-tenancy)
- — 단일 소프트웨어 인스턴스나 데이터베이스 클러스터가 여러 독립적인 고객(테넌트)에게 서비스를 제공하는 아키텍처이다. 각 테넌트의 데이터는 논리적으로 격리되어야 하며, SaaS 애플리케이션에서 리소스 효율성을 높이고 관리 복잡성을 줄이는 데 필수적인 기술이다.
- 샤딩(Sharding)
- — 대규모 데이터베이스를 여러 개의 작은 물리적 조각(샤드)으로 나누어 분산 저장하는 기술이다. 이를 통해 데이터 처리 부하를 여러 서버로 분산시켜 확장성을 확보하고, 특정 데이터에 대한 접근 속도를 향상시킬 수 있다.
- 파레토 분포(Pareto Distribution)
- — 전체 결과의 80%가 전체 원인의 20%에서 일어나는 현상을 설명하는 통계적 분포이다. 멀티테넌시 환경에서는 소수의 대규모 테넌트가 전체 트래픽과 데이터의 대부분을 차지하고, 다수의 소규모 테넌트가 나머지를 차지하는 불균형한 상황을 의미한다.
- 벡터 데이터베이스(Vector Database)
- — 데이터를 고차원 벡터 형태로 저장하고 검색하는 데 최적화된 데이터베이스이다. LLM의 임베딩 데이터를 저장하여 유사도 기반 검색을 수행하며, RAG 시스템의 핵심 구성 요소로 사용된다.
AI 분석 전체 내용 보기
AI 요약 · 북마크 · 개인 피드 설정 — 무료
출처 · 인용 안내
원문 발행 2026. 01. 08.수집 2026. 02. 21.출처 타입 YOUTUBE
인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.
