24. 08. 08 --- 근황
24. 07. 01 ~ 24. 07. 07 - 24. 08. 01 ~ 24. 08. 07
실제 두 기간의 Data-Transfer 요금을 비교해본 결과, 요금이 약 86% 이상 감소했음을 확인했습니다.^0^/)
증말증말 잘됐어요~~~!!
----
최근 AWS 요금이 증가했다고..
개발 시에 테스트 서버 사용을 최대한 지양하자고 하셨다.
테스트 서버는 반드시 필요하다고 생각했고 .. 사용하고 싶었다 ㅜㅜ
그리고
개발 단계에서 테스트 서버를 사용한 것이 요금이 그렇게 많이 청구될 일인가?
원래 AWS 비싸지 않나? 그 정돈 일반적인 요금 수준 아닌가?
만약 과하게 청구되고 있다면 정말 개발 작업 때문일까?
하는 생각이 들어서 청구서를 들여다보기로 했다.
---
아래 내용은 사내 회의에서 발표했던 것을 상세 데이터나 사내 이슈를 제외하고 정리해서 올리는 것이지만
최대한 앞 뒤가 맞게 설명할 수 있도록 최선을 다해보겠음..
아마존 결제 청구서에 가면 각 서비스마다 얼마가 청구되었는지 전체 내역과 상세 내역이 나온다.
그런데 한 가지 특징이,
Elatice Compute Cloud (EC2 등 서버 관련) 요금과 Data Transfer (S3 등 데이터 전송 관련) 요금이 거의 동일하게 나왔던 것이다.
오잉?
$0.126 per GB - first 10 TB / month data transfer out beyond the global free tier
이 내역으로 상당한 요금이 청구되었고 또 우리 예상보다 많은 데이터가 오고간 것을 확인 가능했다.
이 항목은 AWS 에서 외부 인터넷으로 데이터가 전송된 요금으로 S3 에서 데이터를 요청한 항목으로 추정이 가능하다.
참고로 우리는 S3 에서 정적 웹사이트의 이미지 파일을 저장하거나 애플리케이션에서 만들어지는 파일 등을 저장한다.
일단 EC2 관련 청구서를 들여다보며 팀장님의 오해는 풀렸는데
우리는 온디맨드 서버를 이용하고 있으니 일단 인스턴스를 켜두는 비용 자체가 비쌈..
사용량 자체는 애들 용돈 수준으로 나왔음 'ㅅ'..!!!
-> 그래서 일단 테스트서버에서 개발을 계속 할 수 있게 됨. ㅎㅎㅎ
뭐 어쨌든 S3 요금이 우리 예상보다 더 많이 나오고 있었고 EC2 요금과 엇비슷하게 나오고 있으니 해결이 되어야하는 문제긴 했다.
게다가 4월달 쯤에 도쿄 리전에 인스턴스를 하나 만들고 정적 페이지를 만들어두었는데
그 정적 페이지에 있는 리소스를 "한국" 리전에 있는 S3 에서 가져오고 있었던 이슈도 있었음...'ㅅ'
S3 가 "같은 리전"끼리 무료인 거지 도쿄 리전에서 한국 리전에 있는 버킷 파일 가져다 쓰면 당연히 요금이 나가고 하니깐..
버킷 생성이나 관리는 내가 안 하고 있었어서 몰랐는데 요런 이슈가 있었을 줄은 몰랐다.
그리고 CDN 연결도 전혀 안 되어 있어서 완전 급하다고 생각해서 두 가지를 건의했는데
1. 버킷 리전 변경
2. CDN 연결 (Cloud Front)
그 중에 2번...
우리 S3 에는 CDN 이 1도 적용되어있지 않은 문제가 있었고
얼른 CDN 을 적용하기 위해 AWS 에서 제공하는 Cloud Front 서비스를 훑어보았다.
일단 Cloud Front 를 단 몇 줄로 정리해보면
- 지리적 제약 없이 전 세계 사용자에게 빠르게 콘텐츠를 전송하는 기술로, 웹 캐시 클라우드 서버.
- 클라이언트가 콘텐츠를 요청할 시에 지연 시간이 가장 낮은 엣지 로케이션(캐시 서버)에서 콘텐츠를 즉시 가져오는 방식.
- 사용자와 물리 서버의 물리적인 거리를 캐시 서버로 줄여 콘텐츠 로딩 속도가 개선.
- 하지만 우리는 일단 로딩 속도 개선 문제보다 요금 개선에 중점을 두고 요금 이야기를 해봅시다.
Cloud Front 를 도입해야하는 이유는 여러 가지가 있었다.
Cloud Front 를 도입해야하는 이유
S3 → Cloud Front 데이터 전송 무료
S3 에서 클라우드 프론트로 데이터 전송은 일단 무료임ㅋ굿ㅋ
S3 → 인터넷 요청
S3 에서 인터넷으로 데이터 송신하는 비용은 0.126 USD 달러
Cloud Front → 인터넷 요청
클라우드 프론트는 0.120 USD 달러
사실 엄~~~청 대단한 차이는 아니지만! 그래도 용량이 많아질수록 차이는 분명 날 것임.
S3 / Cloud Front 요금 비교
S3 → 인터넷 | Cloud Front → 인터넷 |
0.126 | 0.120 |
- 개별 요금이 드라마틱하게 많이 차이나는 편은 아님.
- 물론 10TB 가 넘는 최소 트래픽을 가진 유저는 AWS 와 합의해서 요금 할인을 받을 수도 있다고는 하지만..
- 하지만 클라우드 프론트의 강점은 다른 곳에 있음.
Cloud Front 강점
클라우드 프론트는 매월 1TB 까지 무료 사용 가능하다. 심지어 프리티어가 지나도 제한 없음 !
HTTP / S 요청도 천만 개 무료! 2백만 건 클라우드 프론트 함수 호출 무료!
아니 이걸 적용 안 해?????당장 하자고!!!!!!
만약 진작 Cloud Front 를 도입했다면…
저 빨간색 S3 요금은 0원 이었을 것...
왜냐하면 우리 서비스는 1TB 이하의 데이터 요청이 일어나고 있기 때문에...T_T;
클라우드 프론트를 진작 적용하고 있었다면 Data-Transfer 관련 요금은 아예 나오지 않았을 것 !!!!!!!!이다!!!!!111
Cloud Front 적용 시 주의할 점
Cloud Front 로 호출되는 EndPoint 인지
- 어떤 엔드포인트로 파일(이미지)가 호출되는지 모두에게 공유되고 인지하고 있어야 추후 어디에서 불필요한 호출이 발생하거나 누수가 되는지 인지할 수 있음.
- CloudWatch 적용 후에 특히 중요하겠죠?
그래서 현재 요금이 많이 나오는 것은 -> 클라우드 프론트를 도입하면 해결이 가능할 것 같으며
최대한 빨리 적용하고 다음 프로젝트로 넘어가는 것이 나을 것 같다는 건의를 발표했다 ^ㅅ^.../)
팀원들의 몇 가지 의문이 있었는데
1. HTTP / S 요청 간의 리소스가 많이 드는가?
- CloudFront <-> S3 끼리는 HTTP / Client <-> CloudFront 끼리는 HTTPS 요청을 할 수 있다고 하는데 이런 차이가 있어서 우리가 뭔가 따로 해야할 작업이 있는가?
A: 따로 없는 것으로 파악되고 만약 클라우드 프론트에서 요청할 때 HTTPS 요청만 허용하고 싶다면 인증서가 필요함. -> AWS ACM 에서 AWS 서비스 끼리 인증할 때 필요한 인증서를 무료로 제공해주고 있음. ㅎㅅㅎ/
다만 HTTP / S 요청 가격이 다릅니다..
2. 우리가 버킷을 서울/도쿄로 따로 관리하려고 하는데 클라우드 프론트 리전도 따로 설정해야 하는가?
A: 아시아 리전은 연결되어있음. 가격 분류에서 3번 째 클릭 !
3. 우리 서비스가 프로모션 변경 때문에 중간중간 이미지 변경이 일어나는데 CDN 에 캐싱되면 이미지 변경이 필요할 때 안 될 수 있잖음.
혹시 동일한 이미지 링크(이름)을 가지고 이미지 변경 감지 기능 등이 있는가? 아님 링크를 계속 변경해줘야 하는가?
A: 도큐먼트에서는 이름 식별자를 지정하고 이름이 변경되면 링크도 변경하라고 안내하고 있으나..
이렇게 새로 캐싱 진행도 가능
출처 :
파일을 무효화하여 콘텐츠 제거 - Amazon CloudFront
이 페이지에 작업이 필요하다는 점을 알려 주셔서 감사합니다. 실망시켜 드려 죄송합니다. 잠깐 시간을 내어 설명서를 향상시킬 수 있는 방법에 대해 말씀해 주십시오.
docs.aws.amazon.com
https://docs.aws.amazon.com/ko_kr/AmazonCloudFront/latest/DeveloperGuide/Expiration.html
콘텐츠가 캐시에 유지되는 기간(만료) 관리 - Amazon CloudFront
캐싱은 성능과 최신 상태 사이의 균형을 유지하는 것입니다. stale-while-revalidate 및 stale-if-error와 같은 지시문을 사용하면 성능과 사용자 경험을 향상할 수 있지만 원하는 콘텐츠의 최신 상태에 맞
docs.aws.amazon.com
이렇게 발표를 하였고 별 일 없으면 다음 프로젝트 전에 CloudFront 를 적용할 수 있을 것 같다.
거의 FE 쪽에서 적용하겠지만 BE 쪽도 적용할 곳이 없는 건 아니어서,, ㅎㅎ
테스트 서버도 계속 사용할 수 있을 거 같고~~~
이렇게 작은 거 개선하면서 보람을 느끼면서 일하는 거지~!
적용 후에 담달 다담달 AWS 요금 개선을 기대하며...
'개발 잡담' 카테고리의 다른 글
DB ) Too many Connections 문제.. (부제:커넥션 하나 당 메모리를 얼마나 사용할까?) (2) | 2024.08.06 |
---|---|
CI/CD ) Github Actions 로 CI/CD 해보기 (0) | 2024.07.18 |
도메인 주도 개발 시작하기를 읽고 (1) | 2024.07.02 |
Java ) LocalDateTime 은 시스템 시간 아니었나..?요? (0) | 2024.06.18 |
Jenkins 용량 부족 2편 -> "파일시스템 확장"으로 근본 문제 해결 (0) | 2024.06.13 |