커머스 솔루션에서 자사 커머스 플랫폼으로 이전

커머스 솔루션이란

비개발자가 자신의 커머스 사이트를 쉽게 만들 수 있는 솔루션이며, 대표적으로 까페24 쇼핑몰, NHN 커머스의 고도몰, Shopify 등이 있습니다.

짧은 시간안에 서비스 런칭 가능
서비스 런칭에 많은 시간이 필요

자사 커머스 플랫폼으로 이전하기 전의 핏펫 현황

핏펫은 2021년도에도 자사 커머스 플랫폼으로 이전을 시도했습니다. 자사 플랫폼의 프론트엔드가 기존의 프론트엔드를 완벽하게 대체하였지만, 커머스 솔루션백엔드DB를 여전히 사용(?!)하고 있었습니다. 저희는 이 형상을 V2라고 부릅니다.

기형적인 V2의 구조도

V3 런칭 준비

커머스 솔루션과의 완벽한 안녕을 위해 저희는 다시 한번 자사 커머스 플랫폼 런칭을 위한 준비를 하게 되었습니다.

V3 구조도

DB 마이그레이션

DB 마이그레이션 스케쥴

저희는 2개의 DB(커머스 솔루션의 DB와 V2의 DB)에서 데이터를 합쳐서 하나의 DB를 만들어야 했습니다. 물론 DB schema는 전혀 달랐기 때문에 각 table에서 데이터조회가공한 데이터를 신규 DB에 저장하는 작업을 진행하였습니다.

최초 1회 Local Mac에서 실행
V3주기적으로 Legacy DB들의 데이터를 저장

WorkerLostError를 만나다

개발용 맥북에서 생성한 V3 DB를 런칭 후 사용할 AWS AuoraDB에 import하고 Celery 실행 후 만난 것은 WorkerLostError였습니다.

변경 전
변경 후
서버 메모리 강화(!?)

2개의 DB

시간이 녹아 버렸습니다

FSM(finite-state machine)

주문 관련 마이그레이션이 가장 복잡했습니다. 주문은 여러 개의 상태를 갖고 있었고, 상태에 맞춰서 데이터를 가공해야 했습니다.(정산 데이터 생성은 덤이었습니다.) 그래서 복잡한 상태를 한눈에 볼 수 있도록 주문 상태의 FSM을 작성하였고, 매우 큰 도움이 되었습니다.

Legacy DB의 데이터, 어디까지 믿을 수 있는가

당연히 Legacy DB에 쌓여있는 데이터의 정합성 문제는 없을 것이라고 생각했습니다. 상품의 구매 금액이 음수가 나올 줄은 꿈에도 몰랐습니다.

커머스 솔루션의 잘못된 상품 결제 금액의 예시
반복하여 실행

자사 커머스 플랫폼 런칭

드디어 런칭일이 되었습니다. 저희는 점검중 페이지를 노출시키고, 이전 작업을 시작했습니다. DB 마이그레이션 작업을 시작하였는데, 이전에 만나지 못했던 오류를 만나게 되었습니다.

--

--

Love podcasts or audiobooks? Learn on the go with our new app.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store