본문 바로가기

일관성·응답 지속성·네트워크 분할

서울과 부산의 데이터 사본 사이 통신이 끊겼는데 양쪽에서 잔액을 바꾸도록 허용하면 서로 다른 결과가 생길 수 있다. 한쪽을 멈추면 값의 충돌은 줄지만 사용자는 서비스를 못 쓴다. 중요한 것은 무조건 한 선택을 외우는 일이 아니라 어떤 값을 언제까지 같게 보여 줘야 하고, 통신 장애 동안 어느 요청을 거절할지 정하는 일이다.

연결이 끊긴 두 곳에서 같은 값을 읽을 수 있는가

서울과 부산의 데이터 사본 사이 통신이 끊겼는데 양쪽에서 잔액을 바꾸도록 허용하면 서로 다른 결과가 생길 수 있다. 한쪽을 멈추면 값의 충돌은 줄지만 사용자는 서비스를 못 쓴다. 중요한 것은 무조건 한 선택을 외우는 일이 아니라 어떤 값을 언제까지 같게 보여 줘야 하고, 통신 장애 동안 어느 요청을 거절할지 정하는 일이다.

먼저 되짚기: 부분실패와 상태

부분실패는 일부 노드·통신만 실패해 나머지가 계속 동작하는 상태이고, 상태는 다음 동작과 결과에 영향을 주는 현재 보존값이다. 네트워크 분할에서 서로 다른 노드가 어떤 상태를 관찰할지 정하려면 두 개념을 함께 써야 한다.

일관성과 네트워크 분할

분산시스템의 일관성(consistency)은 여러 노드의 연산과 복제본이 어떤 순서와 값을 관찰해야 하는지를 정한 보장이다. 이는 항상 같은 값이라는 막연한 말이 아니라 쓰기 직후 읽기의 가시성, 연산 순서와 허용 지연처럼 구체적으로 표현해야 한다. 네트워크 분할은 일부 노드 집합 사이에 메시지가 전달되지 않는 통신 장애다. 분할 중에는 상대가 멈췄는지 연결만 끊겼는지 즉시 구별하기 어렵다.

데이터마다 다른 보장을 고른다

잔액 차감은 오래된 값을 보고 동시에 승인하면 손실이 크므로 한 순서를 확인할 때까지 일부 요청을 멈출 수 있다. 반면 상품 설명 조회는 잠시 이전 값을 보여도 업무 피해가 작아 각 지역 사본이 응답하고 나중에 동기화할 수 있다. 같은 서비스 안에서도 데이터 불변조건, 허용 지연, 충돌 해결 가능성과 중단 비용을 기준으로 보장을 다르게 정한다.

일관성 보장만 적으면 부족하다

보장의 대상, 관찰 순서와 시간 한계를 적지 않으면 설계자와 사용자가 다른 뜻을 이해한다. 분할을 전혀 고려하지 않으면 양쪽 승인 뒤 충돌을 수습하지 못하고, 모든 자료에 가장 강한 보장을 강제하면 불필요하게 응답을 중단한다. 답안에서는 보호할 불변조건, 분할 중 허용할 동작, 복구 뒤 조정과 감사를 함께 제시한다.

분할 중에는 상대의 최신 상태를 알 수 없다

시점·선택서울 복제본부산 복제본·결과
분할 전재고 1·통신 가능재고 1·동기화 가능
분할 중 양쪽 승인주문 A 승인주문 B도 승인하면 총 2개: 불변조건 위반
승인권·순서 보호유효 권한 범위 안에서만 승인권한·순서 확인 못 하면 쓰기 제한; 한쪽 또는 양쪽이 거절할 수 있음
읽기만 허용하는 정책허용지연 한도 안에 있음을 확인한 읽기초과·신선도 미확인은 최신 경로 전환 또는 현재 값 제공 제한
복구 뒤승인 기록 기준 동기화충돌 병합·보정·감사

분할 중에는 상대가 멈췄는지 통신만 끊겼는지, 상대의 최신 상태와 처리 여부를 바로 확정할 수 없다.

