SVRx Pinry 마이그레이션 기능이 업데이트 됐습니다 (ft. 후기?)


정말 오래걸렸네요
따지고보면 마이그레이션이라는게 기존 Pinry 레거시 버전을 사용하던 사용자가
SVRx Pinry로 넘어갈 때 처음 한 번만 필요한 작업이기 때문에
마이그레이션에 이렇게 많은 시간과 자원을 투자하는 게 맞나 싶긴 했습니다
사실 마이그레이션 기능 자체는 금방 완성을 했습니다만
마이그레이션 성능이 별로더라고요
제가 사용하는 Pinry 중에 하나는 350여개의 핀을 가지고 있습니다
그런데 마이그레이션 하는데 2~3시간이 걸리더군요
다른 Pinry 하나는 1600여개의 핀을 가지고 있는데 이러면 단순 계산으로 10~15시간 정도
거기다가 많아질 수록 더 길어질 수 있기 때문에 단순히 5배 정도가 아닌 6~7배의 시간이 늘어날 수 있는 구조였죠
그래서 아예 뜯어 고치기로 했습니다
Pinry를 사용하는 사용자도 별로 없고 그 중에서 SVRx Pinry로 넘어가는 사람은 더 적겠지만
저 정도 시간이 걸리면 결함이라고 봐야겠죠
저 같은 경우는 자기 전에 마이그레이션 걸어 놓고 다음날 되면 끝날 정도이긴 하지만
핀이 2천개 3천개 뭐 많으면 1만개 정도 된다고 가정하면 답이 없는 시간이죠
어차피 Pinry를 사용 안하던 사람들이 SVRx Pinry 를 설치 해볼까? 라는 상황이면 마이그레이션 자체가 필요없겠지만
기존에 Pinry를 잘 사용하던 사람들은 핀이 많이 쌓여있을 수 있겠더라고요
어쨌든 마이그레이션을 손보다 보니 병목 문제가 발견됐고 수정하면서
마이그레이션 진행 상황에 대한 피드백 문제도 생각을 하게 되더라고요
이게 시간이 얼마 안걸리면 그냥 컨테이너 로그에 몇 줄 표시하면 끝인데
시간 단위로 걸린다? 물론 수정을 해서 어느정도 단축을 하긴 할 거지만
그래도 컨테이너 로그로 확인 하는건 불편하다라는 생각이 들어서

만들었습니다
SVRx Pinry 프로젝트를 만들고 설정 된 주소로 접속하면 마이그레이션 페이지가 표시 됩니다
마이그레이션이 완료되면 SVRx Pinry 메인 화면으로 이동 합니다
이 마이그레이션이 단순히 DB 정리가 아니라
미로같은 폴더 구조를 SVRx Pinry 방식으로 변경한 후 DB에 등록 하는 방식이라 수정하는데 오래 걸렸네요
그런데 완성하고 나서 조금 당황스러운 점이 있었는데
350여개의 핀을 마이그레이션 하는데 정확히 76초가 걸렸습니다...

두 번째 Pinry도 1635개의 핀과 관련 썸네일 포함 6540개의 이미지를 마이그레이션 하는데
대략 4~5분 정도 걸린 것 같습니다
빨라져도 너무 빨라졌네요
이정도면 별도 페이지 없이 그냥 컨테이너 로그로 대체 했어도 됐지 않을까? 라는 생각이 드는데
그래도 뭐 핀이 수 천개 넘어가면 몇 분 이상 걸릴 거니 마이그레이션 페이지가 의미 없지는 않겠죠
command: ["/pinry/docker/scripts/start.sh", "--migrate-legacy"]복사
마이그레이션 방법은 간단합니다 컴포즈 파일에 마이그레이션 커맨드 한 줄 추가 하면 됩니다
version: "3.8"
services:
svrx-pinry:
image: sruinz/svrx-pinry:latest
command: ["/pinry/docker/scripts/start.sh", "--migrate-legacy"]
container_name: svrx-pinry
ports:
- "2048:80"
volumes:
- "/volume1/docker/svrx-pinry/data:/data"
restart: unless-stopped복사
어차피 마이그레이션 할 컨텐츠가 없다면 그냥 스킵되니 저대로 쭉 써도 문제 없죠
마이그레이션 하기 전에 data 폴더를 백업 하시고 진행 하시기 바랍니다
마이그레이션이 진행 되면서 레거시 백업 폴더에 기존 데이터가 백업 되긴 합니다만
data 폴더를 따로 백업해서 이중 백업을 하시는 걸 추천 합니다

마이그레이션 후에는 미로 같던 폴더 구조가

이런 식으로 정리 됩니다 originals 폴더에는 원본 파일이 derivatives 폴더에는 썸네일이 저장 되는 구조죠
Pinry -> SVRx Pinry 로 확장 포함해서 수정하는데 들었던 토큰과 시간보다
마이그레이션 기능 하나에 투자한 토큰과 시간이 거의 5배는 되는 거 같네요...
어쨌든 뭐 완성이 됐으니까 이제 남는 토큰들은 이런저런 기능 추가나 다른 프로젝트에 사용해야겠습니다