인프런 커뮤니티 질문&답변

로코님의 프로필 이미지

작성한 질문수

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

다음으로

개인 프로젝트를 위해 도움 요청합니다!

해결된 질문

21.04.22 14:37 작성

·

473

4

안녕하세요. 비전공자로써 국비지원 학원을 수료한 취준생입니다.

학원에서 만들었던 프로젝트가 포트폴리오로 내세우기에는 너무나도 부족해서 선생님의 강의를 들으며 프로젝트를 새로 만들 계획입니다.

프로젝트를 만드는 과정에서 무척 궁금한 부분이 생겼는데 바로 '이미지 첨부'에 관한 것입니다.

학원에서 프로젝트를 만들 때는 모르는 부분이 있으면 구글링하고 이것저것 헤딩해보면서 하다보니 그때 사용했던 방법은 Multipart를 통해 이미지를 프로젝트 파일 내에 있는 폴더에 저장하는 방식을 사용했습니다.

하지만 돌이켜 생각해보니 이미지를 많이 사용하는 사이트를 만든다고 했을 때, '프로젝트 파일의 용량이 너무 불어나면 안 좋지 않을까?' 하는 생각이 들었고,

또한, 기왕에 프로젝트 제대로 만들어 볼 거 AWS Free tier를 활용해서 배포까지 해야 취업에 유리하지 않을까 싶어서 배포단계까지 가는 것을 목표로 하고 있는데요.

그렇다고 했을 때, 배포 중인 애플리케이션의 이미지 첨부 기능에 에러사항이 있지는 않을까, 하는 걱정이 앞섭니다. (아직 애플리케션을 배포해 본 경험은 없습니다...)

사실, 구글 클라우드 스토리지라는 것이 있다기에 연동은 해봤지만 제대로 활용해보지는 못했습니다. 필요하다고 하면 다시 제대로 배워 볼 생각입니다.

이하 각설하고 제 질문은,

1. 실무에서 이미지 첨부 기능을 주로 어떤 스토리지 방식에 의존하는지

2. 작은 규모의 프로젝트이지만 이미지가 약 100장(+이미지 첨부 게시판) 정도일 때 어떤 스토리지 방식을 채택하는 것이 좋을지

입니다.

이게 참... 강의 주제에 벗어나는 질문이지만 너무 궁금한 부분이고, 비전공자이다보니 주변에 실무 종사자 분들이 없어서 실례를 무릅쓰고 이런 질문을 올려보게 되었습니다.

혹시라도 다른 실무 종사자 분들의 조언이 또 있다면 감사히 받겠습니다.

답변 1

12

codesweaver님의 프로필 이미지

2021. 04. 22. 15:46

이미지 100장 정도면 웹 서버에서 바로 들고 있어도 문제없을 것 같습니다. 한 폴더내에 서브폴더가 수천, 수만개 단위로 생기는게 아니라면 관리는 크게 문제 없습니다. (한 파일이 몇백MB 이런 상황만 아니면..)

지속적인 서비스를 운영할것이라는 전체하에 이미지를 어떻게 보관할것인가 하는 점은 상황에 따라 적절한 방법을 선택하시면 되긴 합니다. 중요한건 한 폴더내에 과도한 서브폴더와 이미지가 몰리는것을 막는것과 원치않는 덮어씌기를 막는것이 중요합니다. 저는 아래와 같이 날짜를 이용하여 폴더를 가르는 방법을 사용했었습니다.

/images/2021/0422/1411... 13011_01.jpg

