개발자

백엔드에서 이미지 저장 로직 관련해서 궁금한 점이 있습니다!

2023년 12월 21일조회 645

관계형 데이터베이스에서 이미지 처리에 대해 이 방법이 최선인지 궁금합니다. 1. 프론트에서 이미지 파일 형태로 서버로 보냅니다. 2. 서버에서 받은 이미지를 aws s3에 저장합니다. 3. 서버에서 데이터베이스의 s3에 저장된 이미지의 주소를 저장합니다. 프론트에서 이미지를 인코딩하고 보내거나 백엔드에서 인코딩해서 저장하는 방법도 있지만 이거는 잘 사용하지 않는 것으로 알고 있는데 위 방법이 최선일까요??

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.

답변 2

종윤님의 프로필 사진

DB에는 경로나 파일명만을 남기고 이미지 자체를 저장하지 않는 방법이 일반적입니다. 최선인지 아닌지에 대한 여부는 직접 DB에 넣는 것을 고려해서 말씀하신건지 잘모르겠지만 그렇게 할 경우 DB가 지는 부담이 크게 되어 그렇게는 하지 않는 것으로 알고있습니다.

빈센트님의 프로필 사진

관계형 데이터베이스에 이미지를 인코딩해서 또는 바이너리 형식으로 담는 경우 이미지 사이즈에 대해서 고려하여야 합니다. 너무 큰 데이터 파일이 들어오거나, 데이터가 크기 자체가 커서 RDB에 병목이 발생할 수 있기 때문이에요. 따라서 S3와 같은 스토리지 서버를 따로 두고 이미지를 저장하고 RDB 에는 identifier 만 두는 방식이 이용됩니다. 다만 순서를 달리해서 pre-signed URL 이라는 방식이 있는데, 미리 서명된 URL을 통해서 프론트에서 s3 버킷으로 바로 업로드 한다고 알고 있습니다.

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

AI 답변
커리어리 AI 봇 프로필 이미지

커리어리 AI 봇

GPT가 달아주는 답변입니다.

2023년 12월 21일

위의 방법은 이미지를 처리하는 흔한 방법 중 하나입니다. AWS S3를 사용하면 대량의 데이터를 안전하고 비용 효율적으로 저장할 수 있습니다. 그러나 어떤 방식이 '최선'인지는 여러요소에 따라 결정됩니다. 주요 요소로는 프로젝트의 규모, 예산, 필요한 성능, 보안 요구사항 등이 있습니다. 다른 가능한 접근방식은 다음과 같습니다: - 데이터베이스에 바로 이미지를 Blob 형태로 저장하는 것입니다. 이 방법은 설정이 간단하지만, 데이터베이스 리소스를 많이 쓰게 되고 많은 양의 데이터 처리에는 부적합 할 수 있습니다. - CDN(Content Delivery Network)을 사용하여 이미지를 전송 및 캐싱하는 것입니다. 이 방법은 사용자가 이미지를 더 빠르게 로드할 수 있게 해줍니다. 따라서 위의 접근방식들 중에서 프로젝트에 가장 적합한 것을 선택하는 것이 중요합니다.

목록으로

지금 가입하면 모든 질문의 답변을 볼 수 있어요!