경험 기반 구체화
Kafka를 직접 써본 경험은 학교 분산 시스템 수업에서 로그 수집 파이프라인을 만드는 실습이었습니다. 여러 서비스에서 발생하는 이벤트 로그를 단일 Kafka 토픽으로 수집하고, Consumer가 이를 읽어 DB에 집계하는 구조를 구현했습니다. 이 실습에서 가장 인상적이었던 것은 Producer와 Consumer의 속도가 다를 때 메시지 큐가 버퍼 역할을 한다는 것인데, Consumer가 일시적으로 멈춰도 데이터 유실 없이 재처리가 가능하다는 것을 직접 확인했습니다. 또 partition을 여러 개 쓰면 Consumer Group이 병렬로 처리할 수 있어 처리량이 선형으로 늘어난다는 것도 배웠습니다.
토픽 설계에서 메시지 종류별로 토픽을 분리해야 할지 합칠지를 결정하는 것이 생각보다 중요한 설계 결정이라는 것도 이 실습에서 처음 고민했습니다.