카카오톡 발송·템플릿 통계 수집 서버
기간 —
알림톡·친구톡·브랜드메시지 세 종류를 다룹니다. 통계 테이블은 사용자 ID 기준으로 역정규화해 조회 쿼리 성능을 높였습니다.
월 800만 건 이상의 발송 통계 수집
경과일마다 다른 통계
- 문제
- 카카오 API의 읽음·클릭 통계는 경과일(0·1·2일)별로 따로 집계되어 들어왔습니다. 한 번에 합치면 값이 맞지 않아 데이터 정합성이 깨졌습니다.
- 해결
- 매일 카카오 API에서 집계된 통계 전체를 받아오게 했습니다. 읽음·클릭 값은 경과일별 3단계로 나눠 누적했습니다. 배치는 500건씩 DB에 써서 쓰기 성능을 높였습니다.
재수집 시 중복 적재
- 문제
- 배치 집계가 빠지는 경우에 대비해 수동 재수집 API를 만들자, 같은 데이터를 여러 번 누적할 수 있는 구조가 되었습니다.
- 해결
- 역정규화한 최종 테이블에서 변동 컬럼을 뺀 주요 컬럼으로 복합키를 구성했습니다. elapsed_mask 컬럼을 추가해 경과일 0·1·2를 비트 1·2·4로 표시했습니다. 누적할 때 이 비트를 확인해 같은 경과일 값을 두 번 더하지 않게 했습니다. 같은 데이터를 다시 수집해도 행이 중복되지 않아 통계의 정합성이 유지되었습니다.