Apache Kafka
카프카 프로세서(Processor) API의 기본 개념
Beekei
2025. 2. 24. 11:35
반응형
프로세서(Processor) API란?
프로세서(Processor) API는 카프카 스트림즈(Kafka Streams) 라이브러리에서 제공하는 강력한 API 중 하나로, 데이터를 스트림 처리할 때 저수준(하위 계층)에서 직접 처리할 수 있도록 해주는 API입니다.
프로세서 API는 스트림즈DSL(Streams DSL)보다 투박한 코드를 가지지만 토폴로지를 기준으로 데이터를 처리한다는 관점에서는 동일한 역할을 하지만 프로세서 API는 KStream, KTable, GlobalKTable의 개념을 사용하지 않으며, 추가적인 상세 로직의 구현이 필요하다면 프로세서 API를 활용할 수 있습니다.
프로세서 API에서는 스트림 데이터를 직접 다루기 때문에 개발자가 데이터의 흐름을 완전히 사용자 정의(커스텀) 할 수 있도록 지원하고 이를 통해 데이터 변환, 필터링, 집계, 분기(branching) 등의 작업을 더욱 세밀하게 조정할 수 있습니다.
프로세서 API의 장점과 단점
✅ 장점
- 완전한 유연성 제공
- 스트림즈DSL에서 불가능한 복잡한 데이터 흐름을 구현할 수 있음.
- 예: 특정 조건에 따라 데이터를 여러 개의 토픽으로 분기.
- 사용자 정의 프로세서 구현 가능
- Processor 인터페이스를 직접 구현하여 원하는 방식으로 데이터를 처리할 수 있음.
- State Store를 자유롭게 관리 가능
- 스트림즈DSL에서 제공하는 기본 State Store 이외에도, 커스텀 상태 저장소를 구현할 수 있음.
- Kafka 외부 시스템과의 긴밀한 연동 가능
- HTTP API 호출, 파일 시스템 접근, 데이터베이스 업데이트 등 다양한 외부 시스템과의 연동이 필요할 때 유용.
❌ 단점
- 개발이 복잡하고 코드가 길어짐
- 스트림즈DSL보다 훨씬 많은 코드가 필요하며, 직접 Topology를 구성해야 함.
- 내부 최적화 기능을 직접 관리해야 함
- 스트림즈DSL이 자동으로 처리하는 병렬 실행, 상태 저장, 장애 복구 등을 직접 고려해야 함.
- 학습 곡선이 가파름
- 프로세서 API를 제대로 활용하려면 카프카 스트림즈 내부 구조를 깊이 이해해야 함.
프로세서 API와 스트림즈DSL의 차이점
프로세서 API와 스트림즈DSL의 차이점과 사용 사례는 아래와 같습니다.
특징 | Processor API | Streams DSL |
추상화 수준 | 저수준 (Low-Level) API | 고수준 (High-Level) API |
코드 복잡성 | 복잡함 (사용자가 직접 데이터 흐름 정의) | 간단함 (함수형 연산 제공) |
유연성 | 매우 유연함 (사용자 정의 가능) | 제한적 (미리 정의된 연산 사용) |
데이터 흐름 | 명시적으로 Processor 및 Topology 구성 | KStream, KTable 등의 연산자를 사용 |
상태 관리 | 직접 State Store 관리해야 함 | 자동으로 상태 관리 지원 (aggregate, count 등) |
사용 사례 | 복잡한 데이터 흐름, 맞춤형 로직 | 일반적인 스트림 처리 (필터링, 변환, 집계 등) |
사용 사례 | Processor API | Streams DSL |
간단한 데이터 변환 (예: 대문자로 변환) | ❌ | ✅ |
필터링 및 집계 | ❌ | ✅ |
여러 개의 토픽으로 데이터를 동적으로 라우팅 | ✅ | ❌ |
Kafka 외부 시스템과 연동 (API 호출 등) | ✅ | ❌ |
맞춤형 상태 저장 및 관리 | ✅ | ❌ |
고성능 최적화가 필요한 경우 | ✅ | ❌ |
주요 개념
Processor
- Processor<K, V, C> 인터페이스를 구현하여 특정 데이터 처리를 정의할 수 있습니다.
- process(Record<K, V> record) 메서드를 구현하여 레코드를 변환, 필터링, 상태 변경 등의 작업을 수행합니다.
ProcessorContext
- Processor 내부에서 사용할 수 있는 컨텍스트 객체입니다.
- 메타데이터 접근, 상태 저장소(State Store) 관리, 다른 프로세서로 데이터 전달 등을 수행할 수 있습니다.
Topology
- Processor API는 Topology 객체를 사용하여 데이터 흐름을 정의합니다.
- 여러 개의 Processor와 State Store가 연결되어 복잡한 데이터 처리 파이프라인을 구성할 수 있습니다.
State Store
- 스트림 데이터를 저장하고 활용할 수 있도록 하는 저장소입니다.
- Key-Value 형태로 데이터를 저장하며, Processor에서 읽고 쓸 수 있습니다.
반응형