Kafka 컨슈머(카프카 토픽에서 메시지를 읽어 처리하는 애플리케이션) 로그를 들여다보다가 이상한 패턴을 본 적이 있다. 컨슈머가 멀쩡히 떠 있는데 브로커(Kafka 클러스터의 메시지 저장·중계 서버)가 갑자기 해당 컨슈머를 죽은 것으로 판단하고 파티션을 다른 인스턴스로 재분배하는 현상이다. 이걸 리밸런스(rebalance)라고 부르는데, 원인을 추적해보면 대부분 컨슈머 내부에서 외부 API나 DB 호출이 오래 걸려 하트비트(heartbeat, 컨슈머가 "나 살아있다"고 브로커에 보내는 주기적 신호)를 제때 못 보낸 경우다. 이 문제를 정면으로 다룬 오픈소스 라이브러리가 WKafka이고, 이번 글에서 다루는 내용은 해당 프로젝트의 엔지니어링 시리즈 10일차 글을 정리한 것이다.기술 개요 & 등장 배경일반..