詳細検索

CAP 정리 더 나은가? PACELC 정리를 소개한다

아바타
글쓴이 Chen Ziyu
4분 읽기

CAP 정리 더 나은가? PACELC 정리를 소개한다
English에서 번역 • 원문 보기

이전 블로그에서 유명한 CAP 정리를 소개했는데(아직 읽지 않으셨다면 꼭 읽어보시길 권합니다). 이 정리는 다음 세 가지 특성 중 하나를 포기해야 하는 삼락선을 포함합니다: 일관성, 가용성, 그리고 분할 허용 순위입니다. 이 세 가지 모두 현대 분산 시스템에서 바람직한 특성이기 때문에, 어느 하나를 포기할지 결정하는 것은 복잡한 분산 시스템 설계자들에게 가장 중요하고 섬세한 결정 중 하나가 되었습니다. CAP 정리는 컴퓨터 과학 분야에서 널리 알려져 있지만, 그 확장인 PACELC 정리는 덜 주목받고 있습니다. 오늘은 오랫동안 기다려온 PACELC 정리에 조명을 비추겠습니다.

PACELC-theorem-diagram

먼저, PACELC 정리가 말하는 것부터 시작해 봅시다. PACELC 정리를 "PAC"과 "ELC"로 나눌 수 있습니다. "PAC"은 네트워크 "파티션"이 존재할 경우, 분산 시스템이 "가용성"과 "일관성" 중 하나를 선택해야 한다는 뜻입니다. 이 부분은 CAP 정리와 동등하지만, 항상 우선순위를 두고 "파티션 허용"을 고려한다는 가정을 합니다. "ELC"는 PACELC 정리가 제시한 새로운 아이디어입니다. "E", "L", "C"는 각각 "else", "지연", "일관성"을 의미합니다. "ELC"는 네트워크 파티션("else")이 없으면 분산 시스템이 "지연"과 "일관성" 사이에서 절충해야 한다고 말합니다.

이전 블로그에서 이미 CAP 정리를 다뤘으니, 일단 "ELC" 부분에 집중해 보겠습니다. 지연과 일관성의 정의는 무엇인가요?

지연 시간 (또는 낮은 지연)

옥스퍼드 언어학회는 지연을 "데이터 전송 명령 이후 전송이 시작되기 전까지의 지연"으로 정의합니다. "L"이 지연을 의미한다고 말하는 것은 부정확한데, 우리는 보통 컴퓨팅 시스템에서 지연을 최소화해 작업 속도를 높이는 것을 목표로 하기 때문입니다. 분산 시스템에서 원하는 "L"을 원하는 특성으로 만들기 위해, 저는 이를 "낮은 지연"이라고 생각하는 것을 선호합니다.

일관성

"ELC"의 일관성은 CAP 정리와 동일합니다. 분산 시스템이 일관적이라면, 모든 읽기 요청은 가장 최근의 쓰기 또는 오류를 받습니다. 즉, 일관성 있게 어떤 노드 사용자가 읽기 요청을 하든 항상 분산 시스템에 쓰인 가장 최신 데이터를 받거나, 최신 데이터가 현재 사용 가능하지 않을 경우 오류를 받습니다.

이 시점에서 당연히 물어야 할 질문은: 네트워크 파티션이 없는데 왜 낮은 지연과 일관성을 가질 수 없는가입니다. 간단한 예시로 이 질문에 답하겠습니다.

distributed system

노드 A와 노드 B, 두 노드로 구성된 분산 시스템이 있다고 가정해 봅시다. 네트워크 파티션이 없기 때문에, 이 두 노드는 메시지를 통해 서로 쉽게 통신할 수 있습니다. 노드 A는 가장 최근의 쓰기를 막 받았습니다. 동시에 노드 B는 해당 쓰기를 요청하는 읽기 요청을 받았습니다. 이 분산 시스템이 일관성을 달성하려면, 노드 B는 읽기 요청에 응답하여 가장 최근의 쓰기를 보내야 합니다. 따라서 노드 B는 이전 데이터를 업데이트하고 읽기 요청에 응답하기 전에 노드 A로부터 가장 최근 데이터를 받기를 기다려야 합니다. 이 지연은 분산 시스템에서 본질적으로 지연 시간을 증가시킵니다.

이제 두 가지 장점을 모두 가질 수 없다는 확신이 들었으니, 어떤 상황에서 어느 쪽을 선택해야 할지에 대한 질문이 생깁니다. 앞서 언급한 것과 비슷하게, 데이터의 정확성과 시기성이 매우 중요할 때는 낮은 지연보다는 일관성을 선택하는 것이 경험칙입니다. 항상 일관성을 추구하는 훌륭한 예로는 핀테크 애플리케이션과 은행 ATM이 있습니다. 데이터 정확성과 시기성이 그렇게 중요하지 않다면, 낮은 지연이 우선시되어야 합니다. 소셜 미디어 플랫폼과 게임은 저지연을 목표로 하는 애플리케이션의 좋은 예입니다.

요약하자면, 이 블로그에서 PACELC 정리를 간략히 소개했습니다. PACELC 정리가 CAP 정리를 어떻게 확장하는지, 지연(또는 저지연)과 일관성의 정의에 대해 언급했습니다. 그리고 네트워크 파티션이 없는 분산 시스템에서 낮은 지연과 일관성을 동시에 달성할 수 없는 이유를 보여주었습니다. 마지막으로, 언제 일관성을 선택하고, 언제 저지연을 선택해야 하는지에 대한 몇 가지 팁을 제시했습니다. 이 글이 PACELC 정리와 이를 시스템 설계에 어떻게 적용할 수 있는지에 대한 통찰을 얻는 데 도움이 되었기를 바랍니다.

Related Articles