통신이 끊긴 동안 각 노드는 상대의 처리 여부를 확실히 알 수 없다. 재고가 음수가 되면 안 된다는 불변조건을 우선하면 승인권을 한쪽에 제한하거나 확인될 때까지 쓰기를 거절한다. 상품 설명의 오래된 값을 허용하는 정책이라도 정해진 지연 상한을 확인할 수 있는 동안에만 그 범위의 지역 읽기를 제공한다. 상한 초과·신선도 미확인 시에는 최신 경로로 바꾸거나 현재 값 제공을 제한하고, 복구 뒤 동기화한다.

보장은 관찰 규칙과 분할 동작으로 비교한다

선택사용자가 보는 것분할 중 동작적합한 예
한 순서 확인 후 응답완료된 쓰기를 뒤의 읽기가 즉시 반영확인 못 한 쓰기 일부 거절·대기잔액·재고 차감
제한된 지연 허용허용한 상한 안에서 이전 값 가능한도 이내 제공, 초과·미확인 시 갱신 확인·제한상품 설명·통계
충돌 허용 후 병합서로 다른 갱신이 잠시 공존양쪽 갱신 뒤 규칙으로 병합독립 메모·선호 설정

강한 보장과 약한 보장이라는 이름만 쓰지 말고 쓰기 후 읽기, 동시 쓰기 순서, 최대 허용 지연과 충돌 해결자를 구체화한다.

데이터별 불변조건과 중단비용으로 정한다

먼저 절대 깨지면 안 되는 불변조건을 문장과 수치로 쓴다. 다음으로 오래된 읽기의 허용시간, 동시 변경을 자동 병합할 수 있는지, 잘못된 승인과 서비스 중단 중 어느 피해가 큰지 평가한다. 분할 중 허용할 읽기·쓰기·거절 상태와 사용자 표시를 정하고, 복구 뒤 어느 기록을 기준으로 병합·보정·감사할지 정한다. 같은 시스템이라도 잔액과 상품 설명은 서로 다른 정책을 가질 수 있다.

사례: 재고 1개와 상품 설명

서울·부산에 재고 1이 복제된 상태에서 통신이 끊겼다. 양쪽이 각각 1개를 팔면 총 2개 승인이 되어 누적 판매 승인 수 ≤ 초기 판매가능 수량(1개) 불변조건이 깨진다. 남은 재고에는 별도로 남은 재고 ≥ 0을 요구한다. 한 지역에 안전하게 유지된 승인권과 그 지역의 조건 검사·변경 규칙을 사용하거나, 확정 순서를 확인할 수 없으면 새 주문의 확정을 제한한다. 이때 실제 재고가 0이라고 확인한 것은 아니므로 “품절” 대신 “현재 주문을 확정할 수 없음”으로 알린다. 이미 처리 요청을 보낸 뒤 응답만 사라졌다면 시간초과·재시도·멱등성과 부분실패처럼 결과 미확인으로 구분하고 같은 요청 식별자로 결과를 확인한다.

상품 설명의 문구 수정에 최대 5분 지연을 허용하는 별도 정책도 생각할 수 있다. 지역 사본이 그 한도 안의 상태임을 확인할 수 있는 동안에는 해당 읽기를 제공하지만, 한도를 넘거나 신선도를 확인할 수 없으면 더 최신인 경로로 전환하거나 현재 설명의 제공을 제한한다. 오래된 참고값을 별도로 표시하더라도 “최대 5분 지연인 현재 값”으로 간주하지 않는다. 정책에는 허용지연의 측정 기준과 시간 오차, 한도 초과 표시, 복구 뒤 동기화·충돌 검토 담당자를 기록한다.

교육용 선택안은 분할 전에 서울만 재고 승인권을 가진 상태로 고정하고, 분할 중 부산으로 승인권을 자동 이전하지 않는 것이다. 서울도 자신에게 유효한 권한이 유지됨을 확인하지 못하면 확정을 멈춘다. 서울에 유효한 승인권이 유지된 경우 주문 A는 재고 1→0·승인 1, 부산의 주문 B는 미확정·차감 0이며 복구 뒤 서울의 확정 기록과 같은 요청 ID를 대조한다. 부산 사본의 재고 1은 새 승인권을 뜻하지 않는다.

