본문 바로가기
시스템 설계/가상 면접 사례로 배우는 대규모 시스템 설계 기초

6장. 키-값 저장소 설계

by setung 2025. 1. 24.

키-값 저장소는 비 관계형 데이터베이스이다.

키는 유일해야 하며 해당 키에 매달린 값은 키를 통해서만 접근할 수 있다.

값은 문자열, 리스트, 객체일 수 있다.

대표적으로 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) 프로토콜 같은 분산형 장애 감지 솔루션

 - 일시적 장애 처리: 느슨한 정족수 프로토콜과 단서 후 임시 위탁

 - 영구 장애 처리: 머클 트리

 - 데이터 센터 장애 처리: 여러 데이터 센터에 걸친 데이터 다중화

댓글