Kappa Architecture란
Jay Kreps라는 사람이 Lambda Architecture에 의문을 가지면서 내놓은 데이터 처리 아키텍처 패턴 중 하나이다.
Jay Kreps가 Lambda를 싫어한 이유
Lambda Architecture는 배치 레이어(정확하지만 느림) + 스피드 레이어(빠르지만 부정확) + 서빙 레이어로 구성된 아키텍처로서, 같은 비즈니스 로직을 배치와 스트림 두 곳에서 구현해서 "빠르면서도 정확한" 결과를 만드는 게 목표였다.
그래서 위와 같은 구조로 운영이 되는데 배치용 코드/실시간용 코드가 따로 존재하기 때문에 코드 동기화, 결과 동기화가 매우 어렵다는 단점이 있다.
그래서 제안한 Kappa Architecture는
그냥 스트림 처리로 다 하자이다.
코드는 항상 바뀐다. 버그 수정이든, 새로운 기능 추가든. 그때마다 과거 데이터도 새 로직으로 다시 계산해야 하는데, Lambda는 배치/스트림 둘 다 고쳐야 하지만 Kappa는 스트림 하나만 고치면 된다.
재처리도 스트림 파이프라인으로 할 수 있기 위해서는
- Kafka 같은 곳에 데이터 오래 보관 (예: 30일)
- 코드 바뀌면 처음부터 다시 읽는 새로운 스트림 처리 작업 시작
- 따라잡으면 새 결과로 바꾸기
- 이전 작업 종료
실제로 어떻게 동작하는가
뉴스 추천 알고리즘을 바꾼다고 해볼 때
- 기존: 클릭수만 고려
- 신규: 클릭수 + 체류시간 고려
Kappa 방식
- 새 코드로 Flink 작업 하나 더 띄우기
- Kafka 처음부터 읽어서 지난 30일 데이터 빠르게 재처리
- 새 결과 테이블 완성되면 서비스 전환
- 기존 작업 종료
Jay Kreps의 핵심
"배치 처리란 결국 처음부터 끝까지 읽는 스트림 처리일 뿐이다"
그러니까 굳이 배치 시스템 따로 만들 필요 없이, 스트림 처리로 전체 히스토리를 빠르게 재생하면 되는 거다.
참고
https://www.oreilly.com/radar/questioning-the-lambda-architecture/
Questioning the Lambda Architecture
The Lambda Architecture has its merits, but alternatives are worth exploring.
www.oreilly.com
'Data' 카테고리의 다른 글
Parquet, ORC, Avro (1) | 2025.07.22 |
---|---|
[AWS DMS] CDC 최신 데이터 판별 (0) | 2025.05.20 |