상품 설명은 “권위 있는 갱신원과 마지막으로 동기화를 확인한 시각”부터 경과시간을 잰다. 단순한 파일 수정시각이나 마지막 사용자 조회시각으로 신선도를 재시작하지 않는다. 마지막 확인 10:00:00, 두 시각의 차이 오차 상한을 합쳐 2초라면 실제 경과의 상한은 관측경과+2초다. 10:04:57에는 최대 299초로 허용, 10:04:58에는 최대 300초로 경계 포함 허용, 10:04:59에는 최대 301초여서 현재 값 제공을 제한한다. 시계 오차 상한이나 마지막 동기화 확인이 없으면 이 5분 보장을 계산할 수 없다.

자체 10점 문제

분산시스템 일관성과 네트워크 분할을 설명하고 데이터 특성별 대응방안을 제시하시오.

요구어는 설명, 제시다. 정의 뒤 불변조건–허용지연–분할 중 읽기/쓰기–복구 후 조정의 네 칸으로 재고와 설명 데이터를 대조한다. 무조건 강한 보장 또는 무조건 응답 지속을 정답으로 쓰지 않는다.

10점 풀이 방향과 모범답안 보기

답안 목차: 보장–분할–선택–복구

  1. 분산 일관성과 네트워크 분할 정의
  2. 쓰기 가시성·연산 순서·허용지연의 보장축
  3. 불변조건·충돌 가능성·중단비용별 정책 선택
  4. 분할 중 읽기·쓰기·거절과 사용자 상태 표시
  5. 복구 후 동기화·병합·보정·감사 및 시험

답안 도식: 분할 정책 결정식

정책을 정할 기준정해야 할 동작
데이터 불변조건·오래된 값 허용시간·충돌 병합 가능성·중단 비용분할 중 읽기·쓰기·거절·상태 표시
승인 기록·판본·시각·같은 요청 ID복구 뒤 동기화·병합·보정·감사

재고와 설명의 실제 경계 사례를 아래 두 정책으로 구분한다.

모범답안 축약본

분산 일관성은 여러 노드의 연산과 복제본이 어떤 순서와 값을 관찰할지 정한 보장이고, 네트워크 분할은 일부 노드 집합 사이의 메시지 전달이 끊긴 상태다. 분할 중에는 상대가 중단됐는지 연결만 끊겼는지 즉시 구별하기 어렵다. 정책은 데이터 불변조건, 오래된 값 허용시간, 충돌 해결 가능성과 중단 피해로 정한다. 재고·잔액처럼 이중 승인이 불변조건을 깨면 확정 순서를 확인할 수 없는 쓰기를 일부 거절한다. 상품 설명처럼 제한된 지연이 허용되면 한도 이내임을 확인한 지역 읽기를 제공하고, 초과·미확인 시 최신 경로 전환 또는 현재 값 제공 제한을 적용한다. 복구 뒤에는 승인판본으로 동기화한다. 각 데이터에 쓰기 후 읽기, 허용지연, 분할 중 동작, 복구 후 병합·보정·감사 규칙을 명시한다. 일관성 보장이라는 구호만 쓰거나 모든 데이터에 같은 정책을 강제하는 것이 대표 실패다.

자체 25점 문제

서울·부산 복제본 사이 네트워크 분할에서 재고와 상품 설명 데이터의 읽기·쓰기·복구 정책을 데이터 특성별로 설계하시오.

요구어는 설계다. 모든 데이터에 같은 보장을 강제하지 말고, 불변조건·허용지연·충돌 가능성·중단비용을 기준으로 분할 중 동작과 복구 후 병합·보정을 나눈다.

25점 풀이 방향과 모범답안 보기

25점 답안 목차

  1. 데이터별 불변조건과 관찰 보장
  2. 분할 탐지와 결과 미확인 구분
  3. 재고 쓰기의 승인권·거절 조건
  4. 상품 설명의 허용지연·신선도 확인
  5. 사용자 상태 표시
  6. 복구 후 동기화·충돌 병합
  7. 보정·감사와 중복 요청 확인
  8. 분할·복구 시나리오 시험

