티스토리 뷰

728x90

  • 커넥트 : 데이터 스트리밍 프레임워크
  • 커넥터 : 프레임워크에서 사용하는 플러그인들
    • source connector : producer 역할
    • sync connector : consumer 역할

https://bagbokman.tistory.com/m/8

https://techblog.pet-friends.co.kr/데이터-싱크를-위한-msk-connect-도입-feat-cdc-뽀개기-b1f341b495f

 

 

책 내용

목표: 가상의 자전거 회사의 데이터를 다양한 용도로 활용할 수 있도록 데이터 스트리밍 시스템 구축

요구사항: 빅뱅방식 말고 데이터를 점진적으로 이동

  1. 기본적인 소스 커넥터 구축: 애플리케이션 로그파일을 카프카 토픽으로 옮기기
  2. SQLite 컨플루언트 커넥터를 사용하여 싱크 커넥터 구축
  3. 최신형 센서를 위한 맞춤 소스커넥터 만들기
    1. 데이터 사일로 문제 해결 필요: 데이터를 데이터 소유자 외에도 누구나 사용할 수 있어야 한다
    2. 데이터 사일로는 서로 분리되어 기업의 다른 부서에서 액세스할 수 없는 데이터 스토리지 및 관리 시스템을 의미합니다. 데이터가 개별 시스템 또는 데이터베이스에 유지되어 서로 통신 또는 정보 공유가 불가능한 경우에 발생합니다.
    3. 컨슘 실패 시 데이터를 복구할 수 있어야 한다
    4. (--from-beginning 옵션 사용, 카프카 토픽 리플레이 기능 사용)
  4. 요구사항에 따라 달라지는 설계데이터 처리 방식 설계를 위한 질문감사로그 얼럿 추세 크리티컬 얼럿
    시스템에서 메시지를 잃어도 괜찮은가? Y N N
    어떤 방식으로든 데이터를 그룹화해야 하는가? N Y Y
    특정 순서로 데이터를 전달해야 하는가? N N N
    특정 항목의 마지막 값만 필요한가? 아니면 해당 항목의 이력이 중요한가? N N Y
    독립된 컨슈머 지원 필요? Y Y N
  5. 카프카 솔루션을 설계하려면 먼저 데이터를 이해해야 한다

https://devocean.sk.com/blog/techBoardDetail.do?ID=164096

 

 

Apache Avro

https://avro.apache.org/

https://p-bear.tistory.com/48#google_vignette

Avro란 Apache에서 만든 프레임워크로 데이터 직렬화 기능을 제공한다.

JSON과 비슷한 형식이지만, 스키마가 존재한다.

Avro = schema + binary(json value)

