개발자 라이프/카프카
-
[Kafka Connect] Confluent S3 Sink Connector는 왜 OOM에 취약한가?개발자 라이프/카프카 2021. 3. 21. 23:35
들어가며 카프카 커넥터는 카프카와 데이터 소스 사이의 파이프라인을 몇 가지 설정이 포함된 HTTP 요청으로 만들어집니다(참고). 그 중 S3 Sink Connector(이하 S3 싱크 커넥터)는 카프카의 토픽에 적재된 메시지들을 AWS S3 버켓에 저장해주는 커넥터입니다. S3는 데이터 백업, 영구 저장 등으로 자주 사용되므로, S3 싱크 커넥터는 메시지를 영구 저장하지 않는 카프카 입장에선 쉽게 고려됩니다. 하지만 S3 싱크 커넥터를 적용하는 과정에서 Out Of Memory Error가 종종 발생하는 것을 볼 수 있습니다. 이 글은 S3 싱크 커넥터가 메시지를 카프카로부터 가져와서 S3OutputStream을 통해 저장하기까지의 과정을 살펴보면서 S3 싱크 커넥터가 왜 OOM에 취약한 이유를 살펴봅니..
-
[Kafka 개발] kafka-connect-datagen 커넥터로 테스트 데이터 생성하기개발자 라이프/카프카 2021. 1. 24. 23:09
0. 들어가며 우리는 카프카 토픽을 컨슘(구독)하여 다양한 처리를 할 수 있습니다. 하지만 초기 개발 과정에는 토픽에 메시지가 적재되어 있지 않을 수도 있고, 또한 일시적으로 적재되어있다고 하더라도 메시지가 retention 기간에 따라 삭제/압축되기 때문에 지속적인 개발/테스트가 어려울 수 있습니다. 이번 글은 이러한 케이스에서 유용하게 사용할 수 있는 kafka-connect-dategen 커넥터에 대해 소개합니다. 1. kafka-connect-datagen 커넥터 kafka-connect-datagen(이하 datagen) 커넥터는 사용자가 설정한 명세에 따라 데이터를 생성하여 타겟 토픽에 데이터를 밀어 넣어 주는 커넥터입니다. 그렇기 때문에 토픽을 구독하여 처리하는 컨슈머, 스트림즈, 싱크 커넥..
-
[Kafka 운영] Request log 살펴보기개발자 라이프/카프카 2020. 11. 29. 23:11
들어가며 카프카는 아키텍처 중앙에 위치하여 다양한 클라이언트들의 요청을 받습니다. 그렇기 때문에 간혹 클라이언트에서 잘못된 요청을 보내는 경우가 발생할 수 있습니다. 예를 들면, 스키마가 정의되지 않은 토픽에 대해 프로듀서가 기존과 다른 임의의 메시지 포맷으로 보내게 된다면 컨슈머는 이 메시지를 처리하지 못하게 됩니다. 이와 같이 잘못된 요청이 발생하게 되면 어떤 클라이언트에서 보낸 요청인지 확인할 필요가 있습니다. 그리고 다행히도 카프카는 브로커가 받는 요청에 대해 별도의 로그 파일로 저장할 수 있습니다. 이번 글은 카프카 브로커가 받은 요청에 대해 저장하는 로그인 request log에 대해 살펴봅니다. 이 글 내용은 카프카 한국 사용자 모임에서 진행한 제4회 버츄얼 밋업 내용에서 영감을 받아 작성했..
-
[Kafka 개발] 카프카 프로젝트에 컨트리뷰트 하는 방법개발자 라이프/카프카 2020. 9. 4. 11:09
들어가며 카프카의 공식 문서 중 How to contribute에 대한 (의역에 가까운) 번역 본입니다. 오역이 있을 수 있으니 틀린 부분 혹은 틀린 것 같은 부분은 댓글로 남겨주시길 바랍니다. 또한 작성일 기준으로 이후 변경된 부분이 있을 수 있습니다. 작성일과 최근 수정일을 참고해 주시길 바랍니다. 컨트리뷰트 하는 방법 사소한 코드 정리부터 커다란 기능 추가까지 모든 기여를 환영합니다. 자바 혹은 스칼라에 대해 몰라도 이 프로젝트에 기여할 수 있습니다. 가장 중요한 부분은 클라이언트 부분입니다. 우리-앞으로의 우리는 카프카 진영을 이야기합니다-는 좋은 품질의 코드와 문서를 가지는 여러 언어 클라이언트를 원합니다. 이건 카프카에 관한 툴들을 구성하는 것만큼 카프카 프로젝트에서 매우 중요한 부분입니다. ..
-
[Kafka 운영] 1MB 이상의 메시지를 보낼 때 고려해볼만한 설정들개발자 라이프/카프카 2020. 8. 7. 00:42
들어가며 카프카는 기본적으로 1MB 이상의 큰 메시지를 고려하고 만들어진 메시지 시스템이 아닙니다. 하지만 그럼에도 1MB 이상의 메시지로 파이프라인을 구성해야 할 때가 있습니다. 예로 이미지 혹은 정말 큰 JSON 메시지로 파이프라인 구성할 때가 있습니다. 이때, 프로듀서, 브로커, 컨슈머는 그 파이프라인 성격에 맞게 직접적 혹은 간접적으로 영향을 받는 설정들을 조정해줘야 합니다. 이번 글은 각 카프카 컴포넌트들이 1MB 이상의 메시지를 보낼 때 고려해야 하는 설정들을 정리했습니다. 참고로 아래 설정들을 전부 테스트해보지 못했습니다. 몇 가지 설정은 주관적인 판단에 의해 명시되어 있습니다. 혹여나 잘못되거나 부족한 부분은 댓글로 피드백 부탁드립니다. :) 1. 프로듀서 측 1.1. 직접적인 영향을 미치..
-
[Kafka] 카프카 매니저를 대체할 수 있을까?! AKHQ (Apache Kafka HQ)개발자 라이프/카프카 2020. 7. 16. 00:30
들어가며 카프카는 저장하는 데이터 리소스에 대한 blindness가 높아, 사용하다 보면 "괜찮은 운영 모니터링 툴이 없을까?" 하는 생각이 들곤 합니다. 그리고 그나마 가장 알려진 모니터링 툴이 카프카 매니저(현 CMAK)였습니다. 이번 글은 이 카프카 매니저를 대체할 수 있을만한(?) 카프카 운영 모니터링 툴인 AKHQ에 대해서 소개합니다. AKHQ 란? AKHQ(Apache Kafka HQ)는 오픈소스로써, micronaut 프레임워크를 기반으로 구성된 자바 웹 애플리케이션입니다. 현재(20.07.16) 1.4k 개의 star 수를 기록하고 있으며 다양한 기여를 통해 활발한 개발이 이뤄지고 있습니다. AKHQ의 주요 기능 AKHQ의 주요 기능들에 대해서 살펴보겠습니다. AKHQ는 카프카 1.0 버전..
-
[Kafka 101] 카프카 보안 - 인증과 인가 (Kafka Security - Authentication & Authorization)개발자 라이프/카프카 2020. 7. 5. 17:23
들어가며 기본적으로 카프카는 어느 누구나 메시지를 쓸 수 있고, 또 어느 누구나 메시지를 읽어갈 수 있습니다. 하지만 이러한 환경은 개발 환경이나 혹은 극도로 폐쇄된 환경이 아니라면 적합하지 않습니다. 이번 글은 카프카에 누가 요청을 보내는지, 나아가 그 요청자의 권한에 따라 요청 범위를 적절하게 제한하는 카프카 인증과 인가에 대해 살펴봅니다. 참고로 이번 글은 살펴보는 글이기 때문에 자세한 설정 및 구성 방법 등에 대해서 설명하지 않습니다. 해당 내용은 공식 문서를 참고하시길 바랍니다. 카프카 인증 카프카가 인증을 처리하는 방식은 SSL 방식과 SASL 방식으로 크게 2가지 방식이 있습니다. SSL 방식 : 인증서를 이용한 인증 방식 SASL 방식 : SASL 프로토콜을 이용한 인증 방식 SSL 방식은..
-
[Kafka 101] KSQL (KSqlDB)개발자 라이프/카프카 2020. 6. 21. 21:07
들어가며 카프카는 브로커를 중심으로 다양한 데이터 파이프라인이 구성될 수 있습니다. 그중 이전 글에서 다루었던 카프카 스트림즈는 토픽 간 Sub/Pub을 통해 브로커 내부 파이프라인을 구축할 수 있도록 합니다. 이번 KSQL 또한 카프카 스트림즈처럼 브로커 내부 파이프라인을 구축하는 데에 특화된 Confluent 솔루션입니다. 이번 글에서는 KSQL 이 무엇인지 살펴보고, 구성과 활용에 대해 간단히 소개하겠습니다. KSQL 카프카는 내부 토픽을 Sub하여 분석하거나, Sub 한 토픽을 정제하여 다시 토픽으로 Pub 할 수 있습니다. 그렇다면 이러한 파이프라인을 구축할 때, 어떤 방법을 고려할 수 있을까요? 카프카에서는 다음 3가지 방법을 고려할 수 있습니다. Kafka Client를 이용한 Consume..