/images 아래에 년도(year)로 한번 레벨을 나눕니다. 이렇게 하면 서비스가 100년이 지나도 images 아래에는 100개 남짓의 폴더만 생깁니다. 또 2021 아래는 월(month)과 일(day)로 레벨을 나눕니다.  이렇게 하면 한 년도(year) 폴더 아래에는 365개 남짓의 폴더만 생깁니다. 그 아래는 unix time값으로 파일명을 생성한 뒤 언더바를 붙이고 파일번호(01, 02 등등 한사람이 여러 파일을 동시에 올릴 수 있으니)를 붙여서 구분합니다. 저정도의 레벨 구분만으로도 수십명 동시접속 서비스에서는 충분합니다. 동시 접속 수백, 수천단위 서비스에서는 추가적인 구분값이 필요하지만, 포트폴리오 사이트라면 이정도면 문제 없습니다.

이미지를 업로드하는 서비스가 많다면 images 아래에 각 서비스별로 폴더를 나누기도 합니다 (images/qna, images/goods 등등). 그렇게 하면 좀더 구분해서 관리할 수 있습니다.

그리고 이미지량이 상당할것 같다면 웹서버에서 직접 들고있기 보단 CDN 서버에 올리기도 합니다. CDN에 이미지를 업로드하고 경로를 반환하는 메서드를 작성해 놓고 사용하시면 편리합니다. 서버 용량 걱정도 안하셔도 되구요. (그러나 CDN 서비스 이용하다보면 이 빌어먹을 CDN 서버가 생각보다 자주 뻗습니다, 괜찮은 회사를 잘 고르시길..)

그리고 클라이언트가 파일업로드를 할 수 있는 서비스라면, 반드시 이미지 라이브러리 등을 이용해서 이미지 크기 재조절이나 퀄리티의 조절등을 해서 용량을 압축하는게 좋습니다. 요새는 휴대폰에서 찍은 이미지를 바로 업로드 하는 경우가 많은데 그런 사진들도 해상도와 용량이 어마무시하게 크기 때문입니다.

(일하기 싫어) 주저리 주저리 쓰고 도망갑니다.

로코님의 프로필 이미지
로코
질문자

2021. 04. 22. 18:28

작은 프로젝트 단계에서 활용하기 좋은 방법과 실무 사용 예시까지 자세한 답변 감사합니다!

프로젝트 자체의 용량이 불어나는 것에 대해 걱정했는데 이 부분에 대해서는 실무에서도 똑같은 방법을 사용하고 있고, 특히 작은 프로젝트에서는 크게 걱정할 부분은 아니었군요.

그리고 장기 운영 시 /images 폴더 안에서 서비스별로, 연도별로 구분하는 방법은 언뜻 보면 간단하지만 제 수준에서는 미처 생각하지 못했습니다. 정말 감사합니다.

이미지의 조절은 Cloudinary 같은 툴이 좋다고 들었습니다. 문제는 제가 이런 툴을 애플리케이션에 접목시키는 것에 익숙치 않다는 것이지만, 적용 방법 등을 잘 배워서 사용해봐야겠습니다.

바쁘신 와중에도 막간을 이용해서 자세히 답변해주신 점 정말 고맙습니다. ㅎㅎ

김영한님의 프로필 이미지
김영한
지식공유자

2021. 04. 22. 22:03

codesweaver님 고맙습니다.

추가로 AWS라면 이미지를 S3에 업로드 하고, cloudfront라는 CDN서비스에 엮어서 사용하는게 편리합니다. 그런데 포트폴리오라면 codesweaver 조언이 좋다 생각합니다.

감사합니다.

로코님의 프로필 이미지
로코
질문자

2021. 04. 22. 22:17

추가 답변 감사합니다.

포트폴리오 프로젝트는 일단 기존 방식으로 이미지를 저장하고,

cloudfront 적용 방법도 어떤 방식일지 호기심이 생기네요.

나중에 꼭 한번 공부해봐야겠습니다!

정성훈님의 프로필 이미지

2022. 09. 12. 23:56

치코리타!치코리타!치코리타!치코리타!치코리타!치코리타!치코리타!치코리타!치코리타!치코리타!치코리타!치코리타!치코리타!치코리타!치코리타!치코리타!치코리타!

로코님의 프로필 이미지

작성한 질문수

질문하기