이론 정리
CAP
철매존
2024. 12. 5. 21:52
728x90
반응형
CAP
네트워크를 완벽히 신뢰할 수는 없다.
- 이런 상황에서 CAP 중 두가지만 보장이 가능하다.
Consistency
- 일관성
- 즉 read 모든 작업은 가장 최근의 정보나 혹은 오류 메세지를 받는다.
- Strong consistency
- eventual consistency
Availability
- 가용성
- 모든 요청이 응답은 받는다.
- 근데 이게 최신일 필요는 없음. (이거는 그래도 된다는것)
Partition Tolerance
- 오류가 나는 상황에서도 시스템의 작동이 멈추지 않는다.
근데 위에서 본 것처럼 네트워크를 신뢰할 수 없기 때문에 P 는 필수다!!
- 그러면 어떨 때 C / A 를 고를까
- CP
- 데이터가 중요한 때에!
- 근데 이거 타임아웃 날 수도 있음
- AP
- 그냥 줄 수 있는 데이터를 준다.
- 결국 이거는 어쨌든 문제가 있어도 시스템은 잘 동작하게 하고 싶을 때에 사용
- 쓰기 작업은 적용되기까지 시간이 걸릴수도 있음
- CP
- 그러면 어떨 때 C / A 를 고를까
질문
- 그래서 CP / AP는 어떤 상황에 쓰는것이 좋을까?
- CP 는 결국 가용성의 포기를 의미한다.
- 즉 은행처럼 응답이 차라리 안가더라도 정확한 값이 가는것이 필요할 때에 선호된다.
- AP 는 일관성의 포기이다.
- 서비스가 계속 보이는것이 좋을 때!!
- SNS같은거~ 그렇게까지는 데이터 중요하지 않을떄
- CP 는 결국 가용성의 포기를 의미한다.
- 신뢰성은 무조건 없다고 생각해야하나?
- 맞음!! 절대 안정적이지 않다.
- 그러면 CAP를 왜할까?
- 결국은 트레이드 오프는 필수적이기 때문, 즉 A 와 C 는 서로 같이 사용할 수 없으니
- 그 이유는 A에 있다고 생각한다(개인적인 생각임) 얘는 결국 서비스가 돌아가야 하니 뭐라도 주겠다! 라는 느낌이니 그러면 당연히 C 입장에서는 NG
- 결국은 트레이드 오프는 필수적이기 때문, 즉 A 와 C 는 서로 같이 사용할 수 없으니
- 네트워크 분할이 애초에 뭘까?
- 분산 시스템 상에서 여러 노드/서버 간의 네트워크 연결이 실패하는 상태
- 물리장애
- 네트워크 과부화 패킷손실/지연
- 소프트웨어 오류
- 물리적 거리
- 보안정책
- 분산 시스템 상에서 여러 노드/서버 간의 네트워크 연결이 실패하는 상태
- 그래서 CP / AP는 어떤 상황에 쓰는것이 좋을까?
반응형