binary 데이터이면 mongoDB의 BSON과 비슷한가?

  • GPT에 의하면
    1. 공통점
    • 바이너리 형식
      • JSON처럼 사람이 읽을 수 있는 텍스트 형식이 아니라, 바이너리 데이터로 변환하여 크기를 줄이고 처리 속도를 높이는 데 최적화되어 있습니다.
      • 이로 인해 JSON보다 데이터 크기가 작고, 직렬화/역직렬화 속도가 빠릅니다.
    • 스키마 기반 데이터 관리
      • 두 포맷 모두 데이터 구조를 명확히 정의할 수 있습니다. BSON은 MongoDB의 데이터 타입을 지원하며, Avro는 스키마를 명시적으로 작성하여 데이터 구조를 관리합니다.

    2. 주요 차이점특징 Apache Avro MongoDB BSON
    목적 Kafka와 같은 메시징 시스템에서 데이터를 직렬화 MongoDB에서 데이터 저장 및 쿼리를 위해 설계
    스키마 관리 외부 스키마(Avro Schema Registry 등) 필요 스키마리스(schema-less) 지원
    데이터 타입 JSON과 유사한 타입 + 추가적인 고유 타입 MongoDB의 특화된 타입(Date, ObjectId 등)
    데이터 크기 작고 효율적 (압축 최적화) 약간 더 크며, 데이터에 타입 정보를 포함
    스키마 진화 지원 지원 (Backward/Forward Compatibility) 스키마 진화는 MongoDB 레벨에서 유연하게 처리
    사용 환경 분산 시스템 및 메시징 시스템 MongoDB 데이터베이스
    이진 데이터 지원 별도의 타입 (e.g., bytes) 기본적으로 이진 데이터 타입(BinData) 지원

    3. 스키마 관리 차이
    • Apache Avro명시적 스키마를 사용합니다.
      • 데이터를 직렬화할 때 스키마를 기반으로 데이터 구조를 정의합니다.
      • 데이터 스키마는 Schema Registry나 Kafka 메시지 헤더에 저장되며, 데이터 소비자가 스키마를 참조해야 데이터를 읽을 수 있습니다.
      • 이 방식은 데이터 호환성을 보장하며, 대규모 분산 시스템에서 유용합니다.
    • BSON은 MongoDB의 특성에 맞게 스키마리스로 설계되었습니다.
      • MongoDB에서 데이터를 저장할 때 명시적인 스키마가 없어도 유연하게 사용할 수 있습니다.
      • 하지만, MongoDB를 운영하며 스키마를 강제하고 싶을 경우, Schema Validation을 설정해야 합니다.

    4. 데이터 타입
    • Apache Avro는 JSON과 비슷한 데이터 타입(e.g., string, int, float)을 지원하지만, BSON처럼 MongoDB 고유의 타입(ObjectId, Date, BinData 등)을 지원하지는 않습니다.
    • BSON은 MongoDB에 특화된 타입들이 포함되어 있어, MongoDB 내에서 데이터 처리와 쿼리를 최적화할 수 있습니다.

    5. 데이터 크기와 성능
    • Apache Avro는 크기를 줄이기 위해 데이터 타입 정보를 따로 저장하지 않고, 스키마를 기반으로 직렬화합니다. 이로 인해 데이터 크기가 더 작고 성능이 뛰어납니다.
    • BSON은 각 필드에 데이터 타입 정보를 포함하기 때문에, Avro보다는 조금 더 큰 크기를 가지지만, MongoDB에서 데이터를 효율적으로 쿼리하고 저장하기 위해 설계되었습니다.

    6. 사용 사례
    • Apache Avro
      • 분산 시스템에서 고속 데이터 전송, 스키마 관리가 필요한 경우 적합합니다.
      • Kafka, Hadoop, Spark와 같은 빅데이터 환경에서 주로 사용됩니다.
    • MongoDB BSON
      • MongoDB에서 데이터를 저장하거나 쿼리하는 데 최적화된 포맷입니다.
      • MongoDB 내부의 기본 데이터 형식으로 동작하며, 다른 시스템으로 데이터를 전송하거나 통합할 때는 JSON 또는 Avro 등으로 변환이 필요할 수 있습니다.

    요약즉, MongoDB의 BSON은 Avro와 비슷하지만, Avro는 메시징 및 데이터 교환에 중점을 두고 설계되었기 때문에 사용 목적과 환경에 따라 차이가 있습니다.
  • Apache Avro와 BSON은 모두 바이너리 포맷으로 크기와 성능을 최적화하지만, Apache Avro는 메시징 및 분산 시스템에 적합한 형식이고, BSON은 MongoDB 내부에서 효율적으로 데이터를 저장하고 쿼리하기 위한 형식입니다.
  • 네, Apache AvroMongoDB의 BSON은 유사한 점이 있지만, 완전히 같지는 않습니다. 둘 다 바이너리 포맷으로 데이터를 직렬화하는 방식이지만, 그 목적과 동작 방식에서 차이가 있습니다. 아래에서 두 포맷을 비교해 보겠습니다.

우리회사는 apache avro 안쓰던데?

→ 스프링에서 제공하는 시리얼라이저/디시리얼라이저를 사용

Apache Kafka는 레코드 값과 키를 직렬화 및 역직렬화하기 위한 고급 API를 제공합니다. 일부 내장 구현과 함께 org.apache.kafka.common.serialization.Serializer<T>및 추상화와 함께 제공됩니다. 한편, 또는 구성 속성을 사용하여 직렬화기 및 역직렬화기 클래스를 지정할 수 있습니다. 다음 예는 이를 수행하는 방법을 보여줍니다.org.apache.kafka.common.serialization.Deserializer<T>ProducerConsumer

https://docs.spring.io/spring-kafka/reference/kafka/serdes.html

728x90
댓글
300x250
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함