본문 바로가기

Data

Kappa Architecture

Kappa Architecture란

Jay Kreps라는 사람이 Lambda Architecture에 의문을 가지면서 내놓은 데이터 처리 아키텍처 패턴 중 하나이다.

 

Jay Kreps가 Lambda를 싫어한 이유

Lambda Architecture는 배치 레이어(정확하지만 느림) + 스피드 레이어(빠르지만 부정확) + 서빙 레이어로 구성된 아키텍처로서, 같은 비즈니스 로직을 배치와 스트림 두 곳에서 구현해서 "빠르면서도 정확한" 결과를 만드는 게 목표였다.

그래서 위와 같은 구조로 운영이 되는데 배치용 코드/실시간용 코드가 따로 존재하기 때문에 코드 동기화, 결과 동기화가 매우 어렵다는 단점이 있다.

 

그래서 제안한 Kappa Architecture는

그냥 스트림 처리로 다 하자이다.

코드는 항상 바뀐다. 버그 수정이든, 새로운 기능 추가든. 그때마다 과거 데이터도 새 로직으로 다시 계산해야 하는데, Lambda는 배치/스트림 둘 다 고쳐야 하지만 Kappa는 스트림 하나만 고치면 된다.

재처리도 스트림 파이프라인으로 할 수 있기 위해서는

 

  • Kafka 같은 곳에 데이터 오래 보관 (예: 30일)
  • 코드 바뀌면 처음부터 다시 읽는 새로운 스트림 처리 작업 시작
  • 따라잡으면 새 결과로 바꾸기
  • 이전 작업 종료

 

실제로 어떻게 동작하는가

뉴스 추천 알고리즘을 바꾼다고 해볼 때

  • 기존: 클릭수만 고려
  • 신규: 클릭수 + 체류시간 고려

Kappa 방식

  1. 새 코드로 Flink 작업 하나 더 띄우기
  2. Kafka 처음부터 읽어서 지난 30일 데이터 빠르게 재처리
  3. 새 결과 테이블 완성되면 서비스 전환
  4. 기존 작업 종료

 

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