수직 스케일링
수직 스케일링 (vertical-scaling)
수직 스케일링은 기존 노드에서 CPU, RAM, 디스크를 리사이즈하는 것을 의미해요. 수평 스케일링보다 단순하고, 분산 시스템 복잡도를 피하며, 되돌릴 수 있어서, 단일 노드의 리소스가 병목일 때마다 권장되는 첫 단계예요.
> 출처: [Qdrant 공식 문서 — vertical-scaling](https://qdrant.tech/documentation/scaling/vertical-scaling)
언제 수직으로 스케일링하나요? (When to Scale Vertically)
현재 노드 리소스가 부족하지만 워크로드가 아직 분산을 요구하지 않을 때 수직으로 스케일링하세요.
- RAM 사용량이 사용 가능한 메모리의 80%에 근접할 때. 이 임계값을 넘으면 운영체제가 캐시에서 페이지를 축출(evict)하기 시작해서, 점진적인 성능 저하가 아니라 급격한 성능 하락이 발생해요.
- 쿼리 서빙이나 인덱싱 중 CPU가 포화될 때.
- 디스크 벡터와 payload에 디스크 공간이 부족할 때.
- 워크로드가 비-프로덕션이거나 단일 실패 지점을 견딜 수 있을 때.
단일 노드는 벡터 차원 수와 양자화 활성화 여부에 따라 보통 약 1억 개 벡터까지 담을 수 있어요.
Qdrant Cloud에서 수직으로 스케일링하기 (How to Scale Vertically in Qdrant Cloud)
Qdrant Cloud에서의 수직 스케일링은 Cloud Console에서 관리합니다.
- 리사이즈할 클러스터를 선택한다.
- 더 큰 노드 구성을 선택해 CPU, RAM 또는 둘 다를 늘린다.
- 리사이즈를 확인한다.
리사이즈는 롤링 재시작(rolling restart) 으로 실행돼요. 컬렉션의 복제 인자가 2 이상이면 재시작이 다운타임 없이 완료됩니다. 각 노드가 차례로 재시작하는 동안 다른 복제본이 계속 트래픽을 제공하니까요. 다운타임을 피해야 한다면 리사이즈 전에 복제 인자를 2 이상으로 설정하세요.
스케일업은 일반적으로 안전해요. 스케일다운은 더 신중해야 해요. 축소 후 워킹 셋이 더 이상 RAM에 맞지 않으면 캐시 축출 때문에 성능이 심각하게 저하됩니다. 스케일다운 전에 부하 테스트를 하세요.
셀프 호스팅에서 수직으로 스케일링하기 (How to Scale Vertically Self-Hosted)
셀프 호스팅 배포에서는 기본 VM이나 컨테이너 리소스를 직접 리사이즈한 다음 영향받는 노드를 재시작하세요. 컬렉션의 복제 인자가 2 이상이면 다운타임 없이 노드를 하나씩 리사이즈할 수 있어요.
RAM 크기 산정 지침 (RAM Sizing Guidelines)
RAM은 Qdrant 검색 성능에 가장 직접적으로 영향을 주는 리소스예요. 벡터와 인덱스가 메모리에 들어있을 때 검색이 가장 빠르기 때문이에요.
정확한 RAM 사용량을 예측하기는 어렵지만, RAM에 보관하는 전체 정밀도 벡터에 대한 합리적인 추정은 다음 공식으로 구할 수 있어요.
num_vectors * dimensions * 4 bytes * 1.5
양자화는 방법에 따라 이 추정치를 4~32배 줄일 수 있어요.
벡터 데이터 자체에 더해, 보통 20~30% 오버헤드를 더하는 HNSW 인덱스, payload 인덱스, write-ahead log에 대한 예산도 잡아야 해요. 옵티마이저 연산과 운영체제 캐시를 위해 약 20%의 여유분을 남겨 두세요.
양자화 방법 간의 트레이드오프는 양자화 문서를, 리사이즈 전후의 실제 메모리 사용량 모니터링은 'Monitor Collection Memory Usage' 문서를 참고하세요.
수직 스케일링이 더 이상 충분하지 않을 때 (When Vertical Scaling Is No Longer Enough)
이런 신호가 오면 더 리사이즈하는 대신 수평으로 스케일링할 때예요.
- 양자화를 써도 데이터 양이 단일 노드가 담을 수 있는 양을 초과할 때.
- 가장 큰 노드 크기에서도 CPU가 이미 최대로 차 있고, 쿼리 지연 시간이 받아들일 수 없을 때.
- 디스크 I/O가 포화될 때. 노드를 추가하면 독립적인 디스크 처리량이 더 생겨요.
- 데이터를 노드 간 복제해야 하는 내결함성이 필요할 때.
이 한계에 도달하면 수평 스케일링과 분산 배포 문서에서 어떻게 확장하는지 알아보세요.
모범 사례 (Best Practices)
- RAM을 스케일다운하기 전에 부하 테스트를 하세요. 축소 후 캐시 축출은 지연 시간 회귀를 일으킬 수 있어요.
- RAM 사용량을 80% 미만으로 유지하세요. Qdrant의 메모리 압박은 점진적 둔화가 아니라 성능 절벽을 일으켜요.
- Qdrant Cloud에서 리사이즈 전에 복제 인자를 2 이상으로 설정하세요. 복제본 없는 롤링 재시작은 다운타임을 일으켜요.
- CPU를 추가하기 전에 병목을 진단하세요. 디스크 I/O에 묶인 워크로드는 코어를 추가해도 개선되지 않아요.