
백엔드
나야, 주문 - 주문시스템의 도전과 성장 이야기
두줄요약
무신사 주문 시스템이 모놀리식에서 MSA, EDA, Kafka, Java 전환까지 단계적으로 개선된 과정을 다뤘습니다. 대규모 트래픽과 이벤트 시즌에서도 안정성과 확장성을 높인 리팩토링 경험을 공유했습니다.
문제 상황
- 무신사 주문 시스템의 대규모 트래픽과 이벤트 시즌 대응 필요성
- 모놀리식 구조, 높은 DB 의존도, 복잡한 비즈니스 로직으로 인한 유지보수·장애 위험
- MSA 전환 이후에도 도메인 간 결합도와 장애 전파, API 일관성 문제가 지속
원인 분석
- Controller와 Model에 비즈니스 로직이 집중된 스파게티 코드 구조
- Writer DB 부하 집중, 슬로우 쿼리, 비효율적인 트랜잭션·락 처리
- 서비스 분리 이후 DB 트랜잭션 대신 API 기반 통신으로 전환되며 분산 일관성 문제 발생
해결 방법
- PHP 업그레이드, PSR·Composer 도입, DTO·DI·ORM 적용으로 코드 표준화와 모듈화 진행
- Reader DB 분산, 인덱스 추가, Redis 분산 락 도입으로 DB 부하 완화
- MSA, SAGA, Circuit Breaker, SNS·SQS·Lambda 기반 EDA, Kafka, Java 전환으로 확장성과 안정성 강화
성능/운영 포인트
- 이벤트 기반 비동기 처리로 주문 트랜잭션 경량화
- DLQ, SETNX, CloudWatch로 메시지 오류 대응과 모니터링 보강
- Java 21 업그레이드와 서비스 모듈 분리로 운영 일원화와 장애 전파 감소