LabHub

마이크로서비스 아키텍처 · 비동기 통신과 이벤트 · 퀴즈

퀴즈: 비동기와 이벤트

LabHub 에서 이어서 보기

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

  1. 가용성 99.9% 인 서비스 네 개를 동기로 직렬 호출하면 전체 가용성은?

    1. 약 99.6%
    2. 99.9% 그대로
    3. 약 99.99%
    4. 100%
  2. `SendNotification` 대신 `OrderCreated` 로 이름 붙이는 것이 결합을 줄이는 이유는?

    1. 이벤트 이름이 짧아져 페이로드 크기가 줄기 때문
    2. 사실형 이름이 직렬화 속도를 높여 주기 때문
    3. 발행자가 수신자를 알 필요가 없어져 소비자가 늘어도 발행자가 바뀌지 않기 때문
    4. 이름만으로 이벤트 순서가 정해져 보장이 쉬워지기 때문
  3. 이벤트 페이로드 설계에서 소비자가 발행자의 DB 를 되짚어 조회하게 두면?

    1. 페이로드가 작아져 네트워크 사용량이 줄어든다
    2. 발행자가 늘 최신 상태를 주므로 순서가 보장된다
    3. 같은 조회를 반복해도 결과가 같아 멱등성이 생긴다
    4. 서비스 간 결합이 되살아나고 발행자 장애가 소비자로 전파된다
  4. 같은 주문의 `OrderCreated` 와 `OrderPaid` 순서를 보장하려면?

    1. 파티션을 1개로 줄인다
    2. 타임스탬프로 정렬한다
    3. 소비자를 1개만 둔다
    4. 집합체 ID(주문 ID)를 파티션 키로 쓴다
  5. 비동기 전환의 가장 큰 제품 차원 비용은?

    1. 서버 비용 — 브로커와 소비자를 따로 띄워야 함
    2. 코드량 — 재시도와 중복 제거 코드가 늘어남
    3. 최종 일관성 — 사용자가 아직 반영되지 않은 상태를 볼 수 있음
    4. 로그 양 — 발행과 소비 양쪽에 기록이 남음