블루-그린 클러스터 배포

블루-그린 클러스터 배포 (tutorials-operations-blue-green-deployment)

시간: 30분 수준: 중급

블루-그린 배포는 두 개의 클러스터를 병렬로 운영하는 방식이에요. 하나는 운영 트래픽을 처리하는 라이브 클러스터(파란색, blue)이고, 다른 하나는 변경 사항을 준비하고 검증하는 스테이징 클러스터(초록색, green)죠. 초록 클러스터가 준비되면 애플리케이션 트래픽을 그쪽으로 전환하고, 기존 클러스터는 폐기해요.

이 방식은 컬렉션 수준의 블루-그린 마이그레이션과는 달라요. 컬렉션 수준에서는 두 컬렉션이 같은 클러스터 안에 함께 존재하거든요. 컬렉션 수준 방식에서는 잘못된 업로드나 무거운 인덱싱 작업이 여전히 운영 클러스터에 영향을 줄 수 있어요. 클러스터 수준 전략은 위험한 작업을 별도의 클러스터에 두어서 그 리스크를 완전히 제거한답니다.

언제 사용할까요

블루-그린 클러스터 배포는 이런 경우에 사용해요:

  • 월간 또는 정기적으로 전체 데이터셋을 교체하면서, 라이브 클러스터를 건드리지 않고 새 데이터를 빌드하고 인덱싱하고 싶을 때.
  • 버전 업그레이드를 진행하면서, 운영에 반영하기 전에 새 Qdrant 버전을 실제 데이터로 테스트하고 싶을 때. 예를 들어 1.15에서 1.18로 올라가는 경우요.
  • 리샤딩이나 샤드 수를 늘리는 작업을 할 때. 새 클러스터에서 리샤딩을 진행해서 라이브 클러스터가 부하를 받지 않게 하는 거예요.
  • 실수로 운영이 중단될 수 있는 큰 구조 변경을 할 때.
  • 가용성을 높이기 위해 추가적인 폴백 옵션을 원할 때.

어떻게 동작할까요

이 과정은 다섯 단계로 진행돼요:

  1. 새 클러스터를 만든다.
  2. 모든 데이터를 그 클러스터에 로드한다.
  3. 새 클러스터를 테스트하고 검증한다.
  4. 애플리케이션 트래픽을 새 클러스터로 전환한다.
  5. (선택) 이전 클러스터를 폐기한다.

사전 준비 사항

  • 운영 트래픽을 처리 중인 Qdrant 클러스터(블루 클러스터)가 실행 중이어야 해요.
  • 새 클러스터를 생성할 수 있도록 Qdrant Cloud 또는 자체 호스팅 인프라에 접근 권한이 있어야 해요.
  • Qdrant Cloud에서 프라이빗 링크(private link)를 사용한다면 시작 전에 프라이빗 링크 관련 안내를 꼭 읽어보세요. 컷오버(cutover) 전에 새 클러스터에 대한 Private Link 설정을 요청해야 해요.

1단계: 새 클러스터 만들기

새 클러스터를 만들어요. 이게 초록 클러스터가 되는 거예요. 최종 상태를 원하는 모습으로 구성하세요:

  • Qdrant를 업그레이드하는 경우라면 목표 버전을 명시적으로 선택하세요. 기본 버전을 확인 없이 그대로 받아들이지 마세요. 여기서 선택한 버전이 테스트 대상이자, 전환 후 운영을 담당하게 될 버전이에요.
  • 특정 클러스터 크기나 노드 수가 필요하다면 지금 설정해 두세요.

초록 클러스터는 비어 있는 상태로 시작해요.

2단계: 새 클러스터에 데이터 로드하기

초록 클러스터에 데이터를 넣는 방법은 여러 가지가 있어요.

옵션 A: 기본 데이터 소스에서 로드하기

기본 데이터 소스가 Qdrant 밖에 있다면(예: 데이터베이스, 객체 스토리지), 자체 수집 스크립트로 그 소스에서 직접 초록 클러스터를 로드할 수 있어요. 전체 데이터셋 교체에 자연스럽게 맞는 방법이에요. 블루 클러스터를 채웠던 것과 같은 파이프라인으로 처음부터 다시 임베딩하고 인덱싱하는 거죠.

이 접근 방식은 과정을 완전히 제어할 수 있게 해주고, 데이터·임베딩 모델·컬렉션 스키마에 대한 변경 사항을 동시에 적용할 수도 있어요.

옵션 B: 마이그레이션 툴 사용하기

라이브 스트리밍 마이그레이션이 더 좋다면, 예를 들어 테스트 중에 초록 클러스터를 블루 클러스터에 가깝게 유지하거나 리샤딩을 원할 때는 Qdrant 마이그레이션 툴을 사용해요.

 docker run --rm -it \
 registry.cloud.qdrant.io/library/qdrant-migration qdrant \
 --source.url 'https://your-blue-cluster.cloud.qdrant.io:6334' \
 --source.api-key 'blue-cluster-api-key' \
 --source.collection 'your-collection' \
 --target.url 'https://your-green-cluster.cloud.qdrant.io:6334' \
 --target.api-key 'green-cluster-api-key' \
 --target.collection 'your-collection'

마이그레이션 툴은 데이터를 배치 단위로 스트리밍하고, 중단되더라도 이어서 진행할 수 있어요. 또한 마이그레이션 과정에서 복제 설정이나 양자화(quantization) 변경, 샤드 수 변경 같은 컬렉션 재구성도 지원한답니다.

옵션 C: 스냅샷에서 복원하기

블루 클러스터의 각 컬렉션에 대한 스냅샷을 만들고, 이를 초록 클러스터에 복원해요. 빠르고 안정적이며, 대용량 데이터셋에 선호되는 방법이에요.

