• 카테고리

    질문 & 답변
  • 세부 분야

    풀스택

  • 해결 여부

    미해결

staic 파일을 버전관리에 포함하면 안되는 이유?

23.04.18 22:52 작성 조회수 247

0

안녕하세요 교수님

강의중에 static파일들은 절대 버전관리에 넣으면 안된다고 하셨는데 이유가 뭔가요?

저도 .gitignore로 __pycache__같은 것은 제외 시켯는데 static이나 media나 뭐 나머지것들은 나 git으로 버전관리는 하고 있습니다,.

졸업작품중에 팀원들과 같이 공유할 목적으로요. 안되는 이유가 있나요.? 그리고 또 버전관리를 하면 안되는 파일들이 있을까요?

ex) media파일같은거?

그리고 수업외 질문입니다만.

장고 rest 프레임워크와 리액트 그리고 도커까지 다 하기에는 어려움이 있어서 우선 제일 기본적인 비 SPA? 웹페이지를 만들고 aws로 sql과 s3스토리지로 배포시도를 하고 있는데 비 SPA 방법으로만 웹페이지를 만들고 실제로 베포끼지 가능한지 여쭙고 싶습니다,

(물론 웹의 완성도는? 떨어질 수 있겠지만요?)

 

항상 좋은 답변 감사합니다.

답변 1

답변을 작성해보세요.

0

안녕하세요.

버전 관리 시스템은 프로젝트의 소스 코드 및 변경 내역을 관리하는 것이 목적이므로, 프로젝트의 핵심적인 부분에 해당하는 소스 코드와 필요한 리소스 파일들을 중점적으로 포함하는 것이 권장됩니다. 필요에 따라 제외할 파일들을 명확하게 정의하고, 프로젝트의 효율적인 관리와 협업을 위해 적절한 파일들을 버전 관리에 포함 또는 제외하는 것이 필요합니다.

버전관리에서 제외해야할 파일들은 다음과 같습니다.

  1. 빌드 결과물 : 버전관리에서 제외해야할 static 파일은 collectstatic 명령을 통해 생성된 static 파일입니다. settings.STATIC_ROOT 설정에 지정된 경로로 복사되는 파일들을 말합니다. 복사본을 버전관리에서 제외시키는 것일뿐, 원본이 되는 static 파일들은 버전관리에 포함시키시지는 것이 맞습니다.

  2. 설정파일 : 구동 환경에 따라 달라질 수 있는 설정들은 포함시키지 않는 것이 맞습니다.

  3. db.sqlite3, MEDIA 파일 : 프로그램 소스코드가 아니며, 프로그램 구동 중에 생성되는, 유저가 업로드하는 파일들이므로 버전관리에서 제외시키는 것이 맞습니다. // 개발 시에 팀원 들간의 쉬운 공유를 위한 편의를 목적으로 버전관리에 넣으시는 분들이 많지만, 이 부분에서 불필요한 충돌(Conflict)이 많이 발생하여, 이 충돌을 해결하는 데에 더 많은 시간을 소모하곤 합니다. // 각 팀원의 노트북에서 수행되는 서버는 그 팀원의 데이터 만으로 구성되는 서버여야 하며, 개발용으로 공유를 위해서라면 별도의 개발용 서버를 준비하시는 것이 맞습니다. 개발 git branch 기반에서 ci/cd 설정을 하여 개발용 서버로 자동배포토록 하는 거죠. 현업에서도 그렇게 합니다. // 개발용 서버와 배포용 서버를 분리합니다.

  4. __pycache__ : 프로그램 구동 시에 자동 생성되는 파일이므로 제외시키는 것이 맞습니다.

SPA 접근이 비 SPA 접근보다 우월하다거나, 완성도가 높은 것이 아닙니다. 상황에 따른 선택과 구현이 있을 뿐입니다. 제 강의에서도 장고를 통해, 하나의 웹서비스를 다양한 접근으로 구현할 수 있음을 보여드린 것이구요.

말씀하신 접근도 서비스에서 훌륭한 접근입니다.

네이버 페이지를 보세요. SPA가 아닙니다. ;-)

일반적인 웹페이지는 비 SPA 접근으로도 충분하며, 구글닥스나 지도와 같은 UI 인터랙션이 많은 서비스는 SPA로 구현하시는 것이 개발편의성이 좋을 수는 있습니다만, 개발비용이 많이 들어가죠.

화이팅입니다. :-)

이광현님의 프로필

이광현

질문자

2023.04.19

감사합니다. 교수님 ^^