새로운 내용을 공부할 때
새로운 내용의 공부를 시작할 때 용어의 정의를 이해하지 못하거나 정확하게 알지 못한다면 그 용어가 포함된 문장을 이해하지 못합니다.
작은 단어 하나가 내용을 이해하지 못하게 하기 때문에 용어를 정확하게 이해하는 것이 중요합니다.
TIL) CAP 이론을 적용시켜 설계를 한다는 의미
📌 2025-02-25 TILPermalink
1. 오늘의 학습 주제Permalink
- CAP 이론이 왜 등장하게 되었을까?
- CAP 이론을 적용해 설계한다는 것은 무슨 의미일까?
2. 학습 내용Permalink
들어가기 앞서Permalink
자바 GC는 메모리를 빠르게 정리하기 위해 “가설”을 기반으로 Young 영역을 먼저 제거합니다.
Young 영역에서 객체가 빨리 소멸할 가능성이 높다는 가설을 세우고, 이를 바탕으로 설계된 거죠.
이처럼 이론이나 가설은 개발에서 설계 방향을 결정하도록 도와준다고 생각합니다.
CAP 이론도 마찬가지로 분산 시스템 설계의 방향을 결정하게 해주는 이론입니다.
CAP 이론이 왜 등장했을까?Permalink
컴퓨터의 보편화와 인터넷 사용자의 폭발적인 증가로 인해,
대규모 트래픽과 방대한 데이터를 저장하고 처리해야 하는 문제가 발생했습니다.
기존의 데이터베이스 마스터-슬레이브 구조는 쓰기 지점이 단 하나였기에
폭발적인 쓰기 요청을 하나의 서버가 감당할 수 없었습니다.
- 읽기 요청은 슬레이브에 분산할 수 있었지만,
- 쓰기 요청은 마스터에서만 처리해야 했기 때문에 병목 현상이 발생했습니다.
- 특히, 트래픽이 폭증하거나 쓰기 작업이 동시에 발생하면 성능 저하와 서버 다운 문제가 발생했습니다.
분산 시스템의 도입Permalink
수직 확장(스케일 업)
- CPU와 메모리를 업그레이드하는 방식은 비용이 많이 들고 물리적인 한계가 있었습니다.
수평 확장(스케일 아웃)
- 여러 개의 서버에 데이터를 분산 저장하면 쓰기 작업도 여러 서버에 분산할 수 있기 때문에 병목 현상을 해결할 수 있습니다.
- 서버가 다운되더라도 다른 서버가 대신 요청을 처리하기 때문에 고가용성이 보장됩니다.
이렇게 해서 데이터 쓰기 문제를 해결하기 위해 분산 시스템이 도입이 됩니다.
분산 시스템의 문제: 네트워크 오류Permalink
하지만 분산 시스템에서는 여러 노드에 데이터를 분산 저장하면서 네트워크 오류가 발생할 수 있습니다.
- 예를 들어, 네트워크 지연, 패킷 손실, 노드 장애 등으로 인해 노드 간 데이터 불일치가 발생할 수 있습니다.
네트워크는 언제든지 오류가 발생할 수 있다는 가정 하에 다음 두 가지 선택 중 하나를 해야 합니다:
- 데이터 일관성
- 모든 노드의 데이터가 항상 동일해야 한다.
- 데이터가 일치할 때까지 응답을 지연시키더라도 일관성 유지가 중요합니다.
- 가용성
- 모든 요청에 항상 응답해야 한다.
- 네트워크 오류가 발생해도 가까운 노드의 데이터를 반환해서 사용자의 응답 대기 시간을 최소화해야 합니다.
CAP 이론이 말하는 설계의 방향Permalink
분산 시스템에서 네트워크 분할은 피할 수 없는 문제입니다.
따라서, 데이터 일관성과 데이터 가용성 중 하나를 선택해야 합니다.
- Consistency (일관성)을 선택하면:
- 데이터가 일치할 때까지 기다리므로 가용성(Availability)이 떨어집니다.
- 예: 결제,은행 시스템에서 모든 서버의 데이터가 동일해야 신뢰할 수 있기 때문에 일관성이 더 중요함.
- Availability (가용성)을 선택하면:
- 데이터를 빨리 반환하지만 노드 간 데이터 불일치가 발생할 수 있습니다.
- 예: 소셜 미디어의 좋아요 수는 조금 늦게 동기화되어도 사용자 경험에 큰 영향이 없기 때문에 가용성이 더 중요함.
CAP 이론을 적용한 설계의 의미Permalink
CAP 이론은 분산 시스템에서 Consistency, Availability, Partition Tolerance 중 세 가지를 모두 동시에 만족할 수 없고, 두 가지만 선택할 수 있다고 말합니다.
-
Consistency(C) + Partition Tolerance(P)를 선택하면,
-
네트워크 오류가 발생할 때 응답이 지연되거나 실패할 수 있습니다.
-
이때 가용성 문제는 로드밸런싱, 캐싱, 서킷 브레이커 등 기술적 최적화로 해결해야 합니다.
로드밸런싱, 캐싱, 서킷브레이커는 아직 잘 모릅니다. 이런 방법이 있다는 것만 확인하고 넘어갑니다.
-
-
Availability(A) + Partition Tolerance(P)를 선택하면,
- 데이터를 빨리 반환하지만 노드 간 데이터 불일치가 발생할 수 있습니다.
- 이때 일관성 문제는 애플리케이션 레벨에서 데이터 정합성을 맞추는 로직으로 해결해야 합니다.
정리하면:
CAP 이론은 네트워크 오류 상황에서 C와 A 중 하나를 포기해야 하는 현실을 설명합니다
개발자가 비즈니스 요구에 따라 C와 A 중 어떤 것을 선택하고 설계할지 결정하도록 방향을 제시해줍니다.
최종 정리Permalink
CAP 이론은 분산 시스템에서 네트워크 분할이 발생할 때 일관성(C)과 가용성(A) 중 하나를 선택해야 한다고 말합니다.
비즈니스 요구에 따라 일관성을 선택하면 가용성 문제를 기술적으로 해결해야 하고
가용성을 선택하면 일관성 문제를 애플리케이션 레벨에서 해결해야 합니다.
CAP 이론은 설계 방향과 기술적 트레이드오프를 쉽게 이해하고 설계하도록 도와주는 이론입니다.
댓글남기기