목록 보기
이커머스 플랫폼의 주문 DB 마이그레이션 경험기
백엔드

이커머스 플랫폼의 주문 DB 마이그레이션 경험기

라인
라인
2024년 3월 7일

두줄요약

Oracle 주문 DB를 MySQL로 이관하면서 모델과 ID 채번 방식을 함께 재설계했습니다. 읽기·쓰기 성능을 개선하고 정합성과 동시성 문제를 단계적으로 해결했습니다.

문제 상황

  • 주문 DB를 Oracle에서 MySQL로 이관해야 하는 상황
  • 기존 모델은 조회 시 17개 테이블 조인으로 성능 저하와 서버 부하 발생
  • 주문 생성과 수정에서도 배포 호환성, 동시성, 정합성 이슈가 함께 존재

원인 분석

  • Oracle 중심 모델이 읽기 성능에 불리하고 조인 비용이 과도함
  • JSON 기반 비정규화는 저장 시 Jackson 직렬화·역직렬화 비용과 동시성 취약점이 존재
  • JPA의 변경 감지, Auto Increment의 Batch Insert 비호환, 락 재진입 불가가 추가 문제로 작용

해결 방법

  • 검색용 정규화 테이블과 조회용 비정규화 테이블을 함께 운용하는 모델 채택
  • 명세 객체, 최소 연관 관계, 애그리게이션, 통합 테스트로 퍼시스턴스 레이어와 정합성 관리
  • Snowflake 기반 자체 ID 채번, Redis 분산 락 재진입 지원, 단계적 dual write와 읽기 전환으로 마이그레이션 수행

댓글 0

댓글을 작성하려면 로그인이 필요합니다.

댓글을 불러오는 중...