Skip to content
isdnetworks
Go back

영역마다 다른 이관 진행

(수정됨)

옛 시스템을 Laravel 로 옮기는 일이 진행 중이었는데 진행 중이라는 상태만 몇 달째였다. 백분율이 하나 붙어 있었지만 그것이 코드 줄 수인지 기능 수인지 화면 수인지를 아무도 몰랐다.

Table of contents

Open Table of contents

배경 — 영역으로 나눈 표

전체를 회원과 상품과 주문과 결제와 정산과 통계와 관리자 일곱 영역으로 나눠 MIGRATION.md 에 표로 적었다. 각각 done 과 wip 와 todo 로 상태가 갈렸고 비고에 무엇이 남았는지를 적었다.

백분율 하나보다 이 표가 훨씬 많은 것을 말했다. 진행 중인 영역을 다시 조회와 등록과 수정과 취소와 이력으로 나누니 다섯 중 둘이 끝나 있어서 다음에 무엇을 할지가 바로 나왔다.

원인 — 부분 이관이 만든 틈

주문 조회는 새 시스템인데 등록은 옛 시스템이었고 그것이 위험했다. 등록이 옛 orders 에 들어가는데 조회는 새 orders_v2 를 보므로 새 테이블에 자료가 안 쌓이고 있었다.

두 가지 방법이 있었는데 옛 테이블에 트리거를 거는 것과 5분마다 도는 sync:orders 명령으로 옮기는 것이다. 뒤쪽을 골랐다. 이유는 옛 DB 에 트리거를 넣으면 옛 시스템의 배포와 얽혀서다. 대신 최대 5분의 지연을 감수했고 등록이 옮겨질 때까지 유지하게 했다. 부분만 옮긴 상태는 그 사이를 잇는 것이 필요하고 그것도 하나의 작업이므로 목록에 넣어야 한다.

조치 — 임시 연결의 제거 조건

임시로 잇는 것이 셋 있었는데 sync:orders 와 Redis 세션 공유와 옛 화면에서 /api/v2/ 를 부르는 것이었다. 전부 임시인데 목록에 없어서 영구가 될 뻔했다.

목록에 넣고 무엇이 끝나면 지우는지를 제거 조건으로 적었다. 조건을 안 적으면 임시가 언제 끝나는지를 아무도 모르게 된다.

담당 없는 영역이 드러났다

영역별 owner 를 적어 보니 관리자 영역에 담당이 없었다. 그래서 미착수인 채로 계속 남아 있었다.

담당이 없는 것이 있으면 그것부터 정했고 표로 나누지 않았으면 그 공백이 안 보였을 것이다.

검증 — 바뀐 것만 적는 갱신

표는 주마다 바뀐 것만 적고 전체를 다시 쓰지 않았다. 바뀐 것이 없는 주도 있었는데 그것도 정보였다.

3주 동안 안 바뀐 영역이 있으면 막힌 것이므로 왜 안 되는지를 확인했고 담당자가 다른 일에 붙어 있었다. 완료한 영역도 표에서 지우지 않았는데 지우면 남은 개수만 보이고 전체 중 얼마나 됐는지가 안 보이기 때문이다.

정리


Share this post on:

Previous Post
SSE 프록시와 WebSocket 프록시의 차이
Next Post
돌고 있던 폴백