본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.
https://bit.ly/4hTSJNB


I. 학습 인증샷 4장 이상 포함

1. 공부시작: 날짜, 시각 다 나오도록

2. 공부 종료: 날짜 시각 다 나오도록

공부 종료

3. 1개 클립 수강 (강의장 목록 캡쳐, 수강화면이 보이지 않도록) 1장

clip29 아니 또 튜닝..

4. 학습 인증샷 1장(필기 촬영이나 작업물 촬영)

Rebalancing등으로 극단적으로 모든 네트워크 자원 사용으로 운영에 위협을 받지 않도록 쿼터를 줘서 보호한다.


II. 학습 후기 700자 이상 (공백 제외)

....역시 튜닝이다... 이번엔 프로듀서

요약

 1.  데이터 포맷 및 직렬화/역직렬화

 

Deserializer (kafka 3.6.2 API)

An interface for converting bytes to objects. A class that implements this interface is expected to have a constructor with no parameters. Implement ClusterResourceListener to receive cluster metadata once it's available. Please see the class documentation

kafka.apache.org

 

 

Serializer (kafka 3.6.2 API)

An interface for converting objects to bytes. A class that implements this interface is expected to have a constructor with no parameter. Implement ClusterResourceListener to receive cluster metadata once it's available. Please see the class documentation

kafka.apache.org

 

 

2 . AVRO 권장

  • HDFS에 Persistent Data를 저장하기 위해 널리 사용되는 컴팩트 바이너리 형식에 대한 Data Serialization Standard
  • 카프카 외에도 하둡에서도 널리 사용되므로 지원 도구가 많음
  • SON과 직접 맵핑
  • 매우 콤팩트한 Format을 가지고 있으며, 매우 빠름
  • 다양한 프로그래밍 언어에 대한 뛰어난 바인딩
    • 이벤트 데이터 작업을 더 쉽게 만드는 자바 객체 생성 가능
  • 데이터 파일을 읽거나 쓰거나 RPC 프로토콜을 사용하거나 구현하는 데 코드 생성이 필요하지 않음
    • 코드 생성은 선택적 최적화 방안
  • 순수 JSON으로 정의된 풍부하고 확장 가능한 스키마 언어 존재.
  • 시간이 지남에 따라 데이터가 발전할 수 있도록 최고의 호환성 개념을 가지고 있음
  • https://www.confluent.io/blog/avro-kafka-data/
 

Why Avro for Kafka Data? | Confluent

Confluent is building the foundational platform for data in motion so any organization can innovate and win in a digital-first world.

www.confluent.io

3. 중요 설정 파라미터

  • `batch.size`: 메시지를 묶어서 처리하는 크기.
  • `linger.ms`: 메시지 전송 전 대기 시간.
  • `buffer.memory`: 프로듀서가 사용할 수 있는 메모리 크기.
  • `acks`: 메시지 내구성(Durability)에 영향을 미치는 옵션.
  • 2

4. 파티셔닝 전략

  • 기본적으로 키의 해시값을 기반으로 파티션에 데이터를 분배.
  • 일반적으로는 대부분 상황에서  맞음
  • 특정 상황(기본 전략에서 불균형이 이루어지는 )에서는 커스텀 파티셔닝 전략이 필요할 수 있음.
    • 최대한 분배가 되도록 파티셔닝 전략

5. 압축 및 처리량 최적화

  • 메시지 압축을 통해 네트워크 효율성을 높임 (gzip, snappy, zstd 등 지원).
  • Throughput(처리량), Latency(지연시간), Durability(내구성) 등 서비스 목표에 따른 최적화 값을 제시해준다.
    (그래 이걸 원했다..정답을 주세요)
  •  

---

  • 튜닝 2번째 시간이다. (아무리 생각해도..에바다...해보지도 않고 튜닝...)
  • 데이터 포맷과 직렬화/역직렬화**에 대한 상세내용을 복습한다
  • 실제 제공하는 데이터 포맷이 많다.
  •  AVRO!
    • AVRO가 빠르고 가볍다는 점,
    • 그리고 컴팩트 표준을 지향하고 있다는 부분
    • 다양한 언어와의 호환성이 뛰어나다는 점
    • 사실상  Kafka를 사용할 때 AVRO를 꼭 써라라는 분위기의 설명이다.
    • 설정과 튜닝시 중요한 파라미터를 다룬 부분은 어느 정도 도움이 된다.
      • 튜닝에 대한 부분은 아무리 생각해도 이상하지만 그래도 어느 정도의 기본 값을 설명하는 부분에서
        실전에서 바로 적용할 수 있을 것 같다.
      • (하지만 이 수업은  한번도 카프카 명령어를 쳐본적이 없다.)
      • 예를 들어, `batch.size`와 `linger.ms`를 조정하면 처리량을 크게 개선할 수 있다는 점은 알겠지만,
        실제 환경에서 바로 적용해 보고 싶다는 생각이 들었다. (하지만 해볼 수 없다.) 이게 수업에 집중력이 떨어지는 요인이다.
      • 언제까지 이론을..
      • 여튼 각 설정이 시스템 성능에 어떤 영향을 미치는지를 이해하는 것도 초보자에게는 중요하니까..
    • 강의에서는 기본 해시 기반 전략이 대부분의 경우 적합하다고 설명했지만, 데이터가 특정 키에 집중되는 경우 불균형 문제가 발생할 수 있으, 이때는 커스텀 전략을 설계해야 한다고 한다.
      • 이런 경우 실제로 어떻게 커스텀 전략을 설계하는지 예시가 더 필요하다
      • 또한 불균형 문제가 생기는 상황이나 시나리오도 몇가지 알려주면 좋을텐데
    • 여러 압축 방식(gzip, snappy, zstd 등)을 소개했는데, 각각의 방식이 성능에 미치는 영향을 비교했으면 어땠을까?
      • 예를 들어, 네트워크 대역폭이 제한된 환경에서는 어떤 압축 방식이 가장 효율적인가

여튼..길면서도 어렵다..

블로그 이미지

감동맨

rkaehdaos의 블로그

,