일관성 사고

발행: (2026년 3월 23일 오후 12:03 GMT+9)
3 분 소요
원문: Dev.to

Source: Dev.to

데이터 문제

오늘은 데이터 문제에 대해 논의해 보겠습니다. 데이터가 언제나 100 % 정확해야 할까요? 대부분의 사람들은 그래야 한다고 말합니다. 데이터가 정확해야만 올바르다고 생각하죠. 하지만 대규모 분산 시스템에서는 이 질문이 함정이 될 수 있습니다. 이제 왜 그런지 분석해 보겠습니다.

주장

Statement: “데이터는 모든 사람에게 실시간으로 항상 업데이트되어야 한다”.

대규모 시스템에서는 이것이 재앙이 됩니다. 성능이 저하되고 비용이 증가하며 확장이 어려워지기 때문입니다.

일관성에 대한 인식

Consistency(일관성)는 절대적인 값일 필요가 없습니다; 운영 비용, 속도, 사용자 경험, 데이터 신뢰성 사이의 트레이드오프입니다.

Consistency는 시스템 내 여러 위치에서 특정 시점에 데이터가 얼마나 동기화되어 있는지를 의미합니다. “데이터가 정확한가?” 라고 묻는 대신 다음과 같은 일관성 모델을 고려해야 합니다:

Strong Consistency

  • 모든 읽기 요청이 항상 최신 데이터를 반환합니다.
  • 사용 사례: 결제, 은행, 주식, 재고 관리.

Read‑After‑Write Consistency

  • 사용자가 방금 업데이트한 데이터를 즉시 볼 수 있습니다.
  • 사용 사례: 프로필 업데이트, 게시물 작성, 개인 설정.

Monotonic Reads

  • “시간을 거슬러 올라가는” 데이터를 절대 보지 않으며, 과거에 보였던 메시지가 사라졌다가 다시 나타나는 현상이 없습니다.
  • 사용 사례: 채팅, 알림, 타임라인.

Eventual Consistency

  • 모든 위치가 결국에는 동기화되지만, 점진적으로 이루어집니다.
  • 사용 사례: 검색, 피드, 분석, 캐시, 추천 시스템.

실제 적용

프로필 이름을 업데이트할 때 하나의 행동을 일관성 요구가 다른 여러 레이어로 분리할 수 있습니다 – 이것이 올바른 사고 방식입니다.


Happy reading and happy coding!

0 조회
Back to Blog

관련 글

더 보기 »

프로그래밍 동시성

!프로그램 동시성 커버 이미지 https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads...

Rob Pike의 5가지 프로그래밍 규칙

규칙 1: 프로그램이 어디에서 시간을 소비할지 알 수 없습니다. Bottlenecks는 예상치 못한 곳에서 발생하므로, 추측해서 speed hack을 넣으려 하지 마세요.