백엔드 개발 · 중급
Kafka의 로그 컴팩션(Log Compaction)은 무엇이며, 어떤 경우에 유용하게 사용될 수 있는지 구체적인 예시와 함께 설명해 주세요.
힌트 · 로그 컴팩션은 동일한 키를 가진 메시지 중 가장 최신 값만 보존하는 기능입니다. 데이터베이스 변경 로그(CDC)나 사용자 프로필과 같이 최신 상태가 중요한 경우에 유용합니다.
로그 컴팩션키-값 쌍최신 값 유지토픽 설정데이터베이스 변경 이력
모범답안
Kafka의 로그 컴팩션은 특정 키에 대해 가장 최신 메시지만 유지하는 기능입니다. Kafka 토픽은 기본적으로 모든 메시지를 시간 순서대로 저장하지만, 로그 컴팩션을 활성화하면 동일한 키를 가진 이전 메시지는 삭제되고 최신 메시지만 남게 됩니다.
예를 들어, 사용자 프로필 정보를 Kafka 토픽에 저장한다고 가정해 봅시다. 사용자 A의 이름, 주소, 전화번호가 여러 번 변경될 수 있습니다. 로그 컴팩션을 사용하면 사용자 A의 최종 프로필 정보만 유지되므로, 불필요한 데이터 저장 공간을 줄이고 최신 정보만 빠르게 조회할 수 있습니다.
또 다른 예시는 데이터베이스 변경 이력(CDC)입니다. 데이터베이스의 특정 테이블에 대한 변경 사항을 Kafka로 스트리밍할 때, 로그 컴팩션을 사용하면 특정 레코드의 최종 상태만 유지할 수 있습니다. 이는 데이터베이스 복원이나 감사 목적으로 유용하게 사용될 수 있습니다. 로그 컴팩션은 토픽 설정에서 활성화할 수 있습니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.
함께 보는 메시지 큐 (Kafka) 면접 질문
- Kafka가 메시지의 내구성(Durability)을 보장하기 위해 사용하는 메커니즘들을 설명해 주세요.
- Kafka의 ISR(In-Sync Replicas) 개념은 무엇이며, 이것이 데이터 손실 방지 및 고가용성 유지에 어떻게 기여하는지 설명해 주세요.
- Kafka 프로듀서가 메시지를 브로커로 전송할 때 발생할 수 있는 At-Most-Once, At-Least-Once, Exactly-Once 딜리버리 시맨틱스 각각의 특징과 구현 방법을 설명해 주세요.
- 대용량 실시간 데이터 처리 시 Kafka Streams 애플리케이션의 상태 저장(stateful processing) 전략과 장애 복구(fault tolerance) 방안에 대해 설명하고, RocksDB와 같은 상태 저장소의 성능 최적화 기법을 포함하여 설계 방안을 제시하시오.
- Kafka에서 End-to-End Exactly-Once Semantics를 보장하기 위한 프로듀서, 브로커, 컨슈머 측면에서의 접근 방식과 각 구성 요소의 역할을 설명하고, 이 과정에서 발생할 수 있는 잠재적 이슈와 해결 방안을 논하시오.
- Kafka Connect 클러스터를 프로덕션 환경에서 고가용성(High Availability) 및 확장성(Scalability)을 보장하도록 설계하고 운영하기 위한 방안을 설명하시오. 특히 Source/Sink 커넥터의 장애 발생 시 데이터 유실 없이 복구하는 전략에 대해 구체적으로 제시하시오.