패스잇
백엔드 개발 · 기초

카프카 토픽의 '파티션(Partition)' 개념과 그 역할에 대해 설명해주세요. 왜 파티션이 필요한가요?

힌트 · 파티션은 토픽을 여러 개의 로그로 분할하여 병렬 처리와 데이터 분산을 가능하게 합니다. 이를 통해 처리량을 늘리고 장애 내성을 확보할 수 있습니다.

병렬 처리확장성분산 처리순서 보장오프셋

모범답안

카프카 토픽의 파티션은 토픽을 여러 개의 작은 조각으로 나눈 것이라고 생각하시면 됩니다. 각 파티션은 순서대로 정렬된 메시지들의 로그 역할을 합니다.

파티션이 필요한 이유는 크게 두 가지입니다. 첫째, 병렬 처리 능력을 향상시켜 전체적인 처리량을 늘릴 수 있습니다. 여러 컨슈머가 각 파티션을 병렬적으로 처리할 수 있기 때문입니다. 둘째, 데이터를 분산 저장하여 확장성을 확보하고, 일부 파티션에 장애가 발생하더라도 다른 파티션은 정상적으로 동작하여 장애 내성을 높일 수 있습니다.

다만, 중요한 점은 특정 파티션 내에서는 메시지 순서가 보장되지만, 여러 파티션에 걸쳐서는 순서가 보장되지 않는다는 것입니다. 따라서 순서가 중요한 메시지는 동일한 파티션에 저장되도록 키를 잘 설정해야 합니다. 각 메시지는 파티션 내에서 고유한 오프셋을 가지며, 이 오프셋을 통해 메시지를 식별하고 순서를 관리합니다.

읽었다면, 이제 직접 답해볼 차례예요

패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.

함께 보는 메시지 큐 (Kafka) 면접 질문

← 메시지 큐 (Kafka) 면접 질문 전체 보기