티스토리 뷰
2023.04.28 수정
배포 후 2주간 직접 측정해본 request, 데이터 전송량을 바탕으로 계산기를 다시 두드려봤다.
더 정확한 비용 비교가 가능해진 듯 하다.
1. 이 글을 왜 작성하게 되었는가?
필자는 본래 ML 혹은 백엔드 엔지니어지만, 회사 사정에 의해 종종 프론트엔드 작업을 하곤 한다. 학부 시절 배운 웹프로그래밍과, 졸업프로젝트를 하며 꾸역꾸역 React를 배우던 기억을 되살려 겨우겨우 페이지를 하나씩 완성하고 있다.
작업 중이던 웹사이트는 3월 4일, 지난주 토요일에 배포가 되었다. 나는 별 다른 고민 없이 prod와 dev 환경에서 활용될 ec2 인스턴스를 하나씩 만들고, (각각 t3.large와 t3.small) pm2를 통해 정적 파일을 배포한 후 이런 저런 과정을 거쳐 도메인과 연결했다.
배포 후 모니터링을 통해, 부하가 심하면 pm2의 노드 개수를 늘리고자 하는 계획으로 사용자가 피크인 시간대의 cpu 사용량을 확인해본 것이 이번 글을 쓰게 된 계기이다.
피크 시간대에도 t3.large 인스턴스의 CPU 사용률이 채 1프로를 넘기기 힘들어 한다는 것을 확인할 수 있었다. 리소스 낭비를 최소화하기 위해 어떻게 개선할까 고민하던 도중, 지금은 퇴사하신 회사 동료분이 S3 + CloudFront를 통해 정적 웹사이트를 배포한 과정에 대한 세미나를 해줬던 기억이 스쳐 지나갔다.
당시 비용을 90% 이상 절감했다는 내용이 세미나에 있었는데, 충분히 비교 검증한 후 스택 전환을 제안드리고자 EC2 vs. S3 + CloudFront, 정적 웹페이지 배포 비용 비교를 진행해봤다.
참고로, t3.large는 너무 오버 스펙인 듯 하여 t3.small 기준으로 비교를 진행했다.
2. 월 단위 요금 비교
우선 웹 사이트를 배포하고자 할 떄, EC2와 S3, CloudFront가 각각 어떤 태스크에 대한 요금을 청구할지 알아보자.
2.0. 분석 기준
웹사이트를 직접 배포한 후의 데이터를 토대로 분석 기준을 업데이트했다. 8일간의 request 횟수, 데이터 수신량의 평균에 31일을 곱한 값을 기준으로 정했다. 더 정확한 금액 비교가 가능할 듯 하다.
- 기간: 월 단위 (31일)
- Region: 서울 (ap-northeast-2)
- EC2 인스턴스 타입: t3.small
- HTTP/HTTPS 요청 수: 2,700,000
- 데이터 송/수신: 50GB
2.1. EC2
https://aws.amazon.com/ko/ec2/pricing/on-demand/
우선 EC2의 경우, t3.small 기준 인스턴스 유지 비용이 시간 당 0.026USD 이다. 한 달간 쉬지 않고 유지할 경우 월 19.344USD, 2023년 4월 28일 기준 한화 25,900.07원이다.
다음으로, 데이터 송/수신 비용이다. 수신은 보시다싶이 비용이 발생하지 않으며, 송신은 50GB 기준 월 6.3USD, 한화 기준 8,435.20원의 비용이 발생하게 된다.
마지막으로 HTTP/HTTPS 요청에 따른 금액을 확인해보고자 했는데, 따로 비용이 발생하지는 않는 듯 하다. 두 비용을 합하면 25.644USD, 한화 기준 34,335.01원이다.
2.2. S3
https://aws.amazon.com/ko/s3/pricing/
우선, S3 버킷에 정적 웹사이트 파일을 올려두기 위한 비용에 대해 알아보자.
음, 대충 웹사이트 파일이 100MB라고 가정하면 0.025USD, 한화 기준 33.47원의 요금이 발생한다.
다음으로 알아본 것은 S3에서 클라우드 프론트에 데이터를 송신하기 위한 비용이다. 이건 무려 0원이다. 패스하자.
2.3. CloudFront
https://aws.amazon.com/ko/cloudfront/pricing/
이번엔 CloudFront 비용에 대해 확인해보고자 한다.
CloudFront는 다음과 같은 프리 티어 항목이 매달 제공된다.
우선 데이터 송/수신 비용이다. GB 단위인데, 50GB 기준 6USD, 한화 8,027.46원의 요금이 발생할 것이다.
다음으로, HTTP 및 HTTPS 요청에 대한 비용이다. 단위는 10,000콜이며, HTTPS 기반 웹사이트이므로 3.24USD, 한화 기준 4,338.10원의 요금이 발생하게 된다.
종합해보자면, S3 버킷 비용과 CloudFront의 데이터 송/수신, HTTP 메서드 요청 비용을 합하면 9.265USD, 한화 기준 12,406.21원의 비용이 발생하게 된다.
3. 결론
결론적으로, EC2에서 S3 + CloudFront로 정적 웹 사이트 배포 방식을 전환할 시 아래와 같은 비용 절감이 가능해진다.
34,335.01원 -> 12,406.21원, 약 63.8%의 비용 절감
물론 프리티어를 적용하지 않은 계산법인데, 프리티어를 고려하여 계산하면 다음과 같은 비용 절감이 가능해진다.
34,335.01원 -> 33.47원, 약 99.9%의 비용 절감
트래픽이 크지 않은 웹사이트는 CloudFront를 선택하는 것이 비용 측면에서 훨씬 이득이라는 것을 확인해 볼 수 있었다. EC2와 S3 + CloudFront는 컴퓨팅 vs. 저장소의 개념이기 때문에, 후자가 비용 측면에서 훨씬 저렴할 수밖에 없다.
비용 외에도, CloudFront는 엣지 컴퓨팅 기술 등의 많은 장점을 보유하고 있다. 정적 웹사이트의 배포를 해당 스택으로 변경하는 것을 고려해보자.
'DevOps > AWS' 카테고리의 다른 글
[AWS] EC2 로드밸런서 IP가 구글 검색에 노출되는 경우 (0) | 2023.03.28 |
---|
- Total
- Today
- Yesterday
- 규칙없음
- 모델 추론 최적화
- AWS
- 백엔드
- mlops
- uvicorn
- 토스
- Ai
- 정적웹사이트
- 모델 추론
- s3
- 개발자동아리
- 유난한도전
- 메모리 누수
- CloudFront
- Gunicorn
- memory leak
- 회고
- 넷플릭스
- 개발자회고
- 웹사이트배포
- ddd
- Python
- Triton Inference Server
- S3+CloudFront
- 조직문화
- 사이드프로젝트
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |