728x90
반응형
SMALL
메시지 순서 보장뿐 아니라 중복 없이 정확히 한 번만 처리되는(Exactly-once) 이벤트 시스템을 구성하기 위해 다음과 같은 설정과 전략을 적용했습니다.먼저 프로듀서 측에서는 acks=all, enable.idempotence=true, transactional.id를 설정해 중복 전송 방지와 트랜잭션 컨텍스트를 유지했습니다.컨슈머 측에서는 enable.auto.commit=false로 수동 커밋을 적용하고, isolation.level=read_committed로 트랜잭션이 커밋된 메시지만 읽도록 설정했습니다.또한 메시지를 읽은 후 DB 작업과 offset 커밋을 동일 트랜잭션 내에서 처리하여, 중간에 실패가 발생해도 중복 소비나 손실이 없도록 구성했습니다.외부 시스템(DB 등)과의 종단 간 정합성을 유지하기 위해 Outbox Pattern도 병행하여, Kafka 메시지 발행이 DB 상태 변경과 원자적으로 처리되도록 했습니다
728x90
반응형
SMALL
'면접 준비' 카테고리의 다른 글
[설계 면접] 주문 생성 중 결제가 실패했을 때, 주문 상태와 결제 상태를 어떻게 동기화하나요? (0) | 2025.05.27 |
---|---|
[설계 면접] Spring Cloud Gateway나 Config Server가 죽으면 어떻게 되나요? (0) | 2025.05.27 |
[설계 면접] 만약 Filebeat, ELK중 하나라도 장애가 발생한다면 어떻게 처리할 수 있나요? (0) | 2025.05.27 |
[설계 면접] Redis가 다운되면 서비스는 어떻게 동작해야 하나요? (1) | 2025.05.27 |
[설계 면접] 트래픽이 갑자기 몰리는 경우 어떻게 처리할 수 있도록 설계했나요? (1) | 2025.05.27 |