일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 셀러리
- 카카오
- 코드 계약
- spring event
- gRPC
- docker
- 객체지향패러다임
- 알람 시스템
- AWS
- 레디스 동시성
- 깊게 생각해보기
- 백준
- BFS
- 좋은 코드 나쁜 코드
- 검색어 추천
- 수신자 대상 다르게
- branch 전략
- 트랜잭샨
- piplining
- 디버깅
- 누적합
- 쿠키
- prg 패턴
- 숫자 블록
- 이분탐색
- jwt 표준
- 구현
- 결제서비스
- 프로그래머스
- 완전탐색
- Today
- Total
코딩관계론
CAP 이론 - Consistency (일관성), Availability (가용성), Partition Tolerance (파티션 감내) 본문
CAP 이론 - Consistency (일관성), Availability (가용성), Partition Tolerance (파티션 감내)
개발자_티모 2024. 8. 13. 15:23CAP 이론은 분산 시스템 환경에서는 세 가지의 요구사항을 동시에 만족하는 분산 시스템을 설계하는 것은 불가능하다라는 정리입니다.
CAP의 의미에 대해서 자세히 설명하자면 아래와 같습니다.
- 일관성이란 분산시스템에서 접속하는 모든 클라이언트는 어떤 노드에 접속했는냐와는 상관 없이 같은 데이터를 보아야 한다.
- 가용성은 시스템이 항상 응답할 수 있는 상태를 유지하는 것을 의미합니다. 일부 노드가 장애를 겪거나 다운되더라도, 다른 노드가 정상적으로 작동하여 사용자 요청에 응답해야 합니다.
- 파티션감내란 네트워크 분할이 발생했을 때, 즉 두 노드 간의 통신이 단절되었을 때에도 시스템이 여전히 작동할 수 있는 능력을 의미합니다. 이 경우에도 시스템은 일정 수준의 기능을 유지하며 계속해서 서비스를 제공할 수 있어야 합니다.
따라서 그림으로 정리하게 되면 다음과 같이 CP, AP, CA시스템이 도출되게 됩니다.
CP 시스템의 경우에는 가용성을 희생하면서 일관성과 파티션 감내를 허용합니다. 이런 시스템은 데이터의 정확성이 요구되는 상황에서 사용되는데 예를 들자면 은행, 증권회사와 같은 경우에는 CP 시스템으로 설계하게 됩니다.
AP 시스템의 경우에는 데이터의 일관성을 포기하고 가용성을 높이는 시스템입니다. 이런 시스템은 일반적인 고객 상대로 영업하는 시스템에서 많이 사용하게 됩니다. 예를들면 쿠팡, 배민과 같은 사이트입니다.
여기서 중요한 점은 바로 아래의 그림과 같은 상황입니다. 네트워크가 고장난 노드에 최신 데이터 write가 됐고, 그 후 네트워크 장애가 생격 DB1, DB2에 재고 수량이 다른 데이터 일관성 문제가 생겨나게 됩니다.
이를 해결하기 위한 방안으로timestamp 필드에 commit 시간을 업데이트하고, 최초의 주문만 인정해주는 방식등의 방법이 존제합니다. 마지막 주문을 한 사용자에게 빠르게 취소 응답을 주어야 합니다.
CA시스템의 경우에는 잘 사용하지 않습니다. 그 이유는 네트워크의 장애가 발생하여 장애가 발생한 서비스에서는 write연산이 중지되고, read연산만 할 수 있게 되는데, 이 때 가용성도 떨어지게 됩니다.
또한 분산 시스템에서는 네트워크 장애는 피할 수 없는 일로 여겨짐으로 반듯이 감내가 가능하도록 설계해야 합니다. 그렇기에 CP, AP시스템이 주로 사용되고, CA시스템은 거의 사용되지 않습니다.
따라서 분산 시스템을 구성할 때는 어떤 시스템을 구성할 것인지에 대해서 먼저 설정해야합니다.
[참고자료]
대규모 시스템 설계 기초
'개발' 카테고리의 다른 글
Redis 객체가 소멸될 때 DB에 영속화하자 - 꿀팁있음 (0) | 2024.08.19 |
---|---|
검색어 추천 서비스 V4(Sharding) (0) | 2024.08.13 |
검색어 추천 서비스 V3(Redis + NoSQL) (0) | 2024.08.12 |
검색어 추천 기능 V2(Trie + RAM) (0) | 2024.08.11 |
검색어 추천 서비스 개발기 (1) | 2024.08.11 |