inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

이력서에 Kafka 한 줄, 꼬리질문에서 막히신 적 있나요 (4주 스터디 모집)

55

공부
1

이력서에 Kafka 한 줄을 적어두고, 면접에서 그 줄 때문에 진땀 흘려본 적 있으신가요.

"비동기 처리를 위해 썼습니다"까지는 누구나 말합니다. 문제는 그다음입니다.
왜 RabbitMQ가 아니라 Kafka였나요. acks=all이면 유실이 없나요. 컨슈머를 늘리면 처리량은 그만큼 올라가나요.
세 질문 중 하나에서 말문이 막히면, 그날 면접은 거기서 끝납니다.

카프카는 혼자 넘기가 유독 어려운 주제입니다.
책은 사두면 중간부터 설정 레퍼런스가 되고, 영상은 토픽과 파티션과 컨슈머 그룹 이름만 훑고 끝납니다.
다 보고 나면 용어는 아는데, 정작 "내 서비스에서 뭘 지키려고 이 설정을 골랐나"는 여전히 말하지 못합니다.

이유는 하나라고 봅니다. 문제 없이 배웠기 때문입니다.
유실과 중복과 순서는 개념으로 외우면 남지 않습니다. 무엇을 포기할지 직접 정해봐야 남습니다.

아래 두 상황에 바로 답하실 수 있는지 한번 보세요.

하나. "결제는 됐다고 나오는데, 주문 처리가 안 됐다고 합니다."
정산 테이블에는 처리 행이 남아 있고, 결제사에는 그 건이 없습니다. 카프카 로그에는 레코드가 그대로 있는데 컨슈머 그룹의 오프셋은 이미 그 뒤로 넘어가 있습니다. 이 결제는 어디서 끊겼을까요.

둘. "주문 내역이 없다는데, 결제 완료 알림은 먼저 왔어요."
주문 화면에는 결제 완료가 먼저 찍히고 주문 생성이 3분 뒤에 찍혔습니다. 보내는 쪽은 주문 생성을 먼저 보냈고 두 전송 모두 성공했습니다. 브로커와 컨슈머 오류도 없습니다. 순서는 왜 뒤집혔을까요.

둘 다 현업에서 반복되는 유형이고, 과제 전형과 기술 면접에도 그대로 나옵니다.

이런 사고를 유형별로 모아서 4주 동안 같이 팝니다.
1주차에는 카프카를 큐가 아니라 로그로 다시 세우고, 2주차에는 메시지 한 건이 디스크에 닿아 복제되는 경로를 따라갑니다.
3주차에는 유실과 중복이 어디서 생기는지 구간을 갈라 좁히고, 4주차에는 순서와 확장을 놓고 설정을 결정하는 기준을 세웁니다.

진행은 이렇게 합니다.
매주 목요일 저녁 8시부터 2시간, 4주. 4명에서 5명씩 그룹으로 나눠 토론하고, 매주 사회자를 돌아가며 맡습니다.
답을 먼저 드리지 않습니다. 각자 가설을 세우고 근거로 좁혀 갑니다.

이런 분께 맞습니다.
카프카를 쓰고는 있는데 설정의 이유를 말하지 못하는 분. 곧 팀에 메시징을 들여야 하는데 파티션 수와 키를 무슨 근거로 정할지 막막한 분. 이번에 카프카를 끝내고 다음 주제로 넘어가고 싶은 분.

반대로 이미 로그 세그먼트와 복제 프로토콜 레벨까지 익숙한 분께는 얕을 수 있습니다.

자세한 커리큘럼과 신청은 아래에서 확인하실 수 있습니다.
teamgrit.co/grit-deep-dive/kafka

답변 0