아카이브사이트맵
© 2026 Rayon. All rights reserved.
DevDay
아티클랭킹스페이스채용
올리브영 favicon올리브영

올리브영, Spring 트랜잭션 동기화로 레거시 알림톡 시스템을 MSA로 탈바꿈!

by DD
2026-02-23
4개월 전
조회수 50

올리브영은 급증하는 비즈니스에 맞춰 레거시 알림톡 시스템의 확장성 한계(Scalability Bottleneck)를 인지하고, 모던 아키텍처로의 전환을 결정함

Spring의 @TransactionalEventListener 사용 불가로 인해, TransactionSynchronizationManager를 활용한 트랜잭션 커밋 후 콜백 방식 구현

Kafka 메시지 기반의 이벤트 주도 아키텍처(Event-Driven Architecture)로 전환하여 알림톡 발송 흐름을 비즈니스 로직에서 분리

데이터 조회 기준 통합 및 공통 발송 API 구축을 통해 유지보수성(Maintainability) 및 확장성(Scalability)을 확보함

MSA 환경에서의 알림톡 처리 흐름 이해를 통해, 시스템 설계(System Design)의 중요성을 강조함

Spring 트랜잭션 동기화 방식 비교

본문에서는 Spring의 @TransactionalEventListener를 사용하려 했으나, 레거시 환경의 제약으로 인해 TransactionSynchronizationManager를 활용한 트랜잭션 동기화를 구현했다.

@TransactionalEventListener: 트랜잭션 커밋 후 이벤트를 처리하는 방식으로, 이벤트 기반 아키텍처(Event-Driven Architecture) 구현에 적합

TransactionSynchronizationManager: 트랜잭션 커밋 이후 콜백 메서드를 실행하여, 데이터 정합성(Data Consistency)을 보장

트레이드오프: @TransactionalEventListener는 Spring 4.2 이상 지원, TransactionSynchronizationManager는 Spring 2.0부터 지원. 레거시 환경에서는 TransactionSynchronizationManager가 더 적합

결과적으로, 레거시 환경에서는 TransactionSynchronizationManager를 통해 트랜잭션 동기화(Transaction Synchronization)를 구현하고, MSA 환경에서는 @TransactionalEventListener를 활용하는 것이 일반적이다.

Kafka 메시지 기반 아키텍처 설계

올리브영은 레거시 시스템과 모던 아키텍처 간 통신을 위해 Kafka 메시지를 활용하여 이벤트 주도 아키텍처(Event-Driven Architecture)를 구축했다.

레거시 시스템: 주문/배송 상태 변경 시 Kafka 메시지 발행

MSA Delivery Consumer: Kafka 메시지를 소비하여 알림톡 발송 처리

장점: 결합도(Coupling) 감소 및 각 서비스의 독립적인 확장 가능

단점: 메시지 유실(Message Loss) 가능성 및 분산 시스템(Distributed System)의 복잡성 증가

메시지 발행 실패 시 DB에 실패 로그를 저장하고 재처리하는 구조를 통해 안정성을 확보했으며, Outbox Pattern을 추가 적용하여 안정성을 더욱 강화할 수 있다.

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

MSA 환경에서 알림톡 처리는 레거시 시스템과 Delivery Consumer 서비스 간의 역할 분담을 통해 이루어진다.

레거시 시스템: 트랜잭션 커밋 후 Kafka 메시지 발행 (발송 시점 결정)

Delivery Consumer: Kafka 메시지 소비, 알림톡 유형에 따라 배송 유형 분기, 공통 쿼리 및 템플릿 기반 발송 (발송 내용 및 방식 결정)

장점: 알림톡 추가 시 템플릿 및 발송 시점만 추가하면 되므로 확장성(Scalability) 및 유지보수성(Maintainability) 향상

고려사항: 서비스 간의 데이터 일관성(Data Consistency) 유지, 분산 환경에서의 장애 대응(Fault Tolerance) 전략 수립

결과적으로, MSA 환경에서는 각 서비스의 역할 분담을 통해 시스템의 유연성을 확보하고, 새로운 기능 추가에 대한 대응력을 높일 수 있다.

데이터 조회 기준 통합 및 공통 API 구축

올리브영은 알림톡 발송을 위해 서비스별로 흩어져 있던 데이터 조회 기준을 통합하고, 공통 발송 API를 구축하여 시스템의 효율성을 높였다.

기존 레거시 시스템: 서비스별로 다른 테이블과 조건으로 데이터 조회

개선된 시스템: 알림톡 유형에 따라 공통 쿼리를 사용하여 데이터 조회

장점: 데이터 일관성(Data Consistency) 확보, 유지보수 용이성 증대

공통 발송 API: 알림톡 템플릿 구성 및 발송 요청 처리

결과적으로, 데이터 조회 기준 통합 및 공통 API 구축을 통해 알림톡 발송 시스템의 유지보수성(Maintainability) 및 확장성(Scalability)을 향상시켰다.

MSA 전환 후 개선된 점 분석

올리브영은 레거시 시스템을 MSA로 전환한 후, 아키텍처 구조, 발송 시점 보장, 데이터 조회, 관리 주체, 확장성 측면에서 다양한 개선을 이루었다.

아키텍처 구조: 서비스 로직 내 발송 코드 결합(Monolithic) → Kafka 기반 이벤트 주도 아키텍처(EDA)

발송 시점 보장: 비즈니스 로직 결과와 별개로 발송 → afterCommit 활용 트랜잭션 정합성 확보

데이터 조회: 서비스별 산재된 테이블/조건 조회 → 통합 기준으로 일관된 데이터 조회

관리 주체: 각 비즈니스 도메인 서비스 → 배송 컨슈머(Delivery Consumer)로 일원화

확장성: 알림톡 추가 시마다 레거시 코드 수정/배포 → 템플릿 등록 및 메시지 발행으로 낮은 공수

결과적으로, MSA 전환을 통해 유지보수성(Maintainability), 확장성(Scalability), 유연성(Flexibility)을 모두 확보하고, 운영 안정성을 높였다.

Spring 트랜잭션 동기화로 레거시 알림톡 발송 시스템 한계 넘어서기
중급
아키텍처
Spring
Kafka
MSA
Java
Backend
Architecture
원문 읽기
원문 읽기

관련 추천 글

AI 시대, 백엔드 개발자는 문제 해결 능력과 유연한 기술 선택이 핵심!

요즘IT 로고

Spring Tools 5.2.0 출시! Claude Code 플러그인 등 신기능 확인

스프링 로고

Spring Boot 4.1 출시 후 최신 Spring 생태계 소식 모음!

스프링 로고

Spring Boot 4.1.0 출시! Spring AI 2.0 신기능 확인

스프링 로고

Spring Session 2026-02 릴리즈 관련 저작권 및 상표권 정보 공개

스프링 로고

컬리, Kafka Streams 도입으로 검색 시스템 안정성 확보!

컬리 로고
올리브영 favicon올리브영
중급
아키텍처
Spring
Kafka
MSA
Java
Backend
Architecture

관련 추천 글

AI 시대, 백엔드 개발자는 문제 해결 능력과 유연한 기술 선택이 핵심!

요즘IT 로고

Spring Tools 5.2.0 출시! Claude Code 플러그인 등 신기능 확인

스프링 로고

Spring Boot 4.1 출시 후 최신 Spring 생태계 소식 모음!

스프링 로고

댓글 0

첫 번째 댓글을 남겨보세요!