Weaviate 복제
Weaviate 복제 (Replication)
Weaviate 복제는 컬렉션의 샤드를 여러 노드에 복사해서 가용성과 읽기 성능을 높이는 기능이에요. 데이터 손실을 막고 노드 장애를 견디도록 설계돼요.
출처: https://weaviate.io/developers/weaviate/concepts/replication
복제 개념
Weaviate는 데이터를 샤드(shard)로 나누고, 각 샤드를 가용성 팩터(factor)만큼 복제해요. 가용성 팩터가 2 이상이면 각 샤드가 여러 노드에 사본을 두게 돼요. 기본값은 1(복제 없음)이고, 컬렉션 생성 시점에 정해요.
예를 들어 컬렉션을 3노드 클러스터에 가용성 팩터 2로 만들면, 각 샤드가 2개의 사본을 다른 노드에 두고, 노드 하나가 죽어도 데이터를 계속 서빙할 수 있어요.
쓰기와 읽기 동작
복제가 있으면 쓰기 요청은 리더 샤드에 적용되고, 일관성 레벨(consistency level)에 따라 읽기 요청이 몇 개 사본에 반영된 뒤 응답할지를 정해요. 쓰기 일관성(예: QUORUM)과 읽기 일관성을 조절해 성능과 일관성 사이에서 선택할 수 있어요.
설정 방법
복제 설정은 컬렉션을 만들 때 지정해요. Docker나 헬름으로 노드를 늘린 뒤, 컬렉션 생성 시 가용성 팩터를 2 이상으로 설정하면 돼요. 기존 컬렉션의 가용성 팩터는 변경 제약이 있으므로, 처음 설계할 때 신중히 정하는 게 좋아요.
장애 시나리오
노드가 사라지면 복제된 사본을 기반으로 클러스터가 복구되도록 설계돼요. 다만 복제 팩터보다 많은 노드가 동시에 죽으면 데이터를 잃을 수 있으니, 워크로드에 맞는 팩터를 골라야 해요.