elasticache 인덱스와 샤드
인덱스/샤드 개념과 OpenSearch에서의 제약을 정리.
2024년 5월 6일
아래 글을 주로 인용했다.
용어
- 도큐먼트: 단일 데이터
- 인덱스: 도큐먼트를 모아놓는 곳 (도서관 섹션으로 생각하면 좋다)
- 색인: 데이터를 ES에 저장하는 행위
"색인한다"라는 표현이 낯설었다. 인덱싱은 보통 별도의 인덱스 데이터를 만드는 행위라고 생각했기 때문이다.
프라이머리 샤드, 복제본
인덱스는 샤드 단위로 분산 저장된다. 별도 설정이 없으면 기본적으로 1개의 샤드로 구성된다. 노드가 추가되면 샤드가 분산된다. 디폴트로 1개의 복제본이 생성된다.
샤딩/레플리카는 다른 분산 저장 시스템과 컨셉이 비슷하다. 샤드는 I/O 향상을 위한 분산 저장, 레플리카는 장애 대비와 읽기 분산이 목적이다.
프라이머리 샤드 수는 인덱스 생성 시 지정하며, 재색인 없이는 변경 불가다. 복제본 수는 변경 가능하다. 카프카도 파티션은 늘릴 수만 있고 복제는 언제든 변경 가능하다는 점이 비슷하다.
AWS OpenSearch에서는?
OpenSearch는 노드 수 조정만 가능해 보인다. 샤드나 레플리카 수를 별도로 조정하는 옵션은 잘 보이지 않았다. 프라이머리 샤드는 재색인 없이는 조정 불가하다고 한다. 재색인 과정에서 서비스 영향도는 분명 있을 듯하다.
카프카에서 파티션을 늘릴 수는 있지만 줄일 수 없는 특징과도 유사하다. Managed라서 베스트 프랙티스로 돌아가는 듯하다.
노드 수나 스토리지를 변경하는 건 무중단으로 가능하다고 한다.