그럼 어쨋든 프로그램은 자신의 PC에서 돌리되, 무슨작업이 되는지는 DB에 남고 , 자신의 PC에 어떻게든 남게 되면 그 경로까지도 DB에 저장은 되는거네, PC안에서의 경로만 관리해주면 되네. 여러명이지만, 모두 동일한 폴더에 넣고, 안쪽경로는 프로그램이 지정해서 자동으로 다운로드하게 하면 되겠네,, PC가 바껴도 저장장치만 D든 E든 맞추면되니까,,,

맞습니다. 정확하게 핵심을 짚으셨습니다!

사용자님이 말씀하신 방식이 바로 **”상대 경로(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) 전략으로 구현할 수 있습니다. 이것이 구현되면 값비싼 클라우드 비용을 최소화하면서 협업이 가능해집니다.

🔄 작동 프로세스 시나리오

  1. 시작: 사용자 B가 프로그램을 켜고 프로젝트를 엽니다.

  2. DB 조회: 파이어스토어에서 스크립트와 필요한 영상 목록(cut1.mp4)을 불러옵니다.

  3. 로컬 확인 (Check Local):

    • 프로그램이 B의 PC 지정 폴더(E:\MyFiles\2024_Project\Videos\)에 cut1.mp4가 있는지 확인합니다.

  4. 분기 처리 (핵심):

    • 있으면: 바로 재생 (로컬 속도, 비용 0원).

    • 없으면: “파일이 없습니다. 다운로드하시겠습니까?” 팝업 또는 자동 다운로드 시작.

      • 어디서? 원본 파일이 저장된 저렴한 스토리지(AWS S3, 개인 NAS, 혹은 구글 드라이브 링크 등)에서 가져와서 지정된 폴더에 저장해버립니다.


3. 이 방식의 장점 (정리)

  1. PC 환경 독립성: 윈도우(C:), 맥(/Users/), 외장하드(E:) 등 어떤 환경에서도 “기준 폴더” 하나만 설정하면 작동합니다.

  2. 버전 관리 용이: 폴더 구조(Videos, Images, Audio)를 프로그램이 강제하기 때문에, 사용자가 파일을 엉뚱한 곳에 둬서 잃어버리는 일을 막을 수 있습니다.

  3. 트래픽 비용 절감: 한 번 다운로드한 파일은 로컬에 남으므로, 두 번째 열 때는 인터넷을 쓰지 않습니다.

4. 개발 시 요청사항 (기획서에 적을 내용)

개발자에게 이렇게 요청하시면 명확합니다.

“DB에는 절대 경로(D:…) 말고 **상대 경로(/Videos/…)**만 저장해주세요.”
“프로그램 설정(Preferences) 메뉴에 사용자가 자신의 **’작업 루트 폴더(Base Directory)’**를 지정하는 기능을 넣어주세요.”
“파일을 로딩할 때 로컬에 없으면, 서버에서 받아서 그 경로에 **자동으로 저장(캐싱)**하는 로직을 짜주세요.”


이어서 도와드릴까요?

이 구조라면 **”파일명 중복 문제”**가 발생할 수 있습니다. (예: 서로 다른 영상인데 둘 다 이름이 video.mp4인 경우 덮어씌워짐).
이를 방지하기 위해 **”파일 저장 시 자동으로 이름을 변환하는 규칙(UUID 등)”**을 어떻게 잡아야 할지 알려드릴까요?

코멘트

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다