데이터 전달 보장 방법론
개요
데이터 전달 보장 방법론은 엔드포인트부터 엔드포인트까지 데이터를 전달하는 추상화된 방법론을 의미한다. REST API, Message Queue 등 어떤 기술을 사용하든 적용 가능한 일반적인 개념이다.
1. At Most Once Delivery (최대 한 번)
개념 및 동작 방식
Fire and Forget 방식으로, 프로듀서가 메시지를 전송하고 완료한다. 컨슈머의 수신 여부와 관계없이 동작하므로, 결과적으로 컨슈머는 메시지를 받지 못할 수 있다.
메시지 유실 원인
| 원인 | 설명 |
|---|---|
| 네트워크 문제 | 네트워크는 신뢰할 수 없는 매체이므로 패킷/메시지가 네트워크 상에서 유실될 수 있음 |
| 애플리케이션 문제 | 프로듀서에서 Exception 발생, 컨슈머가 메시지를 받았지만 정상 처리에 실패 |
장단점
| 장점 | 단점 |
|---|---|
| 구조가 간단 (보내고 끝) | 메시지 유실 가능 |
| 개발이 쉬움 (복잡한 로직 불필요) | 중요한 데이터에는 부적합 |
| 대용량 처리 용이 (성능 오버헤드 적음) |
2. At Least Once Delivery (최소 한 번)
개념 및 동작 방식
프로듀서가 컨슈머의 Ack를 받을 때까지 상태를 기록하고 계속 재전송한다. 결과적으로 같은 메시지가 중복으로 전송될 수 있다.
장단점
| 장점 | 단점 |
|---|---|
| 메시지 전달 보장 | 중복 수신 가능 |
| 비교적 쉬운 구현 (상태 관리만 필요) | 순서 보장 없음 |
| 효과 대비 개발 비용 적절 | 멱등성 구현 필수 |
3. Exactly Once Delivery (정확히 한 번)
개념 및 동작 방식
정확하게 한 번만 전달한다. 가장 이상적이지만 구현이 어려운 방식이다.
장단점
| 장점 | 단점 |
|---|---|
| 메시지 누락 없음 | 구현 난이도 매우 높음 (복잡한 로직, 컴포넌트 간 조율) |
| 메시지 중복 수신 없음 | 시스템 복잡도 증가 (3개 컴포넌트 관리) |
| 완벽한 데이터 일관성 | 성능 오버헤드 (정확성 보장 위한 추가 처리) |
세 가지 전달 보장 방법 비교
| 구분 | At Most Once | At Least Once | Exactly Once |
|---|---|---|---|
| 개념 | 최대 한 번만 전달 | 최소 한 번 이상 전달 | 정확하게 한 번만 전달 |
| 신뢰성 | 낮음 | 중간 | 높음 |
| 구현 난이도 | 쉬움 | 중간 | 어려움 |
| 성능 | 높음 | 중간 | 낮음 |
| 메시지 유실 | 가능 | 없음 | 없음 |
| 메시지 중복 | 없음 | 가능 | 없음 |
참고 자료
Last updated on