25점 답안 도식

서울도 승인권을 확인하지 못하면 재고 확정을 멈춘다 · 상태 따라가기

분할 전에 재고 1과 서울만의 승인권을 고정한 교육 모형이다. 모든 단계에서 서울·승인권·부산·확인의 위치를 유지하며 값과 허용 조건을 함께 확인합니다.

서울도 승인권을 확인하지 못하면 재고 확정을 멈춘다

상자 안의 대상과 화살표의 조건을 함께 읽으세요. 좁은 화면에서는 같은 관계를 세로로 재배치한 도식을 보여 줍니다.

서울도 승인권을 확인하지 못하면 재고 확정을 멈춘다분할 전에 서울만 재고 승인권을 갖고 부산으로 자동 이전하지 않는다. 서울이 유효 권한과 로컬 검사·변경 규칙을 확인하면 주문 A는 재고 1→0·승인 1이다. 부산은 미확정·차감 0이며 재고 1 사본이 승인권을 뜻하지 않는다. 서울도 권한 확인 실패이면 확정을 제한하고 품절 대신 현재 주문 확정 불가로 알린다. 복구 뒤 확정 기록과 같은 요청 ID를 대조하며 양쪽에 승인권을 주지 않는다.seoul → authorityauthority → approve: 유효authority → halt: 미확인유효미확인서울 재고 승인권: 분할 전 고정 · 재고 1서울 재고 승인권분할 전 고정 · 재고 1유효 승인권?: 로컬 규칙도 확인유효 승인권?로컬 규칙도 확인A 확정·승인 1: 재고 1 → 0A 확정·승인 1재고 1 → 0주문 확정 제한: 품절로 가장하지 않음주문 확정 제한품절로 가장하지 않음
서울도 승인권을 확인하지 못하면 재고 확정을 멈춘다분할 전에 서울만 재고 승인권을 갖고 부산으로 자동 이전하지 않는다. 서울이 유효 권한과 로컬 검사·변경 규칙을 확인하면 주문 A는 재고 1→0·승인 1이다. 부산은 미확정·차감 0이며 재고 1 사본이 승인권을 뜻하지 않는다. 서울도 권한 확인 실패이면 확정을 제한하고 품절 대신 현재 주문 확정 불가로 알린다. 복구 뒤 확정 기록과 같은 요청 ID를 대조하며 양쪽에 승인권을 주지 않는다.seoul → authorityauthority → approve: 유효authority → halt: 미확인유효미확인서울 재고 승인권: 분할 전 고정 · 재고 1서울 재고 승인권분할 전 고정 · 재고1유효 승인권?: 로컬 규칙도 확인유효승인권?로컬 규칙도확인A 확정·승인 1: 재고 1 → 0A 확정·승인 1재고 1 → 0주문 확정 제한: 품절로 가장하지 않음주문 확정 제한품절로 가장하지 않음

분할 전에 서울만 재고 승인권을 갖고 부산으로 자동 이전하지 않는다. 서울이 유효 권한과 로컬 검사·변경 규칙을 확인하면 주문 A는 재고 1→0·승인 1이다. 부산은 미확정·차감 0이며 재고 1 사본이 승인권을 뜻하지 않는다. 서울도 권한 확인 실패이면 확정을 제한하고 품절 대신 현재 주문 확정 불가로 알린다. 복구 뒤 확정 기록과 같은 요청 ID를 대조하며 양쪽에 승인권을 주지 않는다.

이 예의 조건

  • 분할 전에 서울만 재고 승인권을 갖고 부산으로 자동 이전하지 않는다. 서울이 유효 권한과 로컬 검사·변경 규칙을 확인하면 주문 A는 재고 1→0·승인 1이다. 부산은 미확정·차감 0이며 재고 1 사본이 승인권을 뜻하지 않는다. 서울도 권한 확인에 실패하면 확정을 제한하고 품절 대신 현재 주문 확정 불가로 알린다. 복구 뒤 확정 기록과 같은 요청 ID를 대조하며 양쪽에 승인권을 주지 않는다.
  • 이 원문의 교육용 사례·조건 안에서 상태를 대조합니다. 실제 구축·실험 결과나 원문에 없는 성능 보장을 추가하지 않습니다.
