CloudFront 적용하여 이미지 로딩 속도 높이기

Sun choi·2024년 11월 27일

NEW 지식

목록 보기
30/34
post-thumbnail

🏁 문제 상황

  • 이미지 데이터를 직접 S3에서 불러올 경우, 네트워크 지연 및 트래픽 처리 병목 현상이 발생했다.
  • 특히 대용량 데이터 요청이 많아지면 시스템 성능이 저하되고, 사용자 경험에 부정적 영향을 미친다고 판단했다.

💡 CloudFront 도입 이유

1. 콘텐츠 전송 속도 향상

  • AWS CloudFront는 글로벌 엣지 로케이션을 통해 데이터를 캐싱하여 사용자 가까운 곳에서 데이터를 전송할 수 있도록 한다.
  • 이를 통해 네트워크 지연을 최소화하고, 빠른 응답 속도를 제공할 수 있다.

2. 비용 효율성

  • S3로 직접 요청하는 횟수를 줄여 데이터 전송 비용을 절감할 수 있다.
  • 자주 요청되는 데이터는 캐시에서 제공되므로 S3 I/O 비용 역시 감소한다.

3. 확장성

  • 고트래픽 환경에서도 CloudFront는 자동으로 확장되어 서비스 안정성을 유지할 수 있다.
  • 대규모 트래픽이 발생하더라도 성능 저하 없이 안정적으로 대응할 수 있다.

🚀 구현 순서도

  • CloudFront distributions 생성
  • S3 버킷 정책 설정
    • S3에서 버킷 정책에 CloudFront 전용으로 제한하는 정책으로 변경
    • S3 Block Public Access 설정
    • CloudFront를 통해 이미지를 제공하려면 S3 버킷이 직접 공개되지 않아야 하므로, 공개 액세스를 차단하는 것이 일반적으로 권장
    • CloudFront를 통해서만 접근 가능
  • 도메인 연결 및 HTTPS 설정
    • CloudFront 도메인을 통해 S3 파일을 접근하도록 설정
    • CloudFront 기본 도메인을 사용 -> 이미 HTTPS가 활성화되어 있으니 추가 설정은 필요 없다

  • CloudFront와 S3 연동 테스트
    • CloudFront 배포의 도메인 이름으로 S3에 저장된 파일 요청
    • S3 URL로 요청 시 403 Access Denied 오류가 반환되면 정상적으로 연동
  • 코드와 연동
    • 이미지를 업로드한 뒤 반환하는 URL을 CloudFront URL로 변경
    • S3 URL을 그대로 사용하면 성능 최적화나 보안의 이점이 사라짐

  • CloudFront의 TTL(Time-to-Live) 설정
    • 캐싱된 콘텐츠의 유효 기간을 제어하여 성능 최적화와 비용 절감
    • CloudFront가 캐싱된 이미지를 제공하면 대역폭 사용량과 비용 절감 가능
    • 자주 변경되지 않는 이미지라서 아래와 같이 설정
      • 기본 TTL: 3600초 (1시간)
      • 최대 TTL: 86400초 (1일)
      • 최소 TTL: 600초 (10분)
    • 변경 사항이 적용되더라도 최소 10분 이후에 업데이트가 반영됨


📊 성능테스트 결과 비교

요청 수파일크기평균응답시간(ms)평균 TPS(/sec)에러율(%)
S3 직접 접근1004.1MB9187.80
CloudFront1004.1MB69410.40
S3 직접 접근1000500KB80159.40
CloudFront1000500KB679107.60

1. 4.1MB 파일 테스트 (100건 요청)

  • CloudFront
    • 평균 응답 시간이 S3(918ms)보다 약 24.4% 더 빠름
    • 평균 TPS도 S3(7.8 TPS)보다 약 33.3% 더 높음
    • 대용량 파일에서도 CloudFront의 성능이 우수

2. 500KB 파일 테스트 (1000건 요청)

  • CloudFront
    • 평균 응답 시간이 S3(801ms)보다 약 15.2% 더 빠름
    • 평균 TPS도 S3(59.4 TPS)보다 약 81.2% 더 높음
    • 소용량 파일에서도 CloudFront의 성능 차이가 더욱 두드러짐

📋 결론

  • 파일 크기에 관계없이 CloudFront는 S3에 직접 접근하는 것 대비 더 빠른 응답 시간과 높은 TPS를 제공하였다. 이는 엣지 서버 캐싱 및 효율적인 네트워크 처리가 주된 이유라고 판단된다.
  • CloudFront는 파일 크기와 상관없이 성능이 S3 직접 접근보다 더 뛰어나며, 대규모 트래픽에서도 확장성이 훨씬 뛰어나다. 성능, 안정성, 확장성을 고려할 때 CloudFront 사용이 명확히 유리하다.
profile
풀스택 개발자의 공부기록 📖

1개의 댓글

comment-user-thumbnail
2025년 6월 11일

성능 테스트는 어떤걸로 하셨나요??

답글 달기