AI Briefing

올리브영, 저트래픽 SMS 시스템에 CDC·Kafka 도입한 '의도적 오버엔지니어링' 사례 공개

·2026.09.23 20:39

핵심 내용

올리브영이 저트래픽 SMS 시스템에 CDC와 Kafka를 도입한 과도기 아키텍처의 필요성과 설계 철학을 공유했다.

1 / 2

자세히 보기

올리브영이 초당 1건 미만의 SMS/LMS 발송 시스템을 리팩토링하며 CDC와 Kafka를 의도적으로 도입한 사례를 공개했다. 기존 레거시 데몬은 WAS와 자원 공유로 인한 성능 저하, 표준 모니터링 부재, 구두 규칙에 의존한 중복 발송 방지 등 구조적 부채를 안고 있었으나, 수십 개 서비스의 레거시 코드 변경이 불가능해 과도기적 구조가 필요했다.

Strangler Fig 패턴과 Event Interception

해당 시스템은 Martin Fowler의 Strangler Fig 패턴을 적용해 레거시 코드를 수정하지 않고 발송 대상 테이블의 INSERT를 CDC로 감지해 Kafka로 전달하는 구조를 채택했다. 이는 수십 개 서비스가 공통으로 사용하는 테이블을 가로채는 Event Interception 장치로, 점진적 전환의 위험을 줄이고 조기 가치를 실현하기 위한 전략이다.

비가역적 발송을 고려한 워커 설계

발송의 비가역성과 DB 트랜잭션의 비대칭성을 해결하기 위해 Kafka 메시지에는 ID만 담고, 별도 워커가 DB에서 원본을 조회해 발송하는 방식을 적용했다. '보냈으나 기록 없음'이 '기록됐으나 미발송'보다 복구 가능성이 높다고 판단해 발송 후 이력을 저장하며, Consumer Group의 파티션 배타적 할당으로 중복 발송을 방지한다.

성능 격리와 관측성 확보

평균 발송량은 초당 1건 미만이지만 특정 시간대 1만 건 이상의 폭증이 발생한다. Kafka 큐가 순간 폭증을 완충하며, 격리된 애플리케이션으로 WAS 성능 영향을 차단했다. 최근 15일 측정 결과, 워커 1대당 평균 67ms의 처리 시간을 기록해 평소 발송량의 10배 이상을 처리할 수 있는 여유를 확보했다.

'투자'로서의 오버엔지니어링

과도기 아키텍처는 '발송 대상 테이블 INSERT 건수 0건'을 제거 시점으로 설정해 유효기간을 명시했다. 예상 변화 대비 추상화는 '투자'로, 제값을 하지 못하는 형태만 남은 복잡함은 '부채'로 구분한다. 올리브영은 전환의 안전을 위해 한시적 복잡함을 감수하는 것이 빅뱅 전환의 위험보다 저렴하다고 결론지었다.

이 한국어 요약은 AI가 자동으로 만들었습니다. 원문의 주장과 맥락은 원문에서 확인해 주세요. 저작권은 원저작자에게 있습니다.

AI 처리 방식을 확인하거나, 요약 오류와 출처 표기 문제, 삭제 요청을 문의 · 건의로 알려주세요.