파일 저장
코드의 목적 : Why? #
- 개발 환경은 window지만 서버는 linux(ubuntu) 이기 때문에 localhost에서도, 서버에서도 동일하게 작동하도록 하려 한다.
- localhost에서 접속 시에는 C드라이브 내부에 파일을 저장 하였지만, ubuntu는 별도 파티션 없이 모두 루트 폴더 내부에 저장된다.
- 현재 local과 server가 동일한 DB를 사용 하기 때문에 local에서 업로드 한 파일이 서버 상에서 불러올 수 없다..
코드 아이디어 : How? #
- 개발 시 업로드 한 파일을 프로젝트 내부에 포함 시켜 github에 함께 올려 release 시 포함 되도록 한다.
장점 : 변경 되는 코드가 적고 간단하다.
단점 :
- 개발 과정에서 업로드 되는 파일을 매번 github에 올려야 함으로 pull/push 시 보안 문제가 야기된다.
- build할 때 마다 변경 사항이 손실 된다.
- 현재 코드에선 상대 경로를 사용하다 보니 예상치 못한 오류가 발생할 수 있다.
- release시 upload폴더를 ssh서버에 전송하여 업데이트 한다.
장점 : 1번 방식에 비해 높은 보안 수준을 가진다.
단점 :
- release때마다 테스트 용도로 사용된 파일들을 취합하여 서버에 보내야 함으로 번거로울 수 있다.
- 호스팅 서버는 ubuntu기반이므로 release branch와 develop branch에서 properties중 file location이 다르게 작성되어야 한다.
- 이미지 서버를 별도로 두어 개발 환경 에서도 이미지 서버에 업로드 하는 방식을 이용한다.
장점 : 개발 환경과 호스팅 서버에서 동일한 코드를 이용하기 때문에 파일 관련으로 신경 쓸 일이 줄어든다.
단점 :
- 추가 서버를 이용함으로써 비용이 요구될 수 있다.
- 1번 방식과 비슷한 보안 취약점을 가진다.
- 개발 시에는 별개의 DB를 사용하여 호스팅 서버에 영향을 주지 않도록 한다.
장점 : 호스팅 서버와 개발 환경이 서로 영향을 주지 않아 복구가 쉽고 높은 보안 수준을 가진다.
단점 :
- release branch와 develop branch
- 에서 properties중 DataSource Setting이 다르게 작성되어야 한다. 2) DB 수정 시 사용한 SQL문을 모든 팀원이 함께 적용 하거나 다른 cloud DB를 이용해야 한다.