관계도의 보충 설명
원그림의 모든 대상과 설명
대상원 설명
서울 재고 승인권분할 전 고정 · 재고 1
유효 승인권?로컬 규칙도 확인
A 확정·승인 1재고 1 → 0
주문 확정 제한품절로 가장하지 않음
원그림의 모든 관계와 조건
연결원 라벨·방향
서울 재고 승인권 → 유효 승인권?라벨 없는 연결 / 정방향 / 실선
유효 승인권? → A 확정·승인 1유효 / 정방향 / 실선
유효 승인권? → 주문 확정 제한미확인 / 정방향 / 실선
예의 값과 변화
관찰·상황값·보충 정보변화·이유
분할 전 기준

분할 전에 재고 1과 서울만의 승인권을 고정한 교육 모형이다.

  • 서울·승인권: 서울 승인권·재고 1
  • 부산·확인: 자동 승인권 이전 없음
  • 부산의 오래된 재고 1 사본은 현재 승인권을 뜻하지 않는다.
서울의 한 자리

서울이 유효 권한과 로컬 검사·변경 규칙을 확인해 주문 A를 승인한다.

  • 서울·승인권: 재고 1→0·승인 1
  • 부산·확인: 현재 결과 미확인
  • 권한 확인을 통과한 변경을 기준 원장에 남긴다.
부산 미확정·차감 0

부산은 공통 결과를 확인하지 못하므로 새 주문 확정이나 재고 차감을 하지 않는다.

  • 서울·승인권: 서울 A 확정 보전
  • 부산·확인: 미확정·재고 차감 0
  • 미확인 상태를 품절이나 확정으로 바꾸지 않으며 과금 효과를 추가로 주장하지 않는다.
권한 미확인 대안·복구 조회

서울의 권한도 미확인인 별도 조건에서는 확정을 제한하고 복구 뒤 같은 ID를 대조한다.

  • 서울·승인권: 권한 미확인: 확정 제한
  • 부산·확인: 복구 뒤 같은 ID 대사
  • 앞 성공 경로의 추가 배정이 아니며 양쪽에 승인권을 주지 않는다.

서울도 승인권을 확인하지 못하면 재고 확정을 멈춘다 · 상태 따라가기

분할 전에 재고 1과 서울만의 승인권을 고정한 교육 모형이다. 모든 단계에서 서울·승인권·부산·확인의 위치를 유지하며 값과 허용 조건을 함께 확인합니다.

서울도 승인권을 확인하지 못하면 재고 확정을 멈춘다

상자 안의 대상과 화살표의 조건을 함께 읽으세요. 좁은 화면에서는 같은 관계를 세로로 재배치한 도식을 보여 줍니다.

서울도 승인권을 확인하지 못하면 재고 확정을 멈춘다분할 전에 서울만 재고 승인권을 갖고 부산으로 자동 이전하지 않는다. 서울이 유효 권한과 로컬 검사·변경 규칙을 확인하면 주문 A는 재고 1→0·승인 1이다. 부산은 미확정·차감 0이며 재고 1 사본이 승인권을 뜻하지 않는다. 서울도 권한 확인 실패이면 확정을 제한하고 품절 대신 현재 주문 확정 불가로 알린다. 복구 뒤 확정 기록과 같은 요청 ID를 대조하며 양쪽에 승인권을 주지 않는다.seoul → authorityauthority → approve: 유효authority → halt: 미확인유효미확인서울 재고 승인권: 분할 전 고정 · 재고 1서울 재고 승인권분할 전 고정 · 재고 1유효 승인권?: 로컬 규칙도 확인유효 승인권?로컬 규칙도 확인A 확정·승인 1: 재고 1 → 0A 확정·승인 1재고 1 → 0주문 확정 제한: 품절로 가장하지 않음주문 확정 제한품절로 가장하지 않음
서울도 승인권을 확인하지 못하면 재고 확정을 멈춘다분할 전에 서울만 재고 승인권을 갖고 부산으로 자동 이전하지 않는다. 서울이 유효 권한과 로컬 검사·변경 규칙을 확인하면 주문 A는 재고 1→0·승인 1이다. 부산은 미확정·차감 0이며 재고 1 사본이 승인권을 뜻하지 않는다. 서울도 권한 확인 실패이면 확정을 제한하고 품절 대신 현재 주문 확정 불가로 알린다. 복구 뒤 확정 기록과 같은 요청 ID를 대조하며 양쪽에 승인권을 주지 않는다.seoul → authorityauthority → approve: 유효authority → halt: 미확인유효미확인서울 재고 승인권: 분할 전 고정 · 재고 1서울 재고 승인권분할 전 고정 · 재고1유효 승인권?: 로컬 규칙도 확인유효승인권?로컬 규칙도확인A 확정·승인 1: 재고 1 → 0A 확정·승인 1재고 1 → 0주문 확정 제한: 품절로 가장하지 않음주문 확정 제한품절로 가장하지 않음

