블루-그린 클러스터 배포
블루-그린 클러스터 배포 (tutorials-operations-blue-green-deployment)
| 시간: 30분 | 수준: 중급 |
|---|
블루-그린 배포는 두 개의 클러스터를 병렬로 운영하는 방식이에요. 하나는 운영 트래픽을 처리하는 라이브 클러스터(파란색, blue)이고, 다른 하나는 변경 사항을 준비하고 검증하는 스테이징 클러스터(초록색, green)죠. 초록 클러스터가 준비되면 애플리케이션 트래픽을 그쪽으로 전환하고, 기존 클러스터는 폐기해요.
이 방식은 컬렉션 수준의 블루-그린 마이그레이션과는 달라요. 컬렉션 수준에서는 두 컬렉션이 같은 클러스터 안에 함께 존재하거든요. 컬렉션 수준 방식에서는 잘못된 업로드나 무거운 인덱싱 작업이 여전히 운영 클러스터에 영향을 줄 수 있어요. 클러스터 수준 전략은 위험한 작업을 별도의 클러스터에 두어서 그 리스크를 완전히 제거한답니다.
언제 사용할까요
블루-그린 클러스터 배포는 이런 경우에 사용해요:
- 월간 또는 정기적으로 전체 데이터셋을 교체하면서, 라이브 클러스터를 건드리지 않고 새 데이터를 빌드하고 인덱싱하고 싶을 때.
- 버전 업그레이드를 진행하면서, 운영에 반영하기 전에 새 Qdrant 버전을 실제 데이터로 테스트하고 싶을 때. 예를 들어 1.15에서 1.18로 올라가는 경우요.
- 리샤딩이나 샤드 수를 늘리는 작업을 할 때. 새 클러스터에서 리샤딩을 진행해서 라이브 클러스터가 부하를 받지 않게 하는 거예요.
- 실수로 운영이 중단될 수 있는 큰 구조 변경을 할 때.
- 가용성을 높이기 위해 추가적인 폴백 옵션을 원할 때.
어떻게 동작할까요
이 과정은 다섯 단계로 진행돼요:
- 새 클러스터를 만든다.
- 모든 데이터를 그 클러스터에 로드한다.
- 새 클러스터를 테스트하고 검증한다.
- 애플리케이션 트래픽을 새 클러스터로 전환한다.
- (선택) 이전 클러스터를 폐기한다.
사전 준비 사항
- 운영 트래픽을 처리 중인 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단계: 새 클러스터로 트래픽 전환하기
컷오버는 애플리케이션의 설정 변경이에요. 두 가지 값을 업데이트해야 해요:
- 클러스터 엔드포인트. 초록 클러스터는 고유한 URL을 가지고 있어요.
- API 키. 초록 클러스터는 읽기·쓰기 권한을 가진 고유한 API 키를 가지고 있어요.
이 변경을 어떻게 배포할지는 애플리케이션 스택에 달려 있어요. 컨피그 맵 업데이트, 환경 변수 변경, 피처 플래그, 코드 배포 등이 될 수 있죠. 핵심은 이것이 트래픽 전환 자체에 필요한 유일한 변경이라는 점이에요.
전환 후에는 블루 클러스터를 폐기하기 전에 오류율과 지연 시간을 모니터링하세요. 초록 클러스터가 정상적이라고 확신할 때까지 블루 클러스터를 계속 실행해 두는 게 좋아요.
Qdrant Cloud에서의 Private Link 또는 Private Service Connect
Qdrant Cloud에서 프라이빗 링크(AWS)나 프라이빗 서비스 커넥트(GCP)를 사용한다면 엔드포인트 전환이 조금 더 복잡해져요. 이 연결은 클러스터별로 설정되며 지원 티켓이 필요해요. 초록 클러스터는 운영 트래픽을 라우팅하기 전에 자체 프라이빗 링크나 프라이빗 서비스 커넥트를 설정해야 해요.
이를 미리 계획하세요:
- 초록 클러스터를 만들 때 즉시 지원 티켓을 열어 프라이빗 링크나 프라이빗 서비스 커넥트를 설정해달라고 요청하세요.
- 초록 클러스터의 프라이빗 링크나 프라이빗 서비스 커넥트가 확인될 때까지 컷오버를 시작하지 마세요.
- 애플리케이션 설정을 변경하기 전에 프라이빗 링크나 프라이빗 서비스 커넥트 구성을 초록 클러스터의 연결을 가리키도록 업데이트하세요.
5단계(선택): 이전 클러스터 폐기하기
초록 클러스터가 정상적으로 트래픽을 처리하고 있다는 것을 확인한 뒤에는 블루 클러스터를 내릴 수 있어요.
삭제하기 전에 롤백 지점으로 쓸 스냅샷을 유지할지 고민해보세요. 컷오버 후 며칠 안에 예상치 못한 문제가 생기면, 블루 클러스터 상태의 스냅샷이 있으면 빠르게 복원할 수 있어요.
비용 고려 사항
전환 기간 동안 두 클러스터를 동시에 실행하게 돼요. 클러스터 크기에 따라 이 비용은 상당할 수 있어요. 기간을 짧게 유지하도록 계획하세요. 컷오버를 시작하기 전에 초록 클러스터 테스트를 마치고, 만족하면 블루 클러스터를 신속히 폐기하는 거예요.
롤백
컷오버 후 롤백이 필요하다면:
- 블루 클러스터가 아직 실행 중이라면 애플리케이션 설정을 블루 클러스터의 엔드포인트와 API 키로 되돌려요.
- 이미 블루 클러스터를 폐기했다면 스냅샷을 새 클러스터에 복원하고 애플리케이션이 그것을 가리키게 해요.
컷오버는 데이터 변경이 아니라 구성 변경이기 때문에, 블루 클러스터나 그 스냅샷이 있다면 롤백은 간단한 편이에요.
더 알아보기 (Learn more)
출처: Qdrant 공식문서