스마트스토어센터 Oracle에서 MySQL로의 무중단 전환기
두줄요약
스마트스토어센터가 Oracle에서 MySQL로 무중단 전환한 방법을 이중 쓰기 중심으로 설명했습니다. JPA와 MyBatis에서의 트랜잭션 처리, PK와 컬럼 타입 조정까지 다뤘습니다.
문제 상황
- 스마트스토어 플랫폼의 공용 Oracle DBMS에서 리소스 경합이 심화되며 성능 불안정 발생
- Oracle 확장에 따른 라이선스 비용 부담과 10년 이상 레거시 서비스의 무중단 전환 필요
- 타 시스템과의 광범위한 연동으로 서비스 중단 없이 DBMS 전환과 즉시 롤백 가능성 확보 필요
해결 방법
- Oracle과 MySQL에 동시에 쓰기하는 이중 쓰기 전략으로 전환 안전장치 마련
- JPA는 datasource-proxy와 TransactionSynchronizationManager로 커밋 후 MySQL 반영 구조 구성
- MyBatis는 CombinedSqlSessionFactory와 Proxy 기반으로 Oracle, MySQL 양쪽 SQL 실행 구조 구현
주의할 점
- 전환 초기에는 MySQL 실패를 트랜잭션 롤백과 분리해 허용하고 정합성 검증 반복 필요
- Oracle 시퀀스와 MySQL auto increment 차이로 PK 생성 방식 수정 필요
- Oracle과 MySQL의 칼럼 타입 차이에 맞춘 엔티티 정의 조정 필요