분할 전에 서울만 재고 승인권을 갖고 부산으로 자동 이전하지 않는다. 서울이 유효 권한과 로컬 검사·변경 규칙을 확인하면 주문 A는 재고 1→0·승인 1이다. 부산은 미확정·차감 0이며 재고 1 사본이 승인권을 뜻하지 않는다. 서울도 권한 확인 실패이면 확정을 제한하고 품절 대신 현재 주문 확정 불가로 알린다. 복구 뒤 확정 기록과 같은 요청 ID를 대조하며 양쪽에 승인권을 주지 않는다.

이 예의 조건

  • 분할 전에 서울만 재고 승인권을 갖고 부산으로 자동 이전하지 않는다. 서울이 유효 권한과 로컬 검사·변경 규칙을 확인하면 주문 A는 재고 1→0·승인 1이다. 부산은 미확정·차감 0이며 재고 1 사본이 승인권을 뜻하지 않는다. 서울도 권한 확인에 실패하면 확정을 제한하고 품절 대신 현재 주문 확정 불가로 알린다. 복구 뒤 확정 기록과 같은 요청 ID를 대조하며 양쪽에 승인권을 주지 않는다.
  • 이 원문의 교육용 사례·조건 안에서 상태를 대조합니다. 실제 구축·실험 결과나 원문에 없는 성능 보장을 추가하지 않습니다.

관계도의 보충 설명

원그림의 모든 대상과 설명
대상원 설명
서울 재고 승인권분할 전 고정 · 재고 1
유효 승인권?로컬 규칙도 확인
A 확정·승인 1재고 1 → 0
주문 확정 제한품절로 가장하지 않음
원그림의 모든 관계와 조건
연결원 라벨·방향
서울 재고 승인권 → 유효 승인권?라벨 없는 연결 / 정방향 / 실선
유효 승인권? → A 확정·승인 1유효 / 정방향 / 실선
유효 승인권? → 주문 확정 제한미확인 / 정방향 / 실선
예의 값과 변화
관찰·상황값·보충 정보변화·이유
분할 전 기준

분할 전에 재고 1과 서울만의 승인권을 고정한 교육 모형이다.

  • 서울·승인권: 서울 승인권·재고 1
  • 부산·확인: 자동 승인권 이전 없음
  • 부산의 오래된 재고 1 사본은 현재 승인권을 뜻하지 않는다.
서울의 한 자리

서울이 유효 권한과 로컬 검사·변경 규칙을 확인해 주문 A를 승인한다.

  • 서울·승인권: 재고 1→0·승인 1
  • 부산·확인: 현재 결과 미확인
  • 권한 확인을 통과한 변경을 기준 원장에 남긴다.
부산 미확정·차감 0

부산은 공통 결과를 확인하지 못하므로 새 주문 확정이나 재고 차감을 하지 않는다.

  • 서울·승인권: 서울 A 확정 보전
  • 부산·확인: 미확정·재고 차감 0
  • 미확인 상태를 품절이나 확정으로 바꾸지 않으며 과금 효과를 추가로 주장하지 않는다.
