728x90
확장성이란?
- 소프트웨어나 서비스의 요구사항 수준이 증가할 때 대응할 수 있는 능력
- 주로 규모에 대한 확장성을 뜻함(데이터 크기, 요청 트래픽 등)
- 수직 확장(Scale-up)과 수평 확장(Scale-out)이 사용됨
수평 확장(Scale-Out)
- 처리 요소(ex: 서버)를 여러 개 두어서 작업을 분산
- 무중단 확장이 가능
- 이론적으로는 무한대로 확장이 가능
분산 시스템에 따라오는 문제
- 부분 장애
- 네트워크 실패
- 데이터 동기화
- 로드밸런싱(또는 Discovery)
- 개발 및 관리의 복잡성
분산 시스템의 적용
- 분산 시스템으로 인한 trade-off 를 판단해서 적합하다면 사용
- 서비스 복잡도와 규모의 증가로 분산은 피할 수 없는 선택
- 분산 시스템의 구현체들은 세부적인 부분에서 튜닝이 가능하게 옵션이 제공됨
- 즉, 분산 시스템의 장단점을 세부적으로 조절 가능
Redis Cluster란?
- 여러 노드에 자동적인 데이터 분산
- 일부 노드의 실패나 통신 단절에도 계속 작동하는 가용성
- 고성능을 보장하면서 선형 확장성을 제공
Redis Cluster 특징
- Full-mesh 구조로 통신
- 모든 노드가 모든 노드와 연결되어 있음
- Cluster Bus 채널 사용
- Redis 기본 포트(6379) 외에 클러스터 버스용 포트(16379)를 사용
- Gossip Protocol 사용
- 많은 노드가 통신할 때 인접 노드끼리 정보를 주고받아 상태를 전파
- 소문이 퍼지는 것처럼 네트워크 상태 정보를 퍼뜨림
- Hash Slot을 이용한 키 분산
- 전체 hash slot(0 ~ 16383)을 여러 노드에 분배
- DB0만 사용 가능
- Multi-key 명령어 제한 있음
- 다른 슬롯에 분산된 키를 대상으로 하는 Multi-key 연산은 불가능
- 클라이언트가 모든 노드에 직접 접속 가능
Sentinel과의 차이점
항목 | Redis Cluster | Redis Sentinel |
---|---|---|
데이터 분산 | O (샤딩 지원) | X |
장애 복구 | O (자동 장애 조치) | O (자동 장애 조치) |
모니터링 노드 필요 | X | O (Sentinel 프로세스 필요) |
Multi-key 연산 | 제한됨 | 지원 |
구성 복잡도 | 상대적으로 복잡 | 상대적으로 단순 |
적합 환경 | 대규모 시스템, 고성능 필요 | 단순한 시스템, 고가용성 필요 |
728x90
'DB' 카테고리의 다른 글
[Redis] 확장성과 가용성을 위한 클러스터_뭔 말 인지 모르겠다. (0) | 2024.03.18 |
---|---|
[Redis] Redis Cluster 데이터 분산과 Key 관리_뭔 말 인지 모르겠다. (0) | 2024.03.12 |
[Redis] Redis Sentinel (0) | 2024.03.10 |
[Redis] 레디스의 복제 (0) | 2024.03.10 |
[Redis] 백업과 장애 복구 (AOF 방식) (0) | 2024.03.10 |