데보션앱 소개페이지 바로가기
로그인 선택

신고하기

CLOSE
신고사유 (대표 사유 1개)
상세내용 (선택)
0/200
  • 신고한 게시글은 더 이상 보이지 않습니다.
  • 이용약관과 운영정책에 따라 신고사유에 해당하는지 검토 후 조치됩니다.
  • 허위 신고인 경우, 신고자의 서비스 이용이 제한될 수 있으니 유의하시어 신중하게 신고해 주세요.
(이 회원이 작성한 모든 댓글과 커뮤니티 게시물이 보이지 않고, 알림도 오지 않습니다.)

미리보기

커뮤니티

      1,234

      badge 23.06.15

      글 등록

      카테고리를 선택해주세요.

      DEVOTEE를 활성화 시키면
      지금 작성한 커뮤니티 글에 대해 1개의 댓글을 달아줍니다.

      버튼을 누르면 글 수정 시 ChatGPT가 작성한 댓글이 수정됩니다.

      임시저장함에 저장되었습니다. 저장일시 : 2022.5.17 14:29:08

      임시저장함

      제목을 선택하시면 이어서 작성이 가능하며,
      최대 20건까지 저장합니다.
      컨텐츠 유형, 제목, 저장일시, 삭제로 이뤄진 임시저장 목록
      컨텐츠 유형 제목 저장일 삭제

      데보션 블로그 게재 요청

      CLOSE
      • *
      • *

      본인인증

      효율적인 데보션 서비스 이용 및
      고객님의 소중한 개인정보보호를 위해
      본인인증을 진행해주세요. 본인인증 미 진행 시 로그인이 제한됩니다.
      본인인증 실패

      본인인증 로그인에 실패하였습니다.
      회원이 아니시거나 본인인증 등록이
      완료되지 않은 사용자입니다.

      회원정보 연결

      [Kafka KRU] 2023 스터디 후기 및 카프카 성능 관련 이야기

      hongstar2311 23.11.19
      744 5 1
      DEVOTEE 요약
      KafaKRU - Kafka 한국 사용자 모임에서 진행된 스터디 반성 및 카프카 성능의 주요 개념을 공유했다. 스터디에서 실무 경험을 통한 카프카 개발, 운영 지식을 획득하고 카프카 성능 향상을 위해 배치 전송, buffer.memory, batch.size, linger.ms, acks 옵션, 압축 등의 주제를 다루었다. 주요 옵션들은 데이터 처리량과 지연 시간을 균형있게 관리하기 위한 것으로, 비즈니스 요구에 따라 적절한 튜닝이 필요하다고 권장하였다.
      DEVOTEE 추천 블로그

      안녕하세요!

      저는 5년차 백엔드 개발자인 김홍규 입니다.

      좋은 기회로 참여했던 KafaKRU - Kafka 한국 사용자 모임에서 주최한 스터디 회고 및 카프카 성능 관련 내용을 공유드려 보겠습니다.


      0. Intro - 계기

      저는 kafka 라는 기술에 관심은 많았으나 사용할 기회가 없던 찰나에 현재 진행하는 프로젝트 아키텍처 구성에 kafka 도입을 구상하였고 아래 스터디를 발견하였습니다.


      사실 저는 2022년도에 지원했지만 탈락의 고배를 마셨습니다.. 😂

      그래서 이번에는 취준의 기억을 되살려 상황의 절실함과 배움의 의지를 그득히 담아서 작성하였습니다.

      그 결과 아래와 같은 메일을 받게 되어 2023 kafka 스터디를 참여하게 되었습니다!!



      1. 스터디 회고

      스터디는 온/오프라인을 병행하여 진행되었고 주차별로 정해진 주제를 조별로 발표를 하며 진행되었습니다.

      저희 조는 각자 내용 정리 및 학습에 대한 의지를 높이고자 노션에 주차별 내용을 정리하는 계획을 세우고 스터디를 진행하였습니다.





      제가 속한 3조는 1주차 발표를 맡아 카프카 개요 및 카프카가 어떤 것인지에 대한 발표를 맡아 진행하였습니다.


      제가 이 스터디를 참여하면서 좋았던 부분은 아래 3가지 인것 같습니다.

      첫째, 실전 카프카 개발부터 운영까지 저자이신 고승범님의 실무 경험지식을 획득 할수 있다.

      둘째, 실습 환경 제공 및 함께 공부하여 외롭지 않다.

      셋째, 퀴즈 세션후 해설을 통해 카프카 지식을 탄탄히 할수 있다.


      특히 저는 카프카에 대한 초심자로서 발표후 Q&A 시간에 승범님의 실무 노하우가 담긴 답변 과 퀴즈후 해설 시간이 지식을 쌓는데 많은 도움이 되었습니다. 😀


      어떻게 카프카 프로듀서의 처리량을 늘릴 수 있을까?

      저희 조는 어떤 내용을 데보션에 공유할까 하다가, 스터디에서 공부했던 내용 중 카프카 성능 관련된 각종 내용들을 공유드리려 합니다.

      일반적으로 프로듀서의 처리량을 늘리기 위해 배치 전송을 권장하는데, 프로듀서에서는 배치 전송을 위한 다양한 옵션들을 제공하고 있습니다.

      이 옵션들을 조금 더 상세히 알아보도록 하겠습니다.

      buffer.memory

      프로듀서 애플리케이션에서 카프카 브로커 토픽의 각 파티션으로 메세지를 전송하기 전에 배치 전송을 위해 잠시 메세지를 모아두는 버퍼 메모리 공간 사이즈를 의미합니다.

      기본값은 32MB입니다.

      batch.size

      위의 buffer.memory가 전체 배치 영역을 저장하는 공간이라고 하면, batch.size는 토픽의 파티션 1개에 전송하기 전에 메세지를 모아두는 공간의 사이즈를 의미합니다.

      기본값은 16KB 입니다.

      linger.ms

      배치 전송을 위해 버퍼 메모리에서 대기하는 메세지들의 최대 대기시간을 설정하는 옵션입니다.

      단위는 밀리초(ms)이며, 기본값은 0입니다.

      buffer.memory, batch.size 옵션과 OR 조건으로 동작하며 세개 옵션 중 하나라도 만족하면 프로듀서는 브로커로 메세지를 전송하기 때문에

      기본값인 0으로 세팅되어 있으면 원하는 사이즈만큼 메세지가 쌓이기 전에 전송하여 처리량도 낮게 나오고, 압축률도 낮게 나올 수 있습니다.


      여기서 보통 글로만 읽으면 buffer.memory와 batch.size가 굉장히 헷갈립니다. 아래 그림을 통해 보면 더 쉽게 이해할 수 있습니다.


      위의 옵션들은 결국 한꺼번에 많은 양을 보내서 처리량을 높일지, 조금씩 보내서 지연을 최소화 할지를 결정할 수 있는 옵션입니다. 워크로드 상황에 따라 적절하게 튜닝을 하시는것을 권고 드립니다.


      acks

      acks 옵션은 프로듀서가 메시지를 보내고 그 메시지를 카프카가 잘 받았는지 확인을 할 것인지 또는 확인을 하지 않을 것인지를 결정하는 옵션입니다.

      [0, 1, all] 3가지 옵션이 있는데 오른쪽으로 갈 수록 메세지가 손실될 확률은 적지만 속도는 느립니다.

      Options

      처리 속도

      메세지 유실 발생 유무

      설명

      0

      상

      가능성 높음

      프로듀서에서 메세지를 보내고 브로커의 확인을 받지 않은 상태로 다음 메세지를 보냅니다.

      1

      중

      가능성 중간

      브로커의 확인을 받지만, leader까지만 확인하고 follower는 확인하지 않습니다.

      all

      하

      가능성 낮음

      브로커에서 follower의 복제까지 확인 후 응답합니다.

      메세지 손실을 적당히 타협할 수 있다면, acks=1을 설정하여 프로듀서의 처리량을 더 높일 수 있습니다.


      압축

      프로듀서의 처리량을 위해서 가장 쉽게 달성할 수 있는 방법 중 하나는 메세지를 압축해서 전달하는 것 입니다.

      압축을 통해 데이터 사이즈 자체를 줄임으로써 I/O비용과 Network 비용을 극단적으로 절약할 수 있고 이를 통해 자연스럽게 처리량 또한 증가시킬 수 있습니다.


      카프카에서는 gzip, snappy, lz4, zstd 등의 압축 포맷을 지원합니다. 아래 내용에 따라 워크로드 성격에 따라 압축 포맷을 취사선택 하면 됩니다.

      높은 압축률

      낮은 지연시간

      gzip

      lz4

      zstd

      snappy

      컨플루언트에서는 lz4를 압축 포맷으로 가장 추천하고 있으며, 많은 오버헤드 때문에 gzip 은 추천하지 않습니다.


      3. 비고 및 참고 자료

      본 문서는 KRU의 2023 KAFKA 온라인 스터디의 후원을 통해 작성되었습니다.


      [1] https://developer.confluent.io/tutorials/optimize-producer-throughput/confluent.html

      [2] https://www.confluent.io/blog/apache-kafka-message-compression/

      댓글 0

      DEVOTEE를 활성화 시키면
      지금 작성한 댓글에 AI가 댓글을 달아줍니다.

      hongstar2311 님의 최신 블로그

      더보기

      DEVOTEE 추천 블로그

      동영상 기고하기