Apache Avro

Apache Avro는 데이터 직렬화(Data Serialization) 시스템이다. 주로 대용량 데이터 처리와 분산 시스템에서 데이터 교환 및 저장을 목적으로 사용된다.

주요 특징

  • JSON 스키마 정의: 데이터의 구조(스키마)를 JSON 형식으로 정의한다. 이로 인해 스키마 작성 및 가독성이 용이하다.
  • 바이너리 데이터 포맷: 스키마와 별개로 실제 데이터는 압축된 바이너리 형식으로 인코딩되어 저장되므로 공간 효율성과 전송 속도가 높다.
  • 스키마 내장: 데이터 파일 자체에 스키마가 함께 저장된다. 파일을 읽는 프로그램은 내장된 스키마를 확인하여 데이터를 해석하므로, 별도의 코드 생성(Code Generation) 과정 없이 동적 언어 환경에서 데이터를 즉시 처리할 수 있다.
  • 스키마 진화(Schema Evolution): 데이터 구조가 변경(필드 추가, 삭제 등)되어도 이전 버전의 데이터나 새로운 버전의 데이터를 호환성 있게 읽고 쓸 수 있는 규칙을 제공한다.
  • RPC 지원: 클라이언트와 서버 간의 원격 프로시저 호출(Remote Procedure Call) 프로토콜을 지원한다.

데이터 직렬화 포맷 비교

데이터 직렬화에 자주 사용되는 Apache Avro, Protocol Buffers, JSON의 비교는 다음과 같다.

특징Apache AvroProtocol Buffers (Protobuf)JSON
초기 개발사Apache Software Foundation (Hadoop 프로젝트)GoogleDouglas Crockford (ECMA Standard)
포맷 형식바이너리바이너리텍스트
스키마 언어JSON자체 IDL (Interface Definition Language)없음 (선택적 JSON Schema 사용 가능)
코드 생성(Code Generation)선택적 (런타임 동적 해석 가능)필수 (사전 컴파일 필요)불필요
스키마 저장 방식데이터 파일의 헤더에 스키마 포함데이터와 스키마 분리 (미포함)스키마 불필요 (데이터에 키값 포함)
주요 사용 사례빅데이터 에코시스템(Hadoop), Apache Kafka 메세징마이크로서비스 통신 (gRPC)웹 API, 일반 데이터 교환 및 설정 파일

출처

  • Apache Software Foundation, “Apache Avro™ 1.11.1 Documentation”.
  • Gwen Shapira, Todd Palino, Rajini Sivaram, Kriti Pramod, Kafka: The Definitive Guide, O’Reilly Media. (Chapter on Data Serialization and schema registry).

Entities