- 발행일
2025년도~현재 — ITS 표준데이터 관리 시스템(SDMS), 프런트에서 풀스택으로
2025년 4월부터 ITS(지능형 교통체계) 도메인에서 표준데이터 관리 시스템을 만들고 있습니다. 프런트엔드 주력으로 합류해 Django 모델·마이그레이션·쿼리로 범위를 넓혀온 기록이에요. 이 문서의 모든 수치는 측정 과정을 적어둔 개별 글에 근거가 있습니다.
2021년부터 웹을 만들어 온 풀스택 개발자 임효진입니다. 프런트엔드 주력으로 시작해 지금은 Django 모델 설계와 쿼리 최적화까지 맡고 있습니다.
2025년 4월부터 ITS(지능형 교통체계) 도메인에서 표준데이터 관리 시스템을 만들고 있습니다. 프런트엔드 주력으로 합류해 Django 모델·마이그레이션·쿼리로 범위를 넓혀온 기록이에요. 이 문서의 모든 수치는 측정 과정을 적어둔 개별 글에 근거가 있습니다.
여행 일정의 순서를 드래그로 바꾸는 기능을 react-dnd로 만들며 겪은 것들입니다. drop이 아니라 hover 시점에 정렬하는 이유, 드래그 아이템의 index를 직접 갱신하지 않으면 hover마다 이동이 재실행되어 순서가 튀는 고전 함정, 그리고 이 글을 쓰며 지금 코드에서 새로 찾은 버그 — 삭제 드롭존이 한 번 빨개지면 안 돌아오는 문제 — 까지 정리했습니다.
로그인 풀림, alert 두 번 뜸, 무한 토큰 갱신 루프 — 증상은 달랐지만 전부 한 뿌리였습니다. 401 처리가 화면마다 흩어져 있었거든요. 서버 에러를 enum 4종으로 분류하는 공통 fetch 래퍼로 모은 과정과, 인증 상태를 boolean이 아니라 3-state로 두는 이유, 그리고 지금 코드에 남아 있는 결함까지 정리했습니다.
표준 메타데이터가 개정될 때마다 마이그레이션을 찍어야 했던 고정 컬럼 모델을, 메타클래스 인스턴스 기반으로 전환한 설계 기록입니다. JSONField·고정 컬럼 유지를 포함한 세 가지 안을 놓고 왜 EAV에 가까운 구조를 골랐는지, 리터럴 값과 객체 참조를 왜 다른 테이블로 나눴는지, 그리고 두 모델을 한동안 동시에 살려둔 전환 전략을 정리했어요.
속성에 달려 있던 is_mandatory를 클래스-속성 관계 행으로 옮긴 작업입니다. 같은 속성이 클래스마다 필수/선택으로 갈리는데 전역 플래그로는 표현할 수 없었어요. 이관 마이그레이션을 짜다 PostgreSQL의 pending trigger events에 걸렸고, 제약을 백필보다 먼저 만드는 순서로 풀었습니다.