스냅샷 튜토리얼을 따라 스냅샷을 만들고 다운로드한 다음, 새 클러스터에 복원하세요.

옵션 D: 볼륨 백업에서 복원하기

Qdrant 스토리지 볼륨의 디스크 수준 백업을 가지고 있다면(예: AWS의 EBS 스냅샷, GCP의 영구 디스크 스냅샷, 다른 플랫폼의 블록 스토리지 스냅샷), 그중 하나를 초록 클러스터의 스토리지 볼륨에 직접 복원할 수 있어요.

이는 대용량 데이터셋으로 새 클러스터를 채우는 가장 빠른 방법이에요. Qdrant 수준의 데이터 전송을 완전히 건너뛰는 블록 수준 복사이기 때문이죠. 모든 컬렉션과 그 설정, 인덱스, write-ahead log를 한 번의 작업으로 복원한답니다.

3단계: 테스트하고 검증하기

트래픽을 전환하기 전에 초록 클러스터를 철저히 검증하세요. 최소한 다음을 확인해요:

  • 포인트 수: 초록 클러스터의 각 컬렉션이 예상한 수의 포인트를 가지고 있는지 확인해요. 블루 클러스터를 미러링하는 게 목표라면 개수가 일치하는지 확인하세요. 새 데이터셋을 로드했다면 그 소스의 예상 개수와 대조해보세요.
  • 검색 품질: 운영 쿼리의 샘플을 초록 클러스터에 실행해 결과를 비교해봐요.
  • 인덱스 상태: 컷오버 전에 인덱싱이 완료됐는지 확인해요. Web UI의 Collections 보기에서 각 컬렉션의 상태 표시기를 확인하고, 초록색이 될 때까지 기다려요. 컷오버 중 무거운 인덱싱 작업은 지연 시간을 높일 수 있어요.
  • 버전 동작: Qdrant를 업그레이드했다면 릴리스 노트에서 호환성이 깨지는 변경 사항을 확인하고, 의존하는 기능들을 테스트해보세요.

여기서 시간을 충분히 쓰세요. 전환 스위치를 켜기 전까지 블루 클러스터는 영향을 받지 않아요.

4단계: 새 클러스터로 트래픽 전환하기

컷오버는 애플리케이션의 설정 변경이에요. 두 가지 값을 업데이트해야 해요:

  1. 클러스터 엔드포인트. 초록 클러스터는 고유한 URL을 가지고 있어요.
  2. API 키. 초록 클러스터는 읽기·쓰기 권한을 가진 고유한 API 키를 가지고 있어요.

이 변경을 어떻게 배포할지는 애플리케이션 스택에 달려 있어요. 컨피그 맵 업데이트, 환경 변수 변경, 피처 플래그, 코드 배포 등이 될 수 있죠. 핵심은 이것이 트래픽 전환 자체에 필요한 유일한 변경이라는 점이에요.

전환 후에는 블루 클러스터를 폐기하기 전에 오류율과 지연 시간을 모니터링하세요. 초록 클러스터가 정상적이라고 확신할 때까지 블루 클러스터를 계속 실행해 두는 게 좋아요.

Qdrant Cloud에서 프라이빗 링크(AWS)나 프라이빗 서비스 커넥트(GCP)를 사용한다면 엔드포인트 전환이 조금 더 복잡해져요. 이 연결은 클러스터별로 설정되며 지원 티켓이 필요해요. 초록 클러스터는 운영 트래픽을 라우팅하기 전에 자체 프라이빗 링크나 프라이빗 서비스 커넥트를 설정해야 해요.

이를 미리 계획하세요:

  1. 초록 클러스터를 만들 때 즉시 지원 티켓을 열어 프라이빗 링크나 프라이빗 서비스 커넥트를 설정해달라고 요청하세요.
  2. 초록 클러스터의 프라이빗 링크나 프라이빗 서비스 커넥트가 확인될 때까지 컷오버를 시작하지 마세요.
  3. 애플리케이션 설정을 변경하기 전에 프라이빗 링크나 프라이빗 서비스 커넥트 구성을 초록 클러스터의 연결을 가리키도록 업데이트하세요.

5단계(선택): 이전 클러스터 폐기하기

초록 클러스터가 정상적으로 트래픽을 처리하고 있다는 것을 확인한 뒤에는 블루 클러스터를 내릴 수 있어요.

삭제하기 전에 롤백 지점으로 쓸 스냅샷을 유지할지 고민해보세요. 컷오버 후 며칠 안에 예상치 못한 문제가 생기면, 블루 클러스터 상태의 스냅샷이 있으면 빠르게 복원할 수 있어요.

비용 고려 사항

전환 기간 동안 두 클러스터를 동시에 실행하게 돼요. 클러스터 크기에 따라 이 비용은 상당할 수 있어요. 기간을 짧게 유지하도록 계획하세요. 컷오버를 시작하기 전에 초록 클러스터 테스트를 마치고, 만족하면 블루 클러스터를 신속히 폐기하는 거예요.

롤백

컷오버 후 롤백이 필요하다면:

  • 블루 클러스터가 아직 실행 중이라면 애플리케이션 설정을 블루 클러스터의 엔드포인트와 API 키로 되돌려요.
  • 이미 블루 클러스터를 폐기했다면 스냅샷을 새 클러스터에 복원하고 애플리케이션이 그것을 가리키게 해요.

컷오버는 데이터 변경이 아니라 구성 변경이기 때문에, 블루 클러스터나 그 스냅샷이 있다면 롤백은 간단한 편이에요.

더 알아보기 (Learn more)

출처: Qdrant 공식문서