권한 미확인 대안·복구 조회

서울의 권한도 미확인인 별도 조건에서는 확정을 제한하고 복구 뒤 같은 ID를 대조한다.

  • 서울·승인권: 권한 미확인: 확정 제한
  • 부산·확인: 복구 뒤 같은 ID 대사
  • 앞 성공 경로의 추가 배정이 아니며 양쪽에 승인권을 주지 않는다.
동기화 시각과 오차를 포함한 경과 상한으로 읽기를 판단한다

상자 안의 대상과 화살표의 조건을 함께 읽으세요. 좁은 화면에서는 같은 관계를 세로로 재배치한 도식을 보여 줍니다.

동기화 시각과 오차를 포함한 경과 상한으로 읽기를 판단한다권위 있는 갱신원과 마지막 동기화 확인 10:00:00을 기준으로 관측 경과+시각차 오차 상한 2초를 계산한다. 상한≤300초일 때만 최대 5분 지연의 현재 설명을 제공한다. 10:04:58은 300초로 경계 포함, 10:04:59는 301초로 제한이다. 기준시각이나 오차상한이 없어 계산할 수 없는 경우에도 제한 또는 최신 경로 전환이며, 사용자 조회시각으로 신선도를 다시 시작하지 않는다.confirmed → elapsedelapsed → freshfresh → read: 한도 안fresh → limit: 초과·미확인한도 안초과·미확인마지막 동기화 확인: 10:00:00 · 권위 갱신원마지막 동기화 확인10:00:00 · 권위 갱신원실제 경과 상한: 관측 경과 + 오차 2초실제 경과 상한관측 경과 + 오차 2초신선도 확인?: 상한 ≤ 300초신선도 확인?상한 ≤ 300초지역 현재 설명 제공: 10:04:58 · 최대 300초지역 현재 설명 제공10:04:58 · 최대 300초최신 경로·제공 제한: 10:04:59 · 최대 301초 시각·오차 미확인도 제한최신 경로·제공 제한10:04:59 · 최대 301초시각·오차 미확인도 제한
동기화 시각과 오차를 포함한 경과 상한으로 읽기를 판단한다권위 있는 갱신원과 마지막 동기화 확인 10:00:00을 기준으로 관측 경과+시각차 오차 상한 2초를 계산한다. 상한≤300초일 때만 최대 5분 지연의 현재 설명을 제공한다. 10:04:58은 300초로 경계 포함, 10:04:59는 301초로 제한이다. 기준시각이나 오차상한이 없어 계산할 수 없는 경우에도 제한 또는 최신 경로 전환이며, 사용자 조회시각으로 신선도를 다시 시작하지 않는다.confirmed → elapsedelapsed → freshfresh → read: 한도 안fresh → limit: 초과·미확인한도 안초과·미확인마지막 동기화 확인: 10:00:00 · 권위 갱신원마지막 동기화확인10:00:00 · 권위갱신원실제 경과 상한: 관측 경과 + 오차 2초실제 경과 상한관측 경과 + 오차 2초신선도 확인?: 상한 ≤ 300초신선도확인?상한 ≤300초지역 현재 설명 제공: 10:04:58 · 최대 300초지역 현재 설명제공10:04:58 · 최대300초최신 경로·제공 제한: 10:04:59 · 최대 301초 시각·오차 미확인도 제한최신 경로·제공제한10:04:59 · 최대301초시각·오차 미확인도제한

권위 있는 갱신원과 마지막 동기화 확인 10:00:00을 기준으로 관측 경과+시각차 오차 상한 2초를 계산한다. 상한≤300초일 때만 최대 5분 지연의 현재 설명을 제공한다. 10:04:58은 300초로 경계 포함, 10:04:59는 301초로 제한이다. 기준시각이나 오차상한이 없어 계산할 수 없는 경우에도 제한 또는 최신 경로 전환이며, 사용자 조회시각으로 신선도를 다시 시작하지 않는다.

25점 모범답안

