디스플레이 광고 시스템 분석하기 4편
지난 디스플레이 광고 시스템 분석하기 3편에서 카프카를 활용한 데이터 파이프라인이 있었다. 그러나 이벤트 기반의 데이터 처리와 배치 데이터 처리 과정에서 많은 어려움이 있었다. 이를 해결하기 위해 이벤트 기 반의 시스템 구성을 제거하고 스파크 애플리케이션으로 한번에 배치 처리하도록 변경했다.!
카산드라는 마케팅 카탈로그 데이터를 가지고 있다. 스파크 애플리케이션은 이 카산드라의 전체 데이터를 읽어(full scan) S3에 저장한다. 마케팅 카탈로그의 전체 데이터를 하나의 스냅샷 형태로 가지고 있는 것이다. 추가적으로 위의 시스템 그림에서는 드러나지 않지만, 별도의 플링크 애플리케이션이 있어 실시간으로 업데이트 된 마케팅 카탈로그 데이터를 S3에 바로 저장하고 있기도 하다. 하나의 전체 마케팅 카탈로그와 실시간으로 변경되는 마케팅 카탈로그 데이터를 다뤄 하나의 최신의 마케팅 카탈로그를 만드는 작업은 주기적으로 진행된다.
별도의 스파크 애플리케이션은 피드 파일을 만든다. 이 애플리케이션은 필터링, 셀렉팅, 그리고 컨버팅을 담당한다. S3로부터 마케팅 카탈로그의 스냅샷을 읽어 데이터를 처리한 후 피드 파일을 생성한다. 이전 시스템에서의 한계였던 필터링과 셀렉팅의 변경에 따른 데이터 재처리가 필요없어진 것이다. 배치가 수행된 시점의 데이터를 읽고 처리하기 때문에 항상 최신 시점의 데이터를 활용하기 때문이다.
피드 확장도 확실히 쉬워졌다. 기존에는 피드 확장을 할 때마다 전체 데이터를 재처리하여 진행했다. 그러나 지금은 전체 마케팅 카탈로그의 스냅샷을 그대로 활용하기 때문에 재처리 작업없이 바로 피드 파일을 만들 수 있다.
번외
기존의 데이터 파이프라인에서 처리했던 부분이 하나의 배치 안에서 다 처리하기 때문에 배치에서의 성능이 중요해졌다. 기존 피드 파일을 생성하는 작업보다 더 많은 자원을 사용하고 소요 시간도 다소 증가할 수 밖에 없다. 앞으로 어떻게 이 부분을 해결해나갈지는 더 지켜봐야할 것 같다.