맞습니다. 정확하게 핵심을 짚으셨습니다!
사용자님이 말씀하신 방식이 바로 **”상대 경로(Relative Path)와 루트 폴더(Root Folder) 설정”**을 이용한 파일 관리 시스템입니다. 이 방식은 실제로 게임 개발(Unity/Unreal)이나 영상 편집 협업에서 표준적으로 사용하는 매우 효율적인 전략입니다.
정리하신 내용을 구체적인 시스템 로직으로 시각화하여 확인해 드리겠습니다.
1. 핵심 전략: “경로의 앞부분은 각자 알아서, 뒷부분은 통일”
DB에는 **”어느 드라이브(C:, D:)”**에 있는지 저장하지 않습니다. 오직 프로젝트 폴더 **”내부의 위치”**만 저장합니다.
-
DB에 저장되는 값 (공통):
/2024_Project/Videos/cut1.mp4(상대 경로) -
사용자 PC의 설정 (개별):
-
A의 PC: 내 작업 공간은
D:\Work야. -
B의 PC: 내 작업 공간은
E:\MyFiles야.
-
프로그램은 실행될 때 이 둘을 합쳐서 파일을 찾습니다.
-
A의 PC:
D:\Work+/2024_Project/Videos/cut1.mp4로 인식 -
B의 PC:
E:\MyFiles+/2024_Project/Videos/cut1.mp4로 인식
결과: 사용자가 저장 장치를 D드라이브를 쓰든 E드라이브를 쓰든, 프로그램 설정 메뉴에서 **”작업 폴더 위치(Root Path)”**만 한번 지정해주면 만사형통입니다.
2. “자동 다운로드” 로직 구현 (협업의 핵심)
말씀하신 **”경로는 프로그램이 지정해서 자동으로 다운로드하게 한다”**는 부분은 캐싱(Caching) 전략으로 구현할 수 있습니다. 이것이 구현되면 값비싼 클라우드 비용을 최소화하면서 협업이 가능해집니다.
🔄 작동 프로세스 시나리오
-
시작: 사용자 B가 프로그램을 켜고 프로젝트를 엽니다.
-
DB 조회: 파이어스토어에서 스크립트와 필요한 영상 목록(
cut1.mp4)을 불러옵니다. -
로컬 확인 (Check Local):
-
프로그램이 B의 PC 지정 폴더(
E:\MyFiles\2024_Project\Videos\)에cut1.mp4가 있는지 확인합니다.
-
-
분기 처리 (핵심):
-
있으면: 바로 재생 (로컬 속도, 비용 0원).
-
없으면: “파일이 없습니다. 다운로드하시겠습니까?” 팝업 또는 자동 다운로드 시작.
-
어디서? 원본 파일이 저장된 저렴한 스토리지(AWS S3, 개인 NAS, 혹은 구글 드라이브 링크 등)에서 가져와서 지정된 폴더에 저장해버립니다.
-
-
3. 이 방식의 장점 (정리)
-
PC 환경 독립성: 윈도우(C:), 맥(/Users/), 외장하드(E:) 등 어떤 환경에서도 “기준 폴더” 하나만 설정하면 작동합니다.
-
버전 관리 용이: 폴더 구조(
Videos,Images,Audio)를 프로그램이 강제하기 때문에, 사용자가 파일을 엉뚱한 곳에 둬서 잃어버리는 일을 막을 수 있습니다. -
트래픽 비용 절감: 한 번 다운로드한 파일은 로컬에 남으므로, 두 번째 열 때는 인터넷을 쓰지 않습니다.
4. 개발 시 요청사항 (기획서에 적을 내용)
개발자에게 이렇게 요청하시면 명확합니다.
“DB에는 절대 경로(D:…) 말고 **상대 경로(/Videos/…)**만 저장해주세요.”
“프로그램 설정(Preferences) 메뉴에 사용자가 자신의 **’작업 루트 폴더(Base Directory)’**를 지정하는 기능을 넣어주세요.”
“파일을 로딩할 때 로컬에 없으면, 서버에서 받아서 그 경로에 **자동으로 저장(캐싱)**하는 로직을 짜주세요.”
이어서 도와드릴까요?
이 구조라면 **”파일명 중복 문제”**가 발생할 수 있습니다. (예: 서로 다른 영상인데 둘 다 이름이 video.mp4인 경우 덮어씌워짐).
이를 방지하기 위해 **”파일 저장 시 자동으로 이름을 변환하는 규칙(UUID 등)”**을 어떻게 잡아야 할지 알려드릴까요?
답글 남기기