
개요 분산 환경에서 메시지를 주고받을 때는 메시지 중복이나 유실 같은 문제가 늘 발생 가능하다. 장애나 네트워크 이슈로 인해 메시지를 ‘한 번만’ 처리하는 것이 쉽지 않기 때문이다. Kafka는 0.11 버전부터 Idempotent Producer(멱등성 프로듀서)와 Transactions(트랜잭션) 기능을 제공해 정확히 한 번 메시지를 처리할 수 있는 기반을 마련했다. 또한 Kafka Streams를 사용하면 이러한 기능을 간단히 활용해 End-to-end Exactly-once에 가까운 처리 흐름을 만들 수 있다. 이 글에서는 Exactly-once Semantics의 개념과 내부 원리를 살펴본 뒤, 운영 과정에서 발생할 수 있는 엣지 케이스와 그 방지 방법을 간단히 살펴보자.내용Exactly-o..