NB] 위클리 페이퍼: Node.js 백엔드 개발 시작하기[14]

권나현·2025년 7월 12일
post-thumbnail

Q. 백엔드 서버에서 이미지 업로드를 구현하는 다양한 방식에 대해 설명해 주세요.

1. 로컬 서버 파일 시스템에 저장

1-1.개요

  • 이미지를 서버의 디스크(폴더)에 저장한다.

  • 이미지 URL을 DB에 저장하여 접근 가능하다.

1-2. 특징

  • 빠르게 구현 가능하다.

  • 작은 프로젝트나 테스트에 적합하다.

1-3. 기술 스택

  • Node.js + multer (Express 미들웨어)

  • Python Flask + werkzeug

  • PHP + move_uploaded_file()

1-4. 장점

  • 구현 간단, 추가 인프라 불필요하다.

  • 인터넷 연결 없이 동작 가능하다.

1-5. 단점

  • 서버가 재배포되면 이미지 소실 가능하다.

  • 확장성 부족하다. (서버 여러 대일 경우 공유 어려움)

  • 백업, 보안 관리 어려움이 있다.

2. 클라우드 스토리지 (S3 등)에 저장

2-1. 개요

  • AWS S3, Google Cloud Storage, Azure Blob 등에 저장한다.

  • 클라이언트가 직접 업로드하거나, 백엔드가 중계한다.

2-2. 방식

  • 서버 업로드 방식

    • 클라이언트 → 서버 → S3

    • 서버가 S3 SDK로 이미지 업로드

  • 프리사인드 URL 방식 (권장)

    • 클라이언트가 백엔드에 요청

    • 서버가 S3에 업로드 가능한 일회용 URL 발급

    • 클라이언트가 해당 URL에 직접 이미지 업로드

2-3. 장점

  • 고가용성, 대용량 지원한다.

  • 서버 부하 감소 (프리사인드 방식)

  • URL 접근 제어 가능하다.

2-4. 단점

  • 클라우드 계정 필요 (비용 발생)

  • 권한 설정, 보안 구성 필요하다.

3. 데이터베이스에 직접 저장 (BLOB)

3-1. 개요

  • 이미지를 바이너리(BLOB) 형태로 DB에 저장한다.

3-2. 사용 예

  • PostgreSQL, MySQL, MongoDB 등에서 가능하다.

3-3. 장점

  • 백업/복구 일괄 가능하다. (이미지 포함)

  • 일관된 저장/조회 API 구성

3-4. 단점

  • DB 성능 저하 (용량 커질수록)

  • CDN 캐싱 등 어려움이 있다.

4. CDN과 연계된 저장

4-1 개요

  • 이미지 업로드 후 CDN(Content Delivery Network)과 연동한다.

  • 빠른 이미지 전송을 위해 전 세계 서버에서 캐싱

4-2. 구성

  • 이미지 저장 위치는 클라우드 (예: S3)

  • CDN (CloudFront, Cloudflare 등)을 통해 배포한다.

4-3. 장점

  • 빠른 응답 속도, 지연 최소화

  • 글로벌 서비스에 유리하다.

4-4. 단점

  • CDN 설정 복잡할 수 있다.

  • 캐시 무효화 정책 필요하다.

5. 고려사항

항목설명
보안확장자 검사, 크기 제한, 인증 처리
성능압축, 썸네일 생성, 이미지 리사이징
확장성서버 분리, 클라우드 사용 고려
URL 관리DB에 경로 저장, CDN 경로 관리

6. 결론: 선택 기준

조건추천 방식
빠른 개발, 단일 서버로컬 저장 + multer
안정성, 스케일, 보안S3 + 프리사인드 URL
민감한 데이터 통제BLOB + DB 보안 적용
글로벌 서비스S3 + CDN 구성
  • 백엔드 서버에서 이미지 업로드를 구현하는 방식은 시스템 요구사항, 스케일, 보안, 성능에 따라 다양하게 구성할 수 있다.
profile
node.js 백앤드 개발자가 되기 위한 Study Vlog

0개의 댓글