서울의 한 월요일.
장바구니 테이블을 분리하는 작업을 담당하게 되었습니다.
장바구니 테이블
은 고객이 주문할 상품을 담아두는 테이블입니다.
장바구니 테이블
에는 샘플 상품
과 일반 상품
이 함께 담겨있습니다.
샘플 상품
에 대한 정책 변경으로 장바구니 테이블
에서 샘플 상품
과 일반 상품
을 분리하는 작업을 진행하게 되었습니다.
샘플 장바구니 테이블
을 생성장바구니 테이블
의 샘플 상품 데이터
를 샘플 장바구니 테이블
로 이동장바구니 서비스 로직
을 장바구니 로직
과 샘플 장바구니 로직
으로 분리크게 보면 위 3가지 작업이 필요합니다.
서비스의 중단 없이 위 작업을 진행하려면 작업을 좀 더 작게 쪼개어 진행해야 합니다.
변경된 로직을 배포하면 즉시 변경된 로직으로 동작합니다.
테이블의 데이터를 다른 테이블로 이동시키는 작업은 시간이 소요되는 작업입니다.
따라서 샘플 장바구니 테이블
을 사용하는 샘플 장바구니 로직
이 적용되었지만, 샘플 장바구니 테이블
의 데이터는 없는 상황이 발생 가능합니다.
고객이 비어있는 장바구니를 보고 당황하는 일이 발생하지 않도록 주의하여 배포해야 합니다.
샘플 장바구니 테이블
생성샘플 상품 데이터
에 삽입 삭제 업데이트
시 장바구니 테이블
과 샘플 장바구니 테이블
모두 삽입 삭제 업데이트
하는 로직 코드 배포장바구니 테이블
에 있는 샘플 상품 데이터
를 샘플 장바구니 테이블
에 복제하는 스크립트 실행장바구니 로직
과 샘플 장바구니 로직
분리 코드 배포장바구니 테이블
에 있는 샘플 상품 데이터
삭제 스크립트 실행1, 2번 작업을 통해서 새로운 데이터가 새로운 테이블에도 저장되도록 하였습니다.
이후 3번 작업으로 기존 데이터가 새로운 테이블에 저장되도록 하여 데이터 이전 작업을 마쳤습니다.
간단한 데이터 마이그레이션 작업은 여러 번 해보았지만, 테이블을 분리하는 규모의 작업은 처음이라 조심스러웠습니다.
배포 시나리오를 먼저 작성하고 팀원들에게 공유하여 예상되는 문제가 있을지 확인하고, staging 서버에서 QA를 통해 확인하여 진행하였습니다.
그 결과 서비스 중단 없이 안정적으로 테이블 분리 작업을 완료했습니다!