500
2
부
구현
12.7.112.7.1
일관성 희생 일관성 희생
재고 마이크로서비스를 완전히 종료하지 않는 것으로 가정해보자. 지금
DC1
의 데이터를 변경
하면
DC2
의 데이터베이스는 이를 인식하지 못한다. 따라서
DC2
의 재고 노드에 대한 모든 요
청은 잠재적으로 지난 데이터를 보게 된다. 두 노드 모두 요청을 처리할 수 있고
단절단절
됨에도 불
구하고 시스템을 계속 실행할 수 있다는 점에서 시스템은 여전히
가용가용
하지만,
일관성일관성
을 잃게 된
다는 점에서 세 가지 특징을 모두 유지하지는 못한다. ‘가용성
availability
’과 ‘단절내성
partition
tolerance
’
의 영문 첫 글자인
A
와
P
를 따서 이와 같은 시스템을 흔히
AP
시스템이라고 한다.
이 단절 동안 쓰기를 계속 허용하면, 미래의 어느 시점에 다시 동기화해야 한다는 사실을 받아
들여야 한다. 단절 기간이 오래 지속될수록 재동기화는 더욱 어려워질 수 있다.
현실적으로 데이터베이스 노드 간에 네트워크 장애가 발생하지 않더라도 데이터 복제는 즉각
적으로 이뤄지지는 않는다. 앞서 언급했듯이 단절내성과 가용성을 유지하기 위해 일관성을 기
꺼이 양보하는 시스템은
최종 일관성최종 일관성
eventual
consistency
이 있다고 한다. 즉, 미래의 어느 시점에 모
든 노드가 업데이트된 데이터를 볼 수 있길 기대하지만, 한 번에 이뤄지지는 않으므로 사용자
는 여전히 이전 데이터를 볼 가능성을 감수해야 한다.
12.7.212.7.2
가용성 희생 가용성 희생
일관성을 유지해야 해서