N° 01 — 목록

'eventual-consistency' (2)

  1. Software Architecture/Distributed Systems

    Distributed Systems - 03. 일관성 모델

    일관성 모델 — 강한 일관성과 최종 일관성 사이의 스펙트럼2018년 한 SaaS 회사에서 사용자가 프로필을 수정한 직후 "저장됐다"는 메시지를 받았다. 새로고침하니 예전 프로필이 떴다. 사용자는 "저장이 안 됐나?"라고 생각해 다시 저장했다. 같은 데이터가 두 번 쓰였고, 결제 주소까지 두 번 변경돼 뒷배송 처리에 며칠이 걸렸다.원인은 — 쓰기 요청이 마스터 DB에 갔고, 읽기 요청이 읽기 복제본(비동기 복제)에 갔다. 복제 지연으로 복제본엔 아직 새 데이터가 안 반영됐기 때문이다. 시스템은 "저장됐다"고 했지만, 사용자가 보는 화면은 그게 아니었다.이 사태를 "강한 일관성 vs 최종 일관성"이라는 이분법으로 설명하면 핵심이 빠진다. 강도의 스펙트럼이 있고, 그 사이에 여러 모델이 있다. 이 글은 그 스..

    · 댓글
  2. Software Architecture/Architectural Styles

    Architectural Styles - 07. 이벤트 기반 아키텍처

    이벤트 기반 아키텍처 — 비동기가 만드는 새로운 일관성결제 서비스가 3초 걸린다고 하자. 모놀리스에서 동기 호출로 묶여 있으면, 주문은 결제가 끝날 때까지 3초 대기한다. 요청이 몰리면 스레드 풀이 고갈되고 전체 장애로 번진다. 이 장면을 이벤트 기반으로 바꾸면 — 주문은 접수만 하고 'OrderPlaced' 이벤트를 발행한다. 결제 서비스는 그 이벤트를 받아 자기 속도로 처리한다. 주문은 결제가 3초 걸리든 30초 걸리든 영향받지 않는다. 이게 이벤트 기반 아키텍처(event-driven architecture)의 약속이다.이 글이 다루는 질문: 비동기 이벤트가 푸는 문제는 무엇이고, 그 대가로 요구하는 것은 무엇인가. 푸는 문제는 '결합과 장애 전파'고, 대가는 '강한 일관성과 디버깅 단순함'이다.비..

    · 댓글