3600만 명의 사용자를 보유한 SNS 피드 서비스에서 3~10MB 이미지 업로드로 인한 저장 공간 급증과 비용 상승 문제는 스케일과 비용 최적화 관점에서 신중히 접근해야 합니다. 다음은 현실적이고 효과적인 개선 접근 방법들입니다:
---
✅ 1. 이미지 압축 (Image Compression)
설명:
업로드 시점에서 이미지를 자동으로 압축하여 저장 공간을 줄임.
WebP, AVIF 같은 최신 포맷으로 변환하면 JPEG 대비 30~70% 절약 가능.
구현 방식:
서버 또는 클라이언트에서 업로드 전 압축 (선호: 클라이언트 측 압축 + 서버 검증).
사용 라이브러리 예: sharp, ImageMagick, libvips.
---
✅ 2. 썸네일 및 리사이징 전략
설명:
원본 이미지는 보관하되, 피드용으로는 작은 버전(예: 1080px, 720px, 360px 등)을 제공.
필요한 해상도에 따라 요청 시 이미지 자동 리사이징.
구현 도구:
AWS S3 + Lambda + CloudFront: 요청 시점에 이미지 리사이징 → 캐시.
imgproxy, thumbor 등 오픈소스 이미지 프록시 서버.
---
✅ 3. 저장 전략 개선 (스토리지 티어링)
설명:
빈번히 접근되지 않는 오래된 원본 이미지를 저렴한 스토리지로 이전 (예: AWS S3 Standard → Glacier).
“콜드 데이터”에 대한 자동 아카이빙 정책 설정.
이점:
저장비 대폭 절감, 사용자 경험 유지.
---
✅ 4. 중복 이미지 제거 및 해시 처리
설명:
같은 이미지를 여러 사용자가 업로드할 경우, 중복 업로드 방지.
이미지 해시(MD5, SHA256) 비교를 통해 기존 이미지 재사용.
---
✅ 5. 업로드 제한 정책
설명:
업로드 크기를 하드 리밋 (예: 최대 5MB).
모바일 앱에서 촬영 시 자동 압축 적용 유도.
---
✅ 6. CDN 활용으로 전송 비용 절감
설명:
이미지 서빙은 CloudFront, Cloudflare 같은 CDN을 통해 제공하여 전송 비용을 절감.
원본 이미지 접근은 제한하고 캐싱을 극대화.
---
🔒 보너스: 개인정보 및 보안 고려
EXIF 메타데이터 제거: 위치정보 등 민감 정보 삭제 → 보안 및 용량 감소 효과.
---
📌 종합 적용 예시
1. 클라이언트에서 WebP 포맷으로 압축 업로드.
2. 서버에서는 원본 + 3종 썸네일로 변환 후 저장.
3. 90일 이상 지난 이미지 중 미사용 원본은 Glacier로 이전.
4. CDN + S3 버킷 정책으로 비용 최적화.
'4차산업혁명의 일꾼 > 백엔드' 카테고리의 다른 글
가비지 컬렉터(Garbage Collector, GC) 특징 (2) | 2025.06.06 |
---|---|
코틀린과 tdd (0) | 2025.05.26 |
초급, 중급 , 고급과 특급에 대한 구분 (0) | 2025.05.24 |
항해 Lite 백엔드 코스 1주차 WIL (2) | 2025.05.24 |
JPA 간단정리 2 (0) | 2024.09.16 |