[루프팩] volume 6. acks=all이 무적일 줄 알았다면 경기도 오산
잃어버린 이벤트결제가 끝나 확정된 주문을 이벤트로 Kafka에 보내고, 다른 앱이 그 이벤트를 받아 "이 상품이 몇 개 팔렸다"는 구매 활동을 저장하도록 했습니다.이때 주문 확정이 DB에 commit된 뒤에 이벤트를 보내는데, Kafka가 이벤트를 잃어버리면 다시 보낼 방법이 없습니다.해당 주문 기록은 영영 사라지게 되겠죠.. 결국 producer가 받는 'broker에게 전송 완료' 라는 확인 메세지(ack)가 해당 이벤트가 존재했다는 유일한 기록이 되겠네요. 그래서 acks를 가장 강한 all로 둬봤습니다. (찾아보니 kafka-clients 3.0부터는 기본값이 이미 all이더라고요) 이후 내구성을 테스트해보기 위해 broker 3대로 장애를 직접 만들어 봤습니다. 어라? 근데 결과가 예상과 달랐습..