목록전체 글 (78)
CheerUp_Cheers
카프카 내부 메커니즘, 몰라도 되지만 알면 트러블슈팅이 편해지는 것들6장 서두에 있는 말이 정직하다. "개발에는 필요 없다. 트러블슈팅과 실행 방식 이해에 도움이 된다." 딱 맞는 말이라서, 이번 장은 요약하지 않고 실제로 필요할 때 다시 펼쳐볼 수 있게 좀 촘촘하게 정리해본다. 이 장이 다루는 영역은 네 가지다.카프카 컨트롤러카프카에서 복제가 작동하는 방식카프카가 프로듀서와 컨슈머의 요청을 처리하는 방식카프카가 저장을 처리하는 방식 (파일 형식, 인덱스 등)6.1 클러스터 멤버십브로커 목록, 즉 "지금 이 클러스터에 어떤 브로커들이 있는가"는 (주키퍼 기반 구조에서는) 아파치 주키퍼가 관리한다. 각 브로커는 설정 파일에 지정된 값이나 자동 생성된 고유 식별자를 가지고 주키퍼에 Ephemeral 노드 형..
코드로 카프카 관리하기, kafka-topics.sh 말고1~4장까지는 순전히 책으로만 개념을 잡는 단계였는데, 이 장을 정리할 때쯤 마침 회사에서 실제로 카프카를 프로덕션에 붙이는 작업이 시작됐다. 그러다 보니 여태까지는 토픽을 만들거나 확인할 때 습관적으로 kafka-topics.sh 같은 커맨드라인 툴을 썼는데, 5장을 보니 애플리케이션 코드 안에서 이런 관리 작업을 그대로 할 수 있는 AdminClient라는 API가 따로 있었다. 배포 스크립트나 헬스체크 로직에 토픽 존재 확인 같은 걸 끼워 넣고 싶을 때 유용해 보인다. 관리 기능 API토픽 목록 조회/생성/삭제클러스터 상세 정보 확인ACL 관리설정변경모든 게 비동기고, 모든 게 최종적 일관성이다AdminClient의 메서드를 호출하면 클러스터..
카프카 컨슈머, 메시지를 소비하는 주체프로듀서 장을 읽고 나니 컨슈머 쪽은 좀 만만해 보였는데, 막상 읽어보니 만만한 게 아니었다. 리밸런스, 오프셋 커밋, 폴링 루프 종료까지 어디 하나 대충 넘어가면 중복 처리나 메시지 유실로 바로 이어지는 지점들이다.컨슈머 그룹이 존재하는 이유카프카 컨슈머는 대부분 컨슈머 그룹의 일원으로 동작한다. 파티션 수와 컨슈머 수가 같으면 가장 효율적이고, 컨슈머가 파티션보다 많으면 몇몇은 그냥 놀게 되고, 반대로 파티션이 컨슈머보다 많으면 처리가 밀리기 시작한다. 그래서 나중에 컨슈머를 늘려서 확장할 여지를 남겨두려면 처음부터 파티션 수를 좀 넉넉하게 잡아두는 게 맞다는 이야기가 나온다.개수파티션 = 컨슈머 : 효과적파티션 파티션 > 컨슈머 : 지연컨슈머가 지연처리가 긴 ..
카프카 프로듀서, 그냥 send() 한 줄이 아니었다프로듀서를 실무에서 쓸 때는 대개 send() 한 줄로 끝나는 것처럼 보인다. 근데 이 장을 읽어보니 그 한 줄 뒤에서 벌어지는 일이 생각보다 많았다. 3장은 프로듀서의 내부 흐름과, 신뢰성·성능에 영향을 주는 설정값들을 다룬다.메시지 한 통이 브로커까지 가는 길책이 그려주는 전송 과정은 대략 이렇다.1. 먼저 ProducerRecord를 만든다. 여기엔 토픽과 밸류가 필수이고, 만들어진 레코드는 시리얼라이저를 거쳐 바이트 배열로 직렬화된다.2. 그다음 파티션이 정해지는데, 명시적으로 지정하지 않으면 키값을 기준으로 결정된다.3. 이렇게 만들어진 레코드는 곧바로 전송되는 게 아니라 같은 파티션으로 가는 레코드들끼리 배치로 묶여서 브로커에 전달된다.4. ..
카프카 설치 및 설정하기1장이 "카프카가 왜 필요한가"를 설득하는 챕터였다면, 2장은 실용서로써의 내용이 이어진다. 주키퍼 설치부터 브로커 설정값, 하드웨어 스펙, OS 튜닝까지의 내용을 다룬다. 주키퍼부터 세워야 한다카프카 이야기를 하다 보면 자꾸 주키퍼가 먼저 나온다. 브로커, 토픽, 파티션 같은 메타데이터를 저장하는 역할을 주키퍼가 맡고 있어서 그렇다. (실무에서는 Kraft로 적용하기로 하였기에, 참고만 한다) 일단 이 책의 예제 버전 기준으로는 주키퍼 설치가 먼저다. 주키퍼는 혼자 두는 경우가 거의 없다. 여러 대를 묶어서 앙상블을 구성하는데, 여기서 재밌는 규칙이 하나 있다. 요청에 응답하려면 과반수 이상의 서버가 응답해야 한다는 것. 그래서 앙상블은 항상 홀수로 구성하는 게 권장된다. 5대짜..
카프카, 실무에 적용카프카의 실용성, 확장성에 대해서 회사에 계속된 어필의 결과로 일부 로직을 이벤트 기반으로 처리 할 수 있는 기회가 생겼고, 조만간 카프카를 실무에 세팅하고 적용할 예정이다. 근데 막상 그때 가서 "왜 하필 카프카야?", "RabbitMQ를 쓰면 안되는거야?" 라는 질문을 받으면 "다른 빅테크 기업에서 사용하니까", "성능이 좋다고 해서" 같은 궁색한 답밖에 못 할 것 같아서, 개념을 좀더 제대로 잡아두려고 "카프카 핵심가이드"를 잡았다. 아직 실무에 발 담그기 전이니만큼, 책 정리하듯 훑어보기로 했다. 1장은 카프카라는 게 왜 등장했는지, 그리고 카프카를 이루는 기본 개념들을 훑는 챕터다.발행/구독, 별거 아닌 것 같지만발행/구독(pub/sub) 메시지 전달의 핵심은 사실 단순하다...