재고와 상품 설명은 같은 복제 구조를 사용하더라도 보장 요구가 다르다. 재고는 누적 판매 승인 수 ≤ 초기 판매가능 수량과 남은 재고 ≥ 0을 함께 지켜야 하므로 분할 중 확정 순서를 확인할 수 없는 지역의 쓰기를 제한하거나 안전하게 유지되는 승인권 범위 안에서만 허용한다. 실제 재고가 0임을 확인하지 못했다면 품절이 아니라 현재 주문을 확정할 수 없음으로 표시한다.

상품 설명은 예를 들어 최대 5분의 오래된 읽기를 허용할 수 있다. 지역 사본이 그 한도 안임을 확인할 수 있을 때만 제공하고 한도를 넘거나 신선도를 확인할 수 없으면 최신 경로로 전환하거나 현재 값 제공을 제한한다. 제한된 지연 보장을 확인 없이 계속 주장하지 않는다.

복구 후에는 승인된 재고 기록을 기준으로 동기화하고 이미 보낸 요청의 결과 미확인은 요청 식별값으로 확인한다. 상품 설명은 버전·시각을 대조해 병합하고 충돌과 지연 한도 위반을 감사한다. 분할 전·중·복구 후 읽기·쓰기 시나리오를 반복해 불변조건, 허용지연, 사용자 표시와 보정 절차가 실제로 유지되는지 검증한다.

승인권은 서울에 고정하며 부산은 분할 중 재고확정을 하지 않는 선택을 채택한다. 서울도 유효 권한 확인 실패 시 중단하고 재접속만으로 양쪽에 승인권을 주지 않는다. 상품 설명은 마지막 동기화 확인 10:00:00·시각차 오차 상한 2초를 사용해 경과상한≤300초만 허용한다. 시험은 10:04:58/59 경계, 시각정보 유실, 서울 권한 확인 실패, 복구 후 같은 ID 재조회로 나누어 경계 포함/거절과 판매 승인 합계≤1을 확인한다.

출처와 적용 경계

분산 일관성과 네트워크 분할의 구분은 안정된 기초개념이다. 재고 1개와 상품설명 최대 5분 지연은 불변조건·신선도 선택을 연습하기 위한 자체 사례이며 모든 시스템에 같은 정책을 요구하거나 특정 제품의 보장을 설명하지 않는다.

자기교정과 조건 변경

잘못 쓴 답수정복습
일관성은 모든 노드가 항상 같은 값을 가진다는 뜻이다어떤 순서·값·허용지연을 관찰해야 하는지의 보장이다정의
분할 중 한쪽 응답이 없으면 그쪽 데이터는 틀렸다상대 노드 중단과 통신 단절을 즉시 구별할 수 없다분할
재고 순서를 확인 못 하면 품절이라고 알린다실제 0을 확인하지 못했으면 주문 확정 불가로 구분한다재고 사례
최대 5분 허용이면 신선도를 몰라도 계속 제공한다한도 안임을 확인할 수 있을 때만 그 보장을 주장한다재고 사례
모든 데이터에 가장 강한 보장을 적용한다불변조건·허용지연·병합 가능성·중단비용으로 데이터별 선택한다판단

재고가 10개이고 지역별로 안전한 판매 할당량을 미리 나눈다면? 각 지역은 할당 범위 안에서 독립 승인할 수 있지만 할당량 소진·재조정 규칙과 복구 후 합산 검증이 필요하다.

상품 설명의 허용지연이 5분에서 30초로 줄어든다면? 신선도 확인 주기와 최신 경로 전환 기준을 더 엄격하게 하고 확인할 수 없을 때 제공을 제한한다.

충돌을 자동 병합할 수 있는 독립 선호설정이라면? 양쪽 쓰기를 허용할 여지가 커지지만 병합 규칙·중복·복구 후 감사 결과를 계약에 남긴다.

한 번에 되찾기

일관성은 노드들이 관찰할 값과 순서의 보장이고 네트워크 분할은 노드 집합 사이 통신이 끊긴 상태다. 데이터 불변조건과 지연·중단 비용에 따라 분할 중 응답과 동기화 정책을 정한다.