광고 클릭 이벤트 집계 아키텍처를 공부하는 중에 Kappa 아키텍처를 처음 알게 되었습니다. 그래서 이에 대해 심도있게 알아가보겠습니다.
Kappa 아키텍처는 일괄 및 스트리밍 처리 경로를 동시에 지원하는 lambda 아키텍처의 단점을 보완하기 위해 등장한 아키텍처인데요. 먼저 데이터를 처리하는 두 방식에 대해 정리하고 넘어가겠습니다.
🙋 그럼 실시간 처리 (real-time processing)랑 같은거 아닌가요??
- 실시간 처리는 데이터 포인트 하나하나를 즉시 처리하는 것이고, 스트림 처리는 한 스트림 내의 데이터들을 지속적으로 처리하는 '근사적' 실시간 처리를 하는 것입니다.
- 스트림 내에는 여러 개의 데이터 포인트가 있는 것!
Lambda 아키텍처 간단 설명lambda 아키텍처는 일괄 처리와 스트리밍 처리를 동시에 지원하는 아키텍처로 아래와 같은 구조를 가집니다.

1. 로직이 중복됨
2. 일괄 처리에 비효율적
3. 복잡함
지금부터는 Kappa 아키텍처가 어떻게 'lambda' 아키텍처의 단점을 보완하고 어떤 특징을 가지는지 알아보겠습니다. 🏃♀️
Kappa 아키텍처 소개⬇️ 간략한 아키텍처 구조도

아키텍처 구조도만 보고도 lambda 아키텍처와의 차이점을 한 눈에 확인할 수 있습니다. 또한 이러한 아키텍처를 가지기 때문에 lambda 아키텍처의 단점이었던 1. 로직이 중복되는 문제가 바로 해결되는 것을 확인할 수 있습니다.
그럼 단일 스트림 처리 계층에서 일괄 처리까지 어떻게 수행할 수 있는 것일까요?
생각보다 정말 간단했습니다. 메시징 엔진으로부터 저장된 스트리밍 데이터를 불러와서 일괄 처리 방식으로 데이터를 처리하면 됩니다.
이것이 가능한 이유는 Kafka와 같은 메시지 큐에 data retention (데이터 보존) 기능을 지원하기 때문입니다.

✅ Upstream Replay
- 이와 같은 처리 방법을
Upstream Replay라고 합니다.- 데이터가 처음 생성되거나 수집되는 시점에서 다시 데이터를 처리하는 방법입니다.
1. 실시간 처리가 가능함
2. 비용 효율적임
Lambda 아키텍처보다 비용 효율적입니다.3. 간단함
1. 스트리밍 처리에 비해 일괄 처리는 성능이 떨어짐
2. 데이터 히스토리가 제한적임