LabHub

마이크로서비스 아키텍처 · 데이터 일관성(사가·아웃박스) · 퀴즈

퀴즈: 사가와 아웃박스

LabHub 에서 이어서 보기

문항 6개. 정답과 해설은 풀어 본 뒤에 보여 드립니다.

  1. 이중 쓰기 문제의 정확한 정의는?

    1. 같은 데이터를 두 테이블에 저장하는 것
    2. 두 서비스가 같은 행을 갱신하는 것
    3. 복제 지연으로 옛 값을 읽는 것
    4. DB 저장과 브로커 발행이 원자적이지 않아 한쪽만 성공할 수 있는 것
  2. 아웃박스 패턴이 보장하는 것과 보장하지 못하는 것은?

    1. 유실은 없애지만 중복은 남는다
    2. 유실도 중복도 없앤다
    3. 중복은 없애지만 유실은 남는다
    4. 둘 다 남는다
  3. outbox 테이블에서 `aggregate_id` 를 파티션 키로 쓰는 이유는?

    1. 같은 집합체의 행이 한 노드에 모여 조회가 빨라져서
    2. 같은 집합체의 이벤트가 같은 파티션으로 가 순서가 보장되기 때문
    3. 같은 키의 페이로드가 함께 압축돼 저장 공간을 아껴서
    4. 같은 키의 이벤트가 하나로 합쳐져 중복이 사라져서
  4. 사가의 보상 트랜잭션이 '롤백'과 다른 점은?

    1. 이미 일어난 일을 되돌리는 게 아니라 상쇄하는 새 행동을 앞으로 실행한다
    2. 같은 자원을 잠그지 않아 롤백보다 훨씬 빠르게 끝난다
    3. DB 가 트랜잭션 로그를 되감아 대신 처리해 준다
    4. 이미 커밋된 데이터만 다루므로 실패할 수 없다
  5. 사가 단계가 다섯 개 이상으로 늘어날 때 권장되는 형태는?

    1. 코레오그래피 — 각 서비스가 이벤트를 듣고 알아서 다음 행동
    2. 2PC — 다섯 단계를 하나의 분산 트랜잭션으로 묶기
    3. 오케스트레이션 — 중앙 조정자가 순서를 지시
    4. 동기 호출 체인 — 한 서비스가 다음 서비스를 차례로 호출
  6. 2PC 를 마이크로서비스에서 잘 쓰지 않는 주된 이유는?

    1. 구현이 어렵고 지원하는 라이브러리가 거의 없어서
    2. 코디네이터 장애 시 참여자가 잠긴 채 대기해 가용성이 떨어져서
    3. 서비스마다 프로토콜이 달라 표준이 없어서
    4. 커밋 왕복이 두 번이라 단순히 느려서