일관성 사고

발행: (2026년 3월 23일 PM 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

관련 글

더 보기 »

터미널용 로그 파일 뷰어

터미널용 로그 파일 뷰어. Merge, tail, search, filter, 그리고 query 로그 파일을 손쉽게 할 수 있습니다. 서버가 필요 없습니다. 설정도 필요 없습니다. 여전히 풍부한 기능을 제공합니다. !Screenshot of lnav https:...

프로그래밍 동시성

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