카프카29 기본기있는-카프카깡패 (5) 카프카 브로커 설치하기 계속되는 브로커 설치 시 오류로 인해... 우선 스겜 해보겠다는 마음으로 confluent의 카프카 이미지를 사용하기로 했다...구성도아래 처럼 docker 안에서 zk-net이라는 bridge 네트워크를 만들고 주키퍼 3대 + 브로커 1대 구성으로 테스트 해볼 것이다.📦 Host Machine (Docker)│├── 🐳 Container: zookeeper-1│ - 내부 포트: 2181│ - 외부 포트: 2181│ - ZOO_MY_ID: 1│ - 서버 ID: server.1│├── 🐳 Container: zookeeper-2│ - 내부 포트: 2181│ - 외부 포트: 2182│ - ZOO_MY_ID: 2│ - 서버 ID: server.2│.. DevOps/Kafka 2025. 4. 7. 기본기있는-카프카깡패 (3) 1.3 왜 카프카인가? 카프카가 왜 좋은지에 대해 알아보자.1.3.1 다중 프로듀서여러 프론트엔드 시스템 (프로듀서) 로부터 데이터를 수집하고 일관성을 유지하는 게 가능.1.3.2 다중 컨슈머다수의 카프카 컨슈머는 컨슈머 그룹의 일원으로 작동하면서 하나의 스트림을 여럿이서 나눠 읽을 수 있음.1.3.3 디스크 기반 보존만약 컨슈머가 느린 처리 속도 혹은 트래픽 폭주로 인해 뒤처질 경우에도 데이터 유실의 위험이 없음. 프로듀서 쪽, 컨슈머 쪽을 잠시 정지하더라도 메시지는 카프카 안에 남아있게 되어 컨슈머가 다시 시작되면 작업을 멈춘 지점에서부터 유실 없이 데이터 처리 가능.1.3.4 확장성가용성에 영향을 주지 않으면서 클러스터 확장 가능.1.3.5 고성능1.3.6 플랫폼 기능 DevOps/Kafka 2025. 3. 31. 기본기있는-카프카깡패 (2) 1.2 카프카 입문 카프카는 메시지 발행/구독 시스템1.2.1 메시지와 배치메시지: 데이터의 기본 단위키: 메시지를 저장할 파티션을 결정하기 위해 사용됨.카프카는 효율성을 위해 메시지를 배치 단위로 저장함.배치 크기가 커질수록 시간당 처리되는 메시지 수는 늘어나지만,각각의 메시지가 전달되는 데 걸리는 시간은 늘어남.1.2.2 스키마가장 간단한 건 JSON, XML단점: 타입 처리 기능, 스키마 버전 간의 호환성 유지 기능이 떨어짐Avro조밀한 직렬화 제공메시지 본체와 스키마를 분리하기 때문에 스키마 변경 시에도 코드 생성이 필요 없음강력한 데이터 파이핑스키마 변경에 따른 상/하위 호환성 제공1.2.3 토픽과 파티션토픽: 메시지 분류 단위DB에서는 테이블과 유사, 파일시스템에서는 폴더와 유사파티션커밋로그 관점에서 하나의 로그.. DevOps/Kafka 2025. 3. 31. 기본기있는-카프카깡패 (1) 카프카 핵심 가이드 진도표 드디어 Orelly - 카프카 핵심 가이드 책이 왔다.물론 책이 없어서 공부를 못한 것은 아니지만...ㅎ한번쯤 꼼꼼하게 고시공부하듯 공부해보고 싶었기 때문에 책을 통해 정리해보려한다.개인적으로 궁금한 공부내용은 되고만다-카프카깡패 시리즈에서 알아보고,기본기있는-카프카깡패 시리즈로 매일 한 소단원씩만... 오렐리 책 정리는 해보자...✅ 1주차: 2025.03.27(목) ~ 2025.04.02(수)날짜학습 내용03/27 (목)1.1 발행/구독 메시지 전달03/28 (금)1.2 카프카 입문03/29 (토)1.3 왜 카프카인가?03/30 (일)1.4 데이터 생태계03/31 (월)1.5 카프카의 기원04/01 (화)1.6 카프카 시작하기04/02 (수)2.1 환경 설정✅ 2주차: 2025.04.03(목) ~ 2.. DevOps/Kafka 2025. 3. 27. 되고만다-카프카깡패 (1) CDC란? 올해 들고 굉장히 마음이 헤이해졌음을 느낀다. 카프카가 분명 정말 하고 싶었었는데 행복한 돼지가 되고픈 마음과 겹쳐 공부를 자꾸만 놓고 있었다. 이럴 순 없어! 프로덕션 환경에서 운영자 관점에서 Kafka를 이해해보고, 신규 Kafka 구축도 올해 꼭! 진행해보기 위해 25년 올해 4월까지는 현재 회사 운영 환경에서의 구조에서 잘 모르고 어려운 부분들을 잘 골라내서 self 공부해보려 한다.Change Data Capture(CDC)란 무엇인가데이터가 저장된 상태에서 발생하는 변경 사항을 실시간 또는 근실시간으로 포착해 다른 시스템에 전달하는 기법을 Change Data Capture(이하 CDC)라고 한다.CDC를 활용하면 기존 시스템에 큰 수정 없이 DB 로그 또는 트랜잭션 기록을 근간으로 데이터를 .. DevOps/Kafka 2025. 3. 26. [CCAAK] Broker 개념 노트 v1.0 ✅ Kafka Broker 이해하기Kafka broker는 Apache Kafka 클러스터 내에서 데이터를 수신, 저장, 전송하는 서버이다. Kafka 생태계의 핵심 컴퓨팅 노드이며, 메시지를 불변한 순서로 저장하는 topic partition (로그 파일) 을 갖고 있음.📌 Broker의 기본Broker: 여러 개의 partition에 데이터를 저장하며, producer와 consumer 간 메시지 전달을 중계하는 서버임. Broker ID: 각 Kafka broker는 고유한 정수형 ID로 식별됨. Bootstrap Server: 모든 Kafka broker는 bootstrap server로 동작함. 클러스터 전체에 접근하기 위해서는 하나의 broker에만 연결하면 됨. Cluster: 여러 .. DevOps/Kafka 2025. 3. 24. Java-Gradle Kafka 환경 설정하기 sdk 리스트: https://learn.conduktor.io/kafka/kafka-sdk-list/IntelliJ Idea에서 New Project 통해 Java > Gradle 선택 및 jdk 잡아주기프로젝트 하위에 새로운 module을 다음과 같이 만들어준다.maven repository로 간다: https://mvnrepository.com/artifact/org.apache.kafka가장 먼저 kafka-clients가 눈에 띌 것가장 최신 버전을 클릭해주기.거기서 Gradle을 클릭하여 복사해준 후, 그대로 dependencies 하위에 붙여넣어준다.// https://mvnrepository.com/artifact/org.apache.kafka/kafka-clientsimplementati.. DevOps/Kafka 2025. 1. 22. Mac OS에서 쓸 수 있는 kafka docker-compose 구성 (arm 64) Docker Compose를 이용한 Kafka 클러스터 구성Kafka는 분산 메시징 시스템으로, 데이터 스트리밍 처리에 널리 사용된다. 이 글에서는 Docker Compose를 활용하여 Zookeeper와 Kafka 브로커 3개로 구성된 로컬 환경을 구축하는 방법을 다룬다. 또한, Kafka UI 및 관리 도구를 포함하여 운영 환경을 시뮬레이션할 수 있는 구성 방법도 설명한다.1. Kafka 클러스터 개요Kafka 클러스터는 일반적으로 다음과 같은 구성 요소를 포함한다.Zookeeper: Kafka 브로커들의 메타데이터를 관리하며 클러스터의 상태를 조율한다.Kafka 브로커: 메시지를 저장하고 클라이언트로부터의 요청을 처리하는 핵심 요소이다. 브로커는 여러 개로 구성될 수 있으며, 데이터의 분산 및 복제.. DevOps/Kafka 2024. 11. 21. [카프카] 트랜잭션 프로듀서와 트랜잭션 컨슈머 도입오늘도 돌아온 지우.지우는 욕심쟁이라 피카츄 백만볼트, 잠만보 휴식, 피카츄 상처 치료, 피카츄 몸통박치기를 한큐에 끝내고 싶은데, 만약 한턴에 4동작을 하는 게 실패한다면, 위험해 질 수 있어, 그냥 모두 없었던 일로 하고 싶다. 트랜잭션 프로듀서카프카에서 트랜잭션은 다수의 파티션에 데이터를 저장할 경우 모든 데이터에 대한 동일한 원자성(atomic)을 만족시키기 위해 사용된다. 원자성을 만족시킨다는 의미는 다수의 데이터를 동일 트랜잭션으로 묶음으로써 전체 데이터를 처리하거나 전체 데이터를 처리하지 않도록 하는 것을 의미한다.트랜잭션 프로듀서는 데이터를 파티션에 저장할 뿐 아니라, 트랜잭션의 시작과 끝을 표현하기 위해 트랜잭션 레코드(커밋)를 한 개 더 보낸다. 이를테면 이렇게, 명령이 다 끝났다.. DevOps/Kafka 2024. 9. 17. [카프카] 멱등성(idempotence) 프로듀서란? 도입지우(프로듀서)가 하는 말을 포켓몬(컨슈머)이 알아들을 수 없어서,배틀필드에서 차례대로 시리(브로커)가 포켓몬어로 번역해준다고 하자.호기롭게 외쳤고, 시리도 들었지만 시리가 통신 오류로 "네 알겠습니다 주인님"을 못했다.지우가 중꺾마 정신으로 다시 "포켓몬의 백만볼트"를 외치니, 시리는 이제 "포켓몬의 백만볼트"를 두번 삐까츄에게 전달해주고,삐까츄는 그렇게 탈진해버렸다는 슬픈 이야기...그렇다면, 어떻게 해야 삐까츄에게 같은 명령이 여러 번 전달되지 않게 할 수 있을까?프로듀서의 전달방식프로듀서가 브로커에게 명령을 전달하는 방식에는 아래의 세 가지가 있다.at least once: 적어도 한번 이상 전달 (기본 프로듀서의 동작 방식이며, 데이터가 유실되지 않지만, 이 경우 위 사례처럼 두 번이상 적재.. DevOps/Kafka 2024. 9. 17. [카프카 퀴즈] 카프카 cli 퀴즈 토픽을 생성하기 위해서는 반드시 kafka-topics.sh를 사용해야 한다 (O/X)X, 브로커 옵션에 따라 프로듀서 컨슈머 요청에 따라서도 가능kafka-topics.sh를 사용하여 토픽을 생성하면 복제 개수는 항상 1로 설정된다 (O/X)X, 옵션 (rf), 브로커 옵션에 따라kafka-console-producer.sh를 사용하여 메시지 키와 메시지 값이 담긴 레코드를 전송할 수 있다 (O/X)O, 콘솔 프로듀서와 parse key 사용하기kafka-console-consumer.sh를 사용하면 오프셋을 확인할 수 있다 (O/X)X,메시지키와 메시지 밸류 확인가능 DevOps/Kafka 2024. 7. 2. [카프카 프로그래밍] 그 외 커맨드 라인 툴, 카프카 토픽을 만드는 두가지 방법, 카프카 브로커와 로컬 커맨드 라인 툴 버전을 맞춰야 하는 이유 그 외 커맨드 라인 툴kafka-producer-perf-test.sh: Kafka 생산자의 퍼포먼스를 측정하는 스크립트 (유사 스크립트: kafka-consumer-perf-test.sh)kafka-reassign-partitions.sh: 리더 파티션과 팔로워 파티션의 위치를 재배치하여 리더 위치를 적절하게 배분하는 스크립트kafka-delete-records.sh: 특정 토픽에서 레코드를 삭제하는 스크립트kafka-dump-log.sh: Kafka 로그 세그먼트를 덤프하여 로그의 내용을 확인하는 스크립트카프카 토픽을 만드는 두가지 방법컨슈머 또는 프로듀서가 브로커에 데이터를 요청할때커맨드 라인 툴로 명시적으로 토픽을 생성할 때대부분은 커맨드 라인으로 명시적으로 만드는 게 유지보수하기 좋음.카프카 브.. DevOps/Kafka 2024. 7. 2. [카프카 프로그래밍] kafka-consumer-groups.sh ⭐️ kafka-console-groups.sh 용도hello-group 이름의 컨슈머 그룹으로 생성된 컨슈머로 hello.kafka 토픽의 데이터를 가져갔다.이를 이 명령어로 확인하는 것.컨슈머 그룹은 따로 생성하는 명령을 날리지 않고 컨슈머를 동작할 때 컨슈머 그룹이름을 지정하면 새로 생생된다.컨슈머 랙? 마지막 레코드의 오프셋과 가져간 레코드의 오프셋의 차오프셋 리셋kafka-console-groups.sh 에서 오프셋 리셋이 가장 큰 기능옵션--to-earliest: 가장 처음 오프셋으로 리셋--to-latest: 가장 마지막 오프셋으로 리셋--to-current: 현시점 기준 오프셋으로 리셋--to-datetime:특정 일시로--shift-by 현재 컨슈머 오프셋에서 앞뒤로 옮겨서컨슈머 그룹 리스트 .. DevOps/Kafka 2024. 7. 2. [카프카 프로그래밍] kafka-console-producer.sh, kafka-console-consumer.sh kafka-console-producer.sh 용도토픽에 데이터 넣기용key.separator선언해야 레코드키 전송메시지 키가 동일한 경우에는 동일한 파티션null인 경우는 라운드로빈bin/kafka-console-producer.sh --bootstrap-server my_kafka:9092 --topic hello.kafka명령어 치면 꺽쇠나옴따로 이렇게 parse key 안주면 메시지 값은 hello 로 설정되지만 메시지 키는 null이고 라운드로빈으로 설정되는것임.bin/kafka-console-producer.sh --bootstrap-server my_kafka:9092 --topic hello.kafka --property "parse.key=true" --property "key.separ.. DevOps/Kafka 2024. 7. 1. [카프카 프로그래밍] kafka-configs.sh kafka-configs.sh는?토픽의 일부옵션을 설정하기 위한 명령어 min.insync.replicas 옵션을 토픽별로 설정 가능.원래 describe 했을 때 configs min.insync.replics 설정 아무것도 없던 hello.kafka2 topicbin/kafka-configs.sh --bootstrap-server my_kafka:9092 --alter --add-config min.insync.replicas=2 --topic hello.kafka2[참고] min.insync.replicasmin.insync.replicas는 ack응답을 보내기 위한 리더가 확인해야할 최소 리플리케이션의 수를 지정하는 브로커 관련 옵션이다.아무리 메세지 무손실을 위해 acks=all의 옵션을 프로듀.. DevOps/Kafka 2024. 6. 30. 이전 1 2 다음