분산 시스템 설계의 핵심: CAP 정리와 트레이드오프
분산 시스템의 핵심 개념(Key Concepts)과 설계 원리(Design Principles)를 소개하며, 스케일링(Scalability), 가용성(Availability), 성능(Performance)을 강조함.
CAP 정리(CAP Theorem)를 통해 일관성(Consistency), 가용성(Availability), 분할 내성(Partition Tolerance) 간의 트레이드오프(Trade-offs)를 설명하고, 시스템 설계 시 고려 사항을 제시함.
강력한 일관성(Strong Consistency)과 약한 일관성(Weak Consistency) 모델을 비교하며, 각 모델의 장단점과 적용 사례를 분석함.
분산 시스템 설계 시 추상화(Abstractions)와 모델링(Modeling)의 중요성을 강조하고, 다양한 시스템 모델과 실패 모델을 소개함.
분산 시스템의 핵심 목표: 확장성, 가용성, 성능
분산 시스템은 확장성(Scalability)을 확보하기 위해 여러 노드를 활용하며, 이는 곧 가용성(Availability)과 성능(Performance) 향상으로 이어진다. 특히, 지리적 확장성(Geographic Scalability)은 여러 데이터 센터를 활용하여 사용자 쿼리에 대한 응답 시간을 단축하는 데 기여한다. 하지만, 노드 증가에 따른 관리 비용 증가(Administrative Scalability)는 고려해야 할 부분이다. 시스템 설계 시에는 지연 시간(Latency)을 최소화하고, 처리량(Throughput)을 극대화하는 방향으로 성능을 최적화해야 한다.
CAP 정리(CAP Theorem)와 시스템 설계의 딜레마
CAP 정리(CAP Theorem)는 분산 시스템 설계 시 일관성(Consistency), 가용성(Availability), 분할 내성(Partition Tolerance) 중 두 가지를 동시에 만족할 수 있다는 것을 보여준다. CA 시스템은 노드 실패를, CP 시스템은 네트워크 분할을, AP 시스템은 가용성을 우선시한다. 따라서, 시스템 설계자는 강력한 일관성(Strong Consistency)을 포기하고 가용성을 높이거나, 분할 내성(Partition Tolerance)을 유지하면서 일관성을 희생하는 등, 트레이드오프를 고려해야 한다.
강력한 일관성(Strong Consistency) vs. 약한 일관성(Weak Consistency)
강력한 일관성(Strong Consistency)은 모든 노드에서 동일한 데이터를 보장하지만, 네트워크 분할 시 가용성을 저해할 수 있다. 반면, 약한 일관성(Weak Consistency) 모델은 가용성(Availability)을 높이는 대신, 데이터의 일관성을 희생한다. 선형적 일관성(Linearizable Consistency)과 순차적 일관성(Sequential Consistency)은 강력한 일관성 모델의 예시이며, 결과적 일관성(Eventual Consistency)은 약한 일관성 모델의 대표적인 예시이다. 개발자는 시스템의 요구 사항에 따라 적절한 일관성 모델을 선택해야 한다.
추상화(Abstractions)와 모델링(Modeling)의 중요성
분산 시스템 설계에서는 추상화(Abstractions)를 통해 복잡성을 관리하고, 모델링(Modeling)을 통해 시스템의 동작을 예측해야 한다. 시스템 모델은 노드의 기능, 통신 링크의 특성, 시간 및 순서에 대한 가정을 정의한다. 비동기 시스템 모델(Asynchronous System Model)은 강력한 가정을 배제하여 다양한 환경에서 작동하도록 설계되며, 동기 시스템 모델(Synchronous System Model)은 시간 및 순서에 대한 가정을 통해 문제를 쉽게 해결할 수 있다. 이러한 모델들을 통해 시스템의 동작을 이해하고, 오류를 예측할 수 있다.