행궁동 데이터 엔지니어

반응형

데이터 파이프라인 구축 시 자주 보이는 데이터(메시지) 전달 개념 3종류에 대해 간단히 정리해봤습니다.


Types of messaging semantics (의미론적 메시지 타입 3가지)

  • 1. At-most-once(최대 한번): 최대 한 번만 전송한다 (메시지를 한번만 전송하고 상대가 받았는지 받지 못했는지는 확인하지 않음)
  • 2. At-least-once(최소 한번): 메시지를 전송하고 최소한 상대방이 하나의 메시지는 받았는지 확인한다.
  • 3. Exatly-once(정확히 한번): 메시지를 정확히 한번만 전송한다.

출처: https://ably.com/blog/achieving-exactly-once-message-processing-with-ably

 

1. At-most-once(최대 한번)

  • 메시지를 최대 한 번만 전송한다. (한 번만 전송한다)
  • 보내는 쪽에서 메시지를 보낸 후 받는 사람이 받았는지 안 받았는지는 확인하지 않는다.
  • 장점: 받는 사람이 받았는지 확인하는 작업이 없어 빠르다(오버헤드 없음), 구현이 간단하다.
  • 단점: 받는 사람이 메시지(데이터)를 받았는지 확인하지 않기에 데이터가 누락될 수 있다.
  • 사용하면 좋은 경우: 일부 데이터가 누락되어도 상관없는 Log 데이터

 

2. At-least-once(최소 한번)

  • 메시지를 전송하고 최소한 하나의 메시지는 받았는지 확인한다.
  • 보내는 쪽에서 메시지를 전달 후 받는 쪽에서 메시지를 잘 받았다는 답변이 올 때까지 메시지를 계속 보낸다.
  • 장점: 받는 사람에게 보내는 메시지가 누락될 일이 없다. 구현이 비교적 간단하다 (ACK 메시지를 받는 방식으로 구현, Exactly-once 보다 상대적으로 간단하다는 의미).
  • 단점: 받는 사람에게 중복된 메시지가 전달 될 수 있다.
  • 사용하면 좋은 경우: 데이터의 누락 없이 모든 데이터를 전송해야 하는 경우, 중복된 값을 저장해도 상관없거나 다음 프로세스에서 중복된 값을 처리할 수 있는 경우

 

3. Exactly-once(정확히 한번)

  • 메시지를 정확히 한 번만 전송한다.
  • 보내는 쪽에서 받는 사람에게 메시지를 정확히 1번만 전송한다.
  • 장점: 누락과 중복 없이 메시지를 전달 할 수 있다.
  • 단점: 구현이 복잡하다.
  • 사용하면 좋은 경우: 비즈니스 적으로 정확히 한 번만 데이터가 전송되어야 하는 경우, 예를 들어 온라인 쇼핑몰의 상품 주문 데이터 같은 경우 누락과 중복 없이 정확히 1번만 전송되어야 한다.

 

1. Ably블로그, [Achieving exactly-once delivery with Ably], https://ably.com/blog/achieving-exactly-once-message-processing-with-abl
2. 인호의 IT 잡동사니, [At-least-once Deleivery], https://helloino.tistory.com/110

 

반응형

이 글을 공유합시다

facebook twitter kakaoTalk kakaostory naver band