만약에 자주 가져와야 하는 이미지 URL을 S3에서 가져오는 것과 RDS에 넣어두고 가져오는 것 중 어떤 방법이 비용적으로 절약될지에 대해 아키텍처 비용 분석을 해보겠습니다.
S3는 오브젝트 스토리지로, 대용량 정적 파일 저장에 최적화되어 있습니다. 이미지, 동영상, 파일과 같은 정적 자산을 저장하고 제공하는 데 적합합니다.
항목 | 비용 예시 |
---|---|
저장 비용 | $0.023/GB (서울 리전 기준) |
GET 요청 | $0.0004/1,000건 |
데이터 전송 비용 | $0.09/GB (인터넷으로 전송 시) |
장점:
단점:
이미지 URL을 RDS에 넣어두고 가져온다면, 다음과 같은 비용이 발생합니다.
항목 | 비용 예시 |
---|---|
인스턴스 비용 | $0.10~$0.50/시간 (DB 인스턴스 크기에 따라) |
저장 비용 | $0.10/GB |
네트워크 전송 비용 | $0.09/GB (인터넷으로 전송 시) |
장점:
단점:
가정:
항목 | S3 비용 | RDS 비용 |
---|---|---|
저장 비용 (100GB) | $2.30/월 | $10/월 |
요청 비용 (1억 건) | $40/월 | 부하 증가로 추가 비용 발생 |
데이터 전송 비용 (300GB) | $27/월 | $27/월 |
총 비용 | $69.30/월 | $100~150/월 이상 |
상황 | S3 선택 시기 | RDS 선택 시기 |
---|---|---|
대용량 이미지 저장 | ✅ 추천 | ❌ 비추천 |
자주 변경되는 이미지 URL | ❌ 비추천 | ✅ 추천 |
조건부 쿼리 필요 | ❌ 비추천 | ✅ 추천 |
비용 절감 필요 | ✅ 추천 | ❌ 비추천 |
이미지 URL을 자주 가져와야 한다면, S3에 저장하는 것이 더 비용 효율적입니다.
특히, CloudFront와 같은 CDN을 사용하면 네트워크 비용과 요청 비용을 더욱 줄일 수 있습니다.
💡 추천 아키텍처:
1. 이미지를 S3에 저장
2. CloudFront로 CDN 캐싱
3. RDS에는 이미지의 메타데이터만 저장 (예: 이미지 이름, 태그, 설명 등)
4. 필요 시 S3 URL을 DB에 캐싱하거나, Redis로 캐싱하여 조회 속도를 더욱 높임