ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 분산 시스템에서의 일관성 모델: 다이나모 스타일과 완화된 일관성
    책/데이터 중심 어플리케이션 설계 2024. 6. 26. 23:38

    분산 시스템에서 데이터 일관성을 유지하는 것은 매우 중요한 과제이다. 특히, 데이터가 여러 노드에 복제되는 환경에서 일관성을 유지하면서도 성능과 가용성을 높이는 것은 어려운 일이다. 다이나모 스타일 복제를 사용하는 시스템에서의 일관성 모델과 완화된 일관성 모델에 대해 알아보.

    다이나모 스타일 복제

    다이나모 스타일 복제(Dynamo-style replication)는 리더 없는 분산 시스템에서 사용된다. 이러한 시스템은 모든 노드가 동일한 역할을 수행하며, 쓰기 및 읽기 요청이 임의의 노드에 분산된다. 이로 인해 특정 노드의 장애가 시스템 전체에 미치는 영향을 최소화할 수 있다.

    다이나모 스타일 복제를 사용하는 시스템은 궁극적 일관성(eventual consistency)을 제공한다. 궁극적 일관성이란 시간이 지나면 모든 노드가 동일한 데이터를 가지게 된다는 것을 의미한다. 즉, 데이터의 일관성을 즉각적으로 보장하지 않지만, 일정 시간이 지나면 일관된 상태에 도달한다.

    선형성과 다이나모 스타일

    선형성(linearity)은 분산 시스템에서 매우 강력한 일관성 모델이다. 이는 모든 연산이 단일한 순서로 직렬화된 것처럼 보이게 하여, 모든 클라이언트가 동일한 순서로 동일한 결과를 보장받게 한다. 그러나 다이나모 스타일 복제를 사용하는 시스템은 일반적으로 선형성을 보장하지 않는다. 그 이유는 다음과 같다:

    1. 읽기-쓰기 지연: 데이터를 읽거나 쓸 때 여러 노드에 분산되어 요청이 이루어지므로 지연이나 네트워크 분할이 발생할 수 있다. 이는 즉각적인 일관성을 보장하기 어렵게 만든다.
    2. 충돌 해결: 동일한 키에 대한 여러 쓰기 요청이 동시에 발생하면 데이터 충돌이 발생할 수 있다. 다이나모 스타일 시스템은 버전 벡터(version vectors)나 마지막 쓰기 승리(Last Write Wins)와 같은 충돌 해결 메커니즘을 사용하지만, 이는 궁극적 일관성을 제공할 뿐 즉각적인 선형성을 보장하지는 않는다.
    3. 동기식 연산 부족: 성능을 위해 동기식 연산을 최소화하므로, 쓰기 및 읽기 작업이 즉각적으로 모든 노드에 반영되지 않을 수 있다.

    따라서 다이나모 스타일 복제를 사용하는 리더 없는 시스템은 선형성을 제공하지 않는다고 보는 것이 일반적으로 안전하다.

    완화된 일관성 모델

    완화된 일관성 모델(relaxed consistency model)은 분산 시스템에서 일관성 보장 수준을 완화하여 성능을 향상시키는 모델이다. 이러한 모델들은 시스템의 성능과 가용성을 높이기 위해 일관성 요구 사항을 약화시킨다. 완화된 일관성 모델의 주요 예시와 그 특성은 다음과 같다:

    1. 궁극적 일관성 (Eventual Consistency): 모든 업데이트가 결국 모든 복제본에 전파될 것을 보장한다. 시간이 지나면 모든 노드가 동일한 상태가 되지만, 즉각적으로 일관성을 보장하지 않는다. Amazon DynamoDB와 Cassandra가 이를 사용한다.
    2. 약한 일관성 (Weak Consistency): 시스템은 읽기 연산이 최신 쓰기 연산을 반영할 것을 보장하지 않는다. 일부 최신 업데이트가 반영되지 않은 데이터를 읽을 수 있다.
    3. 연결 일관성 (Session Consistency): 같은 세션 내에서 일관성을 보장한다. 즉, 클라이언트가 동일한 세션 동안 일관된 데이터를 읽을 수 있다.
    4. 순차 일관성 (Sequential Consistency): 모든 프로세스가 동일한 순서로 연산을 관찰할 것을 보장한다. 이는 직렬화 가능성보다 약하지만 여전히 강력한 일관성 모델이다.

    왜 완화된 일관성 모델을 사용하는가?

    완화된 일관성 모델을 사용하는 주요 이유는 다음과 같다:

    1. 성능 향상: 엄격한 일관성 모델을 유지하려면 많은 통신 오버헤드와 동기화 시간이 필요하다. 완화된 일관성 모델은 이러한 오버헤드를 줄여 성능을 향상시킨다.
    2. 가용성 증가: 완화된 일관성 모델은 시스템의 일부 노드가 일시적으로 불가용 상태가 되더라도 전체 시스템의 가용성을 유지하는 데 도움이 된다.
    3. 확장성: 대규모 분산 시스템에서는 일관성을 유지하는 데 드는 비용이 기하급수적으로 증가한다. 완화된 일관성 모델은 더 많은 노드를 추가해도 일관성 유지 비용을 줄일 수 있다.

    예시

    Amazon DynamoDB와 같은 시스템은 궁극적 일관성을 제공한다. 이는 다음과 같은 상황에서 유용하다:

    • 쇼핑 카트 시스템: 쇼핑 카트에 아이템을 추가하는 연산은 즉각적인 일관성이 필요하지 않다. 시간이 지나면 모든 노드가 동일한 쇼핑 카트 상태를 가지게 되는 것으로 충분하다.
    • 소셜 미디어 피드: 사용자가 게시물을 작성하면, 해당 게시물이 모든 사용자에게 즉시 보이지 않아도 괜찮다. 시간이 지나면서 모든 피드에 전파되면 된다.

    완화된 일관성 모델은 일관성보다는 성능과 가용성을 더 중시하는 애플리케이션에 적합하다. 이를 통해 시스템은 더 빠르게 응답하고, 더 높은 가용성을 제공하며, 더 잘 확장할 수 있다.

     

     

    분산 시스템에서 데이터 일관성을 유지하는 것은 매우 중요하지만, 엄격한 일관성 모델을 유지하는 것은 성능과 가용성 측면에서 어려운 일이다. 다이나모 스타일 복제를 사용하는 시스템은 리더 없는 환경에서 높은 가용성과 성능을 제공하지만, 선형성을 보장하지는 않는다. 반면, 완화된 일관성 모델은 일관성 요구 사항을 완화하여 성능과 가용성을 높일 수 있다. 애플리케이션의 요구 사항에 따라 적절한 일관성 모델을 선택하는 것이 중요하다.

     


    참고:

    책: 데이터 중심 어플리케이션 설계

Designed by Tistory.