철매존 2024. 12. 5. 21:52
728x90
반응형

CAP

  • 네트워크를 완벽히 신뢰할 수는 없다.

    • 이런 상황에서 CAP 중 두가지만 보장이 가능하다.
  • Consistency

    • 일관성
    • 즉 read 모든 작업은 가장 최근의 정보나 혹은 오류 메세지를 받는다.
    • Strong consistency
    • eventual consistency
  • Availability

    • 가용성
    • 모든 요청이 응답은 받는다.
    • 근데 이게 최신일 필요는 없음. (이거는 그래도 된다는것)
  • Partition Tolerance

    • 오류가 나는 상황에서도 시스템의 작동이 멈추지 않는다.
  • 근데 위에서 본 것처럼 네트워크를 신뢰할 수 없기 때문에 P 는 필수다!!

    • 그러면 어떨 때 C / A 를 고를까
      • CP
        • 데이터가 중요한 때에!
        • 근데 이거 타임아웃 날 수도 있음
      • AP
        • 그냥 줄 수 있는 데이터를 준다.
        • 결국 이거는 어쨌든 문제가 있어도 시스템은 잘 동작하게 하고 싶을 때에 사용
        • 쓰기 작업은 적용되기까지 시간이 걸릴수도 있음
  • 질문

    • 그래서 CP / AP는 어떤 상황에 쓰는것이 좋을까?
      • CP 는 결국 가용성의 포기를 의미한다.
        • 즉 은행처럼 응답이 차라리 안가더라도 정확한 값이 가는것이 필요할 때에 선호된다.
      • AP 는 일관성의 포기이다.
        • 서비스가 계속 보이는것이 좋을 때!!
        • SNS같은거~ 그렇게까지는 데이터 중요하지 않을떄
    • 신뢰성은 무조건 없다고 생각해야하나?
      • 맞음!! 절대 안정적이지 않다.
    • 그러면 CAP를 왜할까?
      • 결국은 트레이드 오프는 필수적이기 때문, 즉 A 와 C 는 서로 같이 사용할 수 없으니
        • 그 이유는 A에 있다고 생각한다(개인적인 생각임) 얘는 결국 서비스가 돌아가야 하니 뭐라도 주겠다! 라는 느낌이니 그러면 당연히 C 입장에서는 NG
    • 네트워크 분할이 애초에 뭘까?
      • 분산 시스템 상에서 여러 노드/서버 간의 네트워크 연결이 실패하는 상태
        • 물리장애
        • 네트워크 과부화 패킷손실/지연
        • 소프트웨어 오류
        • 물리적 거리
        • 보안정책
반응형