[CDN] 이미지 최적화 cloudinary 와 cloudfront 함께 이중 CDN으로 쓴다면?

date
Sep 4, 2023
slug
cdn-이미지-최적화-cloudinary-cloudfront-함께-이중-CDN-으로-쓴다면
category
Dev
status
Public
tags
SEO
Next.js
aws
keywords
summary
cloudinary 비용이 어마무시한데, cdn을 이중으로 태운다면 어떻게 될까
type
Post
Last updated
Sep 5, 2023 12:27 AM
Created time
Sep 4, 2023 01:11 AM

왜 시작하게 되었는가?

notion image
프로젝트 내에서 이미지 최적화를 위해 cloudinary라는 서비스를 사용중인데, 이번년도 중순에 잠시 엄청난 과금이 되었던 적이 있었다. 아직까지 원인을 찾지 못했지만 그 당시 이 이슈를 해결하고자 cloudinary + aws cloudfront 이중 CDN을 테스트했었는데 실제 효과가 있을지 궁금해져서 이번에 비용을 계산해보고자 한다.
 

CDN이란?

콘텐츠 전송 네트워크(CDN)은 데이터 사용량이 많은 애플리케이션의 웹 페이지 로드 속도를 높이는 상호 연결된 서버 네트워크를 의미한다.
 

CDN이 중요한 이유?

주 목적은 대기 시간을 줄이거나 네트워크 설계로 인해 발생하는 통신 지연을 줄이는 것.
클라이언트와 웹 사이트 서버 간에 중간 서버를 두고 효율성을 높이고, 이를 통해 웹 트래픽을 줄이고 대역폭 소비를 줄이며, 사용자 환경을 개선하게 한다.
 

CDN을 통해 얻는 이점?

  • 페이지 로드 시간 단축
  • 대역폭 비용 절감
  • 콘텐츠 가용성 제고
  • 웹 사이트 보안 강화
 

CDN의 작동 원리?

여러 지리적 위치에 접속 지점(POP) 또는 CDN 엣지 서버 그룹을 설정하는 방식으로 작동. 지리적으로 분산된 이 네트워크는 캐싱, 동적 가속 및 엣지 로직 계산의 원리를 기반으로 작동한다.
  • 캐싱: 더 빠른 데이터 액세스를 위해 동일한 데이터의 여러 복사본을 저장하는 프로세스
  • 동적 가속: 웹 애플리케이션과 클라이언트 사이의 중개 CDN 서버로 인해 발생하는 동적 웹 콘텐츠 요청에 대한 서버 응답 시간을 단축하는 것
  • 엣지 로직 계산: 클라이언트와 서버 간의 통신을 단순화하는 논리적 계산을 수행하도록 계산
 

cloudinary의 요금 정책

notion image
notion image
cloudinary에선 요청대상에 따라 요금 부과 방식이 다르다.
또한, 크레딧이라는 내부적인 결제 단위를 사용하기 때문에 화폐가치를 별도로 계산해야 한다.
notion image
지난 1개월을 기준으로 보자면 변환횟수 151.55K회, 대역폭 1.24TB에 용량 523.56GB
1크레딧 당 달러 가치를 계산하면 2750크레딧 내 사용 기준, 1크레딧 당 0.3996달러 := 0.4$
대역폭 1.24TB: 1240GB * 0.4 = 496$
변환횟수 151.55K: 151,550 / 1000 * 0.4 = 60.62$
용량 523.56GB: 523.56 * 0.4 = 209.424$

aws cloudfront의 요금 정책

notion image
notion image
aws는 복잡해보이지만 조금 여유롭게 생각해서 데이터 송신 부분만 봐도 무방할 것 같다.
엣지 컴퓨팅은 1백만건당 0.6$ 정도로 미미한 편이기 때문.
월별 전송 단위가 10TB 이상이 아니라면 용량별 차등가격도 볼 필요 없을 것 같다.
대한민국 기준으로 대역폭(전송?)에 대한 가격은 1GB당 0.120$ + 0.06$ = 0.18$
대역폭 1.24TB를 기준으로하면 1,240 * 0.18 = 223.2$
notion image
cloudinary에서 확인 할 수 있는 지난 한 달의 요청량은 48.4M.
48.4M회 기준으로 http 요청 요금도 계산해보면, 48,400,000 / 10000 * 0.012 = 58.08$
엣지 컴퓨팅은 48.4 * 0.6 = 29.04$
총 정리해보면 아래와 같다.
대역폭 1.24TB: 223.2$
http 요청수: 58.08$
엣지 컴퓨팅: 29.04$
 

결론

cloudfront를 중간에 두어 캐싱하게 하면 cloudinary의 대역폭 요금을 약 500$에서 300$ 정도로 40%정도 부담을 덜 수 있을 것 같다.
하지만, cloudinary의 용량과 변환 요금에는 변화가 없을 것으로 예상된다.
또한 cloudinary는 월 정액제로 2750 크레딧을 고정 할당받기 때문에 이를 다 쓰지 않는 상황에서 cloudfront를 적용하면 오히려 비용이 증가하게 될 것이므로, 크레딧을 초과하는 상황에 고려해볼 필요가 있을 듯 하다.