피드로 돌아가기
Java LLD: Designing a Kafka-Like Message Queue for Machine Coding Interviews
Dev.toDev.to
Backend

Append-only Log 구조 기반의 확장 가능한 Message Queue 설계

Java LLD: Designing a Kafka-Like Message Queue for Machine Coding Interviews

Vishal Aggarwal2026년 4월 23일2intermediate

Context

표준 Queue의 파괴적 읽기 방식으로 인한 다수 Consumer Group의 데이터 공유 불가 문제 발생. Producer와 Consumer의 강한 결합으로 인한 Pub-Sub 원칙 위배 및 확장성 저해 상황 분석.

Technical Solution

  • Immutable Append-only Log 구조 채택을 통한 메시지 영속성 확보 및 데이터 재사용 가능 설계
  • ReentrantLock 기반의 Atomic Append 구현으로 멀티 스레드 환경 내 Topic 데이터 일관성 유지
  • ConsumerGroup별 독립적인 OffsetManager 도입을 통한 개별 컨슈머의 처리 속도 제어 및 진행 상태 관리
  • Topic, Message, Subscriber 등 엔티티 분리를 통한 Producer와 Consumer 간의 완전한 Decoupling 구현
  • subList 기반의 Offset 조회 방식을 통한 특정 시점부터의 메시지 Replay 기능 제공

- 메시지 큐 설계 시 제거형 Queue 대신 로그 기반 저장소 검토 - 멀티 테넌시 환경에서 Consumer별 독립적인 Offset 관리 체계 구축 - Pub-Sub 모델 구현 시 Producer가 Consumer의 상태를 알지 못하도록 인터페이스 격리

원문 읽기