티스토리 뷰
개요
데이터베이스 이론에서 CAP와 BASE는 분산 시스템의 특성과 관련한 중요한 개념이다. CAP와 BASE에 대해 정리해본다.
기본 개념
CAP
2000년 Eric Brewer에 의해 제안되었으며, 분산 데이터베이스 시스템의 다음 세 가지 주요 특성 중 두 가지만 동시에 만족할 수 있다고 주장한다.
- 일관성 (Consistency): 모든 클라이언트가 동일한 데이터를 볼 수 있도록 보장한다. 즉, 데이터베이스에 쓰기 작업이 완료되면, 모든 읽기 작업이 최신 데이터를 반환해야 한다.
- 가용성 (Availability): 모든 읽기 및 쓰기 요청이 항상 응답을 받을 수 있도록 보장한다. 즉, 시스템이 항상 동작하며, 일부 노드가 실패하더라도 서비스가 지속적으로 제공되어야 한다.
- 네트워크 분할 허용 (Partition Tolerance): 네트워크 장애로 일부 노드간 통신이 끊어져도 시스템이 동작할 수 있도록 보장한다. 즉, 네트워크의 일부가 통신 불가능한 상태가 되더라도, 시스템은 계속 작동해야 한다.
BASE
분산 데이터베이스의 특성을 설명하는 또 다른 모델로서, CAP 이론에서 일관성을 희생하는 대신 가용성과 네트워크 분할 허용을 선택하는 시스템을 설명해준다. BASE는 다음과 같은 특징을 가진다.
- 기본적으로 사용 가능함 (Basically Available): 시스템은 항상 사용 가능하며, 부분 실패가 발생해도 기본적인 기능은 제공된다.
- 소프트 상태 (Soft state): 시스템이 항상 일관성을 유지하지는 않는다.
- 최종적 일관성 (Eventual consistency): 모든 업데이트가 시스템에 전파되어 결국에는 모든 노드가 일관된 상태를 가지게 된다.
CAP와 BASE
- CAP 이론은 분산 시스템의 설계에서 세 가지 주요 특성 중 두 가지를 선택해야 하는 딜레마를 말한다.
- BASE는 CAP 이론의 틀 안에서 가용성과 네트워크 분할 허용을 선택하고, 시스템의 일관성은 잠시 맞지 않더라도 최종적 일관성은 보장해주는 전략을 설명한다.
CAP의 실제 사례
1. CP (일관성 + 네트워크 분할 허용)
CP 시스템은 일관성을 유지하면서 네트워크 분할을 허용한다. 네트워크 분할이 발생하면 시스템의 가용성을 희생하더라도 일관성을 유지한다.
사례. HBase
- Hadoop 분산 파일 시스템(HDFS) 위에 구축된 분산 데이터 저장소이다.
- 네트워크 분할이 발생하면 일관성을 유지하기 위해 일부 요청을 차단하거나 지연시키면서까지 시스템의 일관성을 유지한다.
2. CA (일관성 + 가용성)
CA 시스템은 일관성과 가용성을 유지하지만 네트워크 분할을 허용하지 않는다. 단일 노드 시스템이나 네트워크 분할이 거의 없는 환경에서 적합하다.
사례. 관계형 데이터베이스 관리 시스템(RDBMS) (단일 노드 설정)
- 전통적인 RDBMS 시스템(예: MySQL, PostgreSQL)은 단일 노드 설정에서 일관성과 가용성을 모두 제공한다.
- 네트워크 분할이 없을 때에 일관성과 가용성을 유지할 수 있다.
3. AP (가용성 + 네트워크 분할 허용)
AP 시스템은 가용성을 유지하면서 네트워크 분할을 허용합니다. 네트워크 분할이 발생해도 시스템이 계속 동작하게 하는 대신, 일관성을 일시적으로 희생할 수 있다.
사례. Cassandra
- 분산 데이터베이스 시스템으로, 네트워크 분할이 발생해도 가용성을 유지한다.
- 노드가 분할된 상태에서도 요청을 처리하며, 최종적으로 일관성을 달성하도록 설계되었다.
사례. DynamoDB
- 분산 키-값 저장소로, 가용성과 네트워크 분할 허용을 중시한다.
- 네트워크 분할 중에도 데이터를 계속 접근할 수 있으며, 일관성은 최종적 일관성을 보장한다.
BASE의 실제 사례
BASE의 가장 큰 목표는 시스템이 항상 사용 가능하도록 하는 것이다. 다음 데이터베이스들은 BASE의 요건을 만족하여 가용성을 보장해준다.
1. Cassandra
Apache Cassandra는 BASE 원칙을 따르는 분산 데이터베이스이다.
- 기본적으로 사용 가능함 (Basically Available): Cassandra는 여러 데이터 센터에 걸쳐 데이터를 분산 저장하여 높은 가용성을 보장하며, 노드가 일부 실패하더라도 시스템은 여전히 동작한다.
- 소프트 상태 (Soft state): 데이터는 일관성을 유지하지 않는 순간이 발생할 수 있다.
- 최종적 일관성 (Eventual consistency): 일정 시간이 지나면 모든 노드가 일관된 상태를 가지게 된다.
2. DynamoDB
Amazon DynamoDB는 분산 키-값 데이터 저장소로, BASE 원칙을 따른다.
- 기본적으로 사용 가능함: DynamoDB는 고가용성을 제공하며, 데이터는 여러 지역에 복제된다.
- 소프트 상태: 데이터 업데이트가 모든 복제본에 즉시 반영되지는 않는다.
- 최종적 일관성: 클라이언트는 일시적으로 일관성이 없는 데이터를 볼 수 있지만, 최종적으로는 모든 데이터가 일관된 상태를 유지하게 된다.
3. Amazon S3
Amazon S3는 객체 스토리지 서비스로, BASE 원칙을 일부 따른다.
- 기본적으로 사용 가능함: S3는 높은 가용성을 제공하며, 데이터를 여러 지역에 분산 저장하여 노드 실패 시에도 접근이 가능하다.
- 소프트 상태: 새로운 데이터 쓰기나 기존 데이터 업데이트가 즉시 모든 복제본에 반영되지 않을 수 있다.
- 최종적 일관성: 시간이 지나면서 모든 복제본이 일관된 상태를 유지하게 된다. 예를 들어, 새로운 객체를 업로드하면 몇 초 내에 모든 요청에서 해당 객체를 볼 수 있게 된다.
4. Riak
Riak은 분산 키-값 저장소로, BASE 원칙을 따른다.
- 기본적으로 사용 가능함: Riak은 여러 노드에 데이터를 분산 저장하여 높은 가용성을 보장한다.
- 소프트 상태: 데이터 업데이트가 모든 노드에 즉시 반영되지 않으며, 그 결과로 일시적으로 일관성이 없을 수 있다.
- 최종적 일관성: 시간이 지나면서 모든 노드가 일관된 상태를 가지게 된다.
'development' 카테고리의 다른 글
터미널에서 Jira 빠르게 열기 (0) | 2024.08.22 |
---|---|
Interface, DIP, IoC 에 대한 비유 (0) | 2024.07.14 |
피드백하는 12가지 방법 (0) | 2024.05.03 |
생각. 리드 호프만이 그의 AI 쌍동이를 만나다 (0) | 2024.04.29 |
자주 쓰는 MacBook 용 애플리케이션들 (0) | 2024.03.31 |
- Total
- Today
- Yesterday
- bun
- strange
- 2023
- ChatGPT
- 영화
- 잡학툰
- github
- 독서후기
- Shortcut
- 오블완
- intellij
- 체호프
- OpenAI
- 클린 애자일
- folklore
- notion
- 노션
- clean agile
- go
- 티스토리챌린지
- 독서
- 인텔리제이
- 제이펍
- websocket
- Gin
- golang
- solid
- API
- Bug
- agile
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |