분산 시스템은 여러 컴퓨터가 네트워크로 연결되어 하나의 목표를 향해 협력하는 형태입니다. 하지만 그 내부를 들여다보면 익숙한 단어들이 낯선 의미로 쓰입니다. 이 글에서는 자주 등장하는 용어를 정리하고, 서로 어떻게 연결되는지 살펴봅니다.
노드와 클러스터
노드는 분산 시스템을 이루는 단일 참여 단위입니다. 여러 노드가 모여 클러스터를 이루며, 각 노드는 자신의 자원과 상태를 가집니다. 노드는 언제든 느려지거나 잠시 응답하지 않을 수 있다는 점이 분산 시스템의 출발점입니다.
복제와 파티션
자료를 여러 노드에 중복해 두는 것을 복제(replication)라 하고, 자료를 여러 노드에 나눠 담는 것을 파티션(partition)이라 합니다. 둘 다 가용성과 성능을 위한 선택이지만, 동시에 일관성을 다루는 비용을 키웁니다.
일관성(consistency)은 “모든 자료가 같다”는 뜻이 아니라, 시스템이 보장하는 가시성 규칙을 가리킵니다. 강도에 따라 여러 모델이 존재합니다.
합의와 장애
합의(consensus)는 여러 노드가 하나의 값을 정하는 절차입니다. 일부 노드가 응답하지 않거나 네트워크가 느려도 합의가 가능하려면 특별한 알고리즘이 필요합니다. 이 영역은 장애 모델과 깊게 연결되어 있습니다.
일관성 모델
강 일관성, 인과 일관성, 최종 일관성 등은 “언제, 어떻게” 최신 상태가 보이는지를 규정합니다. 모델이 강할수록 직관에 가깝지만 비용이 크고, 약할수록 유연하지만 추론이 더 어렵습니다.
용어는 지도다
개별 용어는 낯설지만, 함께 보면 하나의 지도가 됩니다. 노드가 모이고, 자료가 나뉘고, 합의가 조정하고, 일관성 모델이 보장을 정의합니다. 이 지도를 가지면 다음에 다룰 기술 해설이 훨씬 명확하게 다가옵니다.