본문 바로가기
카테고리 없음

S3 파일 다운로드 설계

by 디로그온 2026. 4. 16.
반응형
S3 파일 다운로드 설계 (Server to Server 포함)

📥 S3 파일 다운로드 설계 (Server to Server 포함)

파일 다운로드는 단순 기능이 아니라 아키텍처 문제입니다.
이번 글에서는 4가지 다운로드 방식과 실무 활용 패턴을 정리합니다.

✅ S3 다운로드 방식 4가지

  • 📂 Public URL
  • 🔐 Presigned URL
  • 🖥 서버 중계 다운로드
  • 🔗 Server to Server 다운로드

🔗 Server to Server 다운로드란?

서버가 직접 S3에서 파일을 가져와 내부적으로 사용하는 방식입니다.

  • ✔ 클라이언트가 아닌 서버 간 통신
  • ✔ 외부 노출 없이 안전한 처리
  • ✔ 배치, 데이터 처리에 주로 사용

📊 언제 사용하는가?

  • 📦 이미지 리사이징 / 썸네일 생성
  • 📄 PDF 변환, 파일 가공
  • 📊 로그 분석 및 데이터 처리
  • 🔄 다른 스토리지로 파일 이동

📌 즉, 사용자 다운로드가 아니라 “서버 내부 작업용 다운로드”입니다.

⚙️ 동작 구조

기본 흐름은 다음과 같습니다.

  • 1️⃣ Spring 서버가 S3에 요청
  • 2️⃣ S3에서 파일 스트림 수신
  • 3️⃣ 서버에서 파일 처리 (변환/분석)
  • 4️⃣ 결과 저장 또는 다른 서비스로 전달

🧠 핵심 설계 포인트

  • ✔ 메모리 사용 최소화 (스트리밍 처리)
  • ✔ 대용량 파일은 분할 처리
  • ✔ 네트워크 비용 고려
  • ✔ 재시도 로직 설계 (Retry)

📌 Server to Server는 단순 다운로드가 아니라 데이터 처리 파이프라인입니다.

🔐 보안 특징

  • ✔ IAM Role 기반 접근 (Access Key 불필요)
  • ✔ 외부 URL 노출 없음
  • ✔ 내부 네트워크에서 안전하게 처리

📌 가장 안전한 방식 중 하나입니다.

⚠ 주의사항

  • ❌ 서버 메모리에 파일 전체 로드
  • ❌ 대용량 처리 시 타임아웃
  • ❌ 병렬 처리 설계 부족

📌 특히 대용량 파일은 반드시 스트리밍 기반 처리가 필요합니다.

📊 다른 방식과 비교

방식 사용 대상 특징
Public URL 이미지 빠르지만 보안 약함
Presigned URL 사용자 다운로드 보안 + 성능 균형
서버 중계 제어 필요 유연하지만 비용 큼
Server to Server 내부 처리 가장 안전, 백엔드 작업용

🎯 결론

S3 다운로드는 상황에 따라 전략이 달라집니다.

  • ✔ 사용자 다운로드 → Presigned URL
  • ✔ 공개 리소스 → Public URL
  • ✔ 내부 처리 → Server to Server

특히 Server to Server는 백엔드 아키텍처의 핵심입니다.

👉 여러분은 S3 파일을 어떤 방식으로 처리하고 있나요?