T
Tech Insights
HomeCategoriesCompanies
홈
현재 페이지
Spring 트랜잭션 동기화로 레거시 알림톡 발송 시스템 한계 넘어서기

Spring 트랜잭션 동기화로 레거시 알림톡 발송 시스템 한계 넘어서기

올리브영
2026년 2월 23일
약 3분
Spring 트랜잭션 동기화로 레거시 알림톡 발송 시스템 한계 넘어서기
AI 요약

Spring 트랜잭션 동기화로 레거시 알림톡 발송 시스템 한계 극복

개요

올리브영 배송 스쿼드에서 레거시 알림톡 발송 시스템을 모던 아키텍처로 전환하며 겪었던 고민과 해결 과정을 공유합니다. 주문/결제/배송 등 핵심 소통 채널인 알림톡 시스템의 복잡성과 변화하는 요구사항 대응의 한계를 극복하기 위해 Kafka 메시지를 활용한 MSA 환경으로 전환했습니다.

전환 배경 및 필요성

1. 알림톡 플랫폼 변경 및 로직 분산

  • 알림톡 발송 플랫폼 변경에 따른 기존 구조 수정 필요.
  • 알림톡 발송 로직이 여러 비즈니스 코드에 흩어져 있어 유지보수 어려움.

2. 데이터 조회 기준 불일치

  • 서비스 및 알림 유형별로 상이한 테이블 및 조건으로 데이터 조회.
  • 데이터 조회 기준의 일관성 부족 및 모호성 발생.

3. 모던 아키텍처 전환 및 기능 일원화

  • 레거시 시스템의 점진적 모던 아키텍처 전환 필요성.
  • 발송 기능을 하나의 구조로 일원화하여 향후 확장성 확보.

전환 방법론

1. 트랜잭션 동기화 구현

  • @TransactionalEventListener 제약: 레거시 시스템의 Spring 버전 문제로 직접 사용 불가.
  • TransactionSynchronizationManager 활용: 트랜잭션 커밋 이후 콜백 메서드 실행을 보장받아 비즈니스 로직과 알림톡 발송 로직 분리.
  • 안정성 강화: 메시지 발송 실패 시 DB 저장 후 별도 재처리 메커니즘 고려.
  • Outbox Pattern 고려: 높은 안정성이 요구되는 환경에서 이벤트 DB 선저장 및 별도 발행 프로세스 고려.

2. MSA 환경에서의 알림톡 처리 흐름

  • Kafka 메시지 기반 연동: 레거시 시스템은 Kafka 메시지 발행, MSA의 Delivery Consumer가 메시지 소비 및 발송 처리 전담.
  • 알림톡 유형별 처리: 배송 유형(오늘드림, 일반배송 등)별로 분리하여 처리.
  • 공통 쿼리 및 템플릿: 배송 유형 내 조건(일반, 교환 등)을 묶어 데이터 조회 및 공통 발송 API 활용.
  • 역할 분리: 레거시는 발송 시점 결정, 컨슈머는 내용/방식/안정성 전담.

전환 과정에서의 배움

  • 아키텍처 설계 중요성: 코드 작성 전 시스템 전체 흐름 이해의 중요성 체감.
  • 철저한 테스트: 다양한 케이스 테스트를 통한 안정성 확보.
  • MSA 비즈니스 흐름 이해: 분산 환경에서의 데이터 흐름 및 일관성 유지의 중요성 습득.

개선된 점

  • 유지보수성 향상: 코드 집중화, 데이터 조회 기준 공통화, 영향 범위 파악 용이.
  • 확장성 및 유연성 증가: 이벤트 기반 처리, 기능 독립 분리, 최소한의 변경으로 대응 가능.
  • 공통 재시도 로직 구축: 운영 관점의 안정성 확보.
원문 보기

태그

올리브영기술