키-값 저장소는 비 관계형 데이터베이스이다.
키는 유일해야 하며 해당 키에 매달린 값은 키를 통해서만 접근할 수 있다.
값은 문자열, 리스트, 객체일 수 있다.
대표적으로 nynamo, memcached, redis가 있다.
분산 서버 키-값 저장소
키-값 쌍을 여러 서버에 분산시켜 저장한다.
CAP
분산 시스템을 설계할 때 CAP(Consistency, Availability, Partition Tolerance theorem)를 이해하고 있어야 한다.
CAP 정리는 이들 가운데 어떤 두 가지를 충족하려면 나머지 하나는 반드시 희생되어야 한다는 이론이다.
- 데이터 일관성(Consistency): 분산 시스템에 접속하는 모든 클라이언트는 어떤 노드에 접속했느냐에 관계없이 언제나 같은 데이터를 보게 되어야 한다.
- 가용성(Availability): 분산 시스템에 접속하는 클라이언트는 일부 노드에 장애가 발생하더라도 항상 응답을 받을 수 있어야 한다.
- 파티션 감내(partition tolerance): 파티션은 두 노드 사이에 통신 장애가 발생하였음을 의미한다. 파티션 감내는 네트워크에 파티션이 생기더라도 시스템은 계속 동작하여야 한다는 것을 뜻한다.
시스템 컴포넌트
데이터 파티션
- 대규모 애플리케이션의 경우 전체 데이터를 한 대 서버에 저장하는 것은 불가능하다.
- 가장 단순한 해결책은 데이터를 작은 파티션들로 분할한 다음 여러 대 서버에 저장한다.
- 안정 해시가 적절한 기술이다.
데이터 다중화
- 높은 가용성과 안정성을 확보하기 위해 데이터를 N개 서버에 비동기적으로 다중화할 필요가 있다.
- 가상 노드를 사용한다면 실제 대응할 물리 서버의 개수가 N보다 작을 수 있으므로 중복되지 않게 주의해야 한다.
데이터 일관성
- 여러 노드에 다중화된 데이터는 적절히 동기화가 되어야 한다.
- 정족수 합의(Quorum Consensus) 프로토콜을 사용하면 읽기/쓰기 연산 모두에 일관성을 보장할 수 있다.
- R=1, W=N : 빠른 읽기 연산에 최적화된 시스템
- R=N, W=1 : 빠른 쓰기 연산에 최적화된 시스템
- R+W > N : 강한 일관성 보장
- R+W <= N : 강한 일관성 보장 안함
일관성 불일치 해소
- 버저닝과 벡터 시계는 데이터 일관성을 해소한다.
장애 처리
- 장애 감지 : 가십(gossip) 프로토콜 같은 분산형 장애 감지 솔루션
- 일시적 장애 처리: 느슨한 정족수 프로토콜과 단서 후 임시 위탁
- 영구 장애 처리: 머클 트리
- 데이터 센터 장애 처리: 여러 데이터 센터에 걸친 데이터 다중화
'시스템 설계 > 가상 면접 사례로 배우는 대규모 시스템 설계 기초' 카테고리의 다른 글
7장. 분산 시스템을 위한 유일 ID 생성기 설계 (0) | 2025.01.25 |
---|---|
5장. 안정 해시 설계 (0) | 2025.01.20 |
4장. 처리율 제한 장치의 설계 (1) | 2025.01.17 |
3장. 시스템 설계 면접 공략법 (1) | 2025.01.12 |
2장. 개략적인 규모 추정 (0) | 2025.01.12 |
댓글