| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- DevOps
- 지표
- Playwright
- terraform
- AWS 비용 절감
- 회고
- study
- leetcode
- github
- 신혼 여행
- 구조 패턴
- AWS
- 실용주의 프로그래머
- 오블완
- 디자인 패턴
- Go-lang
- ssh
- PostgreSQL
- 커머스
- Rust
- Til
- 티스토리챌린지
- docker
- 경로 계획 알고리즘
- MAPF
- 생성 패턴
- 청첩장 모임
- amazon ecs
- 논문 정리
- 14일 공부
- Today
- Total
밤 늦게까지 여는 카페
[AWS 비용 절감] 자칫하면 줄줄 샐 수 있는 데이터 통신 비용 - 데이터 통신 비용으로 얼마까지 지출해보셨나요? 본문
안녕하세요. 이제 밤이 되면 날씨가 선선하더라고요. 열대야 끝!!!
열대야가 끝난 걸 보니 가을이 정말 다가오고 있는 것 같습니다 🙌🙌🙌
오늘은 AWS 비용 중에서 쉽게 놓치곤 하는 데이터 통신 비용을 살펴보려고 합니다.
'데이터 통신 비용은 기본 아닌가?' 라고 생각하실 수도 있습니다. 하지만 제가 놓치고 있었습니다... ㅜㅠ
제가 잘못 알고 있었던 부분을 정리해보겠습니다!
1. AWS 데이터 통신은 inbound는 무료고 outbound가 유료라던데?
흔히들 알고 있으실 내용입니다.
AWS 데이터 통신은 일반적으로 AWS 서비스로 요청할 때에는 무료이고, AWS 서비스로부터 다운로드 받을 때 비용이 지불됩니다.

AWS의 대표적인 서비스들인 EC2, S3의 데이터 전송 비용이 그렇게 책정됩니다.


참고
- https://docs.aws.amazon.com/ko_kr/AmazonElastiCache/latest/red-ug/elasticache-vpc-accessing.html
- https://aws.amazon.com/ko/s3/pricing/
그런데 제가 보여드린 이미지에는 AWS 서비스와 인터넷을 통한 통신 비용만 다뤄지고 있습니다.
AWS 서비스들간의 데이터 통신 비용은 어떻게 계산될까요?

제가 이 부분을 놓쳐서 비용을 불필요하게 많이 지불하게 되었습니다ㅜㅠ
2. AWS 서비스들 간의 데이터 통신 비용이 어떻게 계산되는데요?
위에 링크들을 조금 더 내려보면 AWS 서비스들 간의 테이터 통신 비용도 볼 수 있습니다.
(AWS 공식 문서에 설명되지 않은 것이 아니라 제가 부주의하게 읽지 않았던 것입니다 ㅜㅠ)
EC2 요금 문서부터 살펴보겠습니다.

표시된 부분을 보면 동일 AWS 리전 내에서 통신이 이뤄지더라도 가용 영역이 다르면 비용이 발생하는 것을 알 수 있습니다.
- 문서에서 서울 리전을 찾지 못해서 대만 리전을 선택했지만, 서울 리전도 송수신 데이터 GB 당 0.08 달러인 것으로 알고 있습니다.
- 서비스가 오랜 기간 개발되면서 다루는 데이터량이 많아지는데 통신량이 TB로 넘어가는거 순식간입니다 ㄷㄷ

마이크로서비스 아키텍처를 차용했다거나 인스턴스 수가 많은 상황에서는 가용 영역을 어떻게 설정했는지에 따라서 추가적인 데이터 통신 비용이 발생하게 되는 것이죠 ㅜㅠ
- EC2, Elasticache, RDS는 서브넷을 설정하는 것으로 어떤 가용 영역을 사용할지 정할 수 있습니다.
- 인스턴스를 한번 생성하고 나면 가용 영역을 변경할 수 없으니 주의하세요!
Elasticache, RDS 요금 페이지를 살펴보면 동일한 것을 알 수 있습니다.


처음 서버를 배포할 때, 가용성을 챙기는 것이 중요하다고 하니 무조건 여러 가용 영역을 포함하게끔 서브넷을 설정하고 인스턴스를 배포했습니다.
가용성... 챙기면 좋지만 챙기지 않아도 괜찮은(?) 개발, 테스트 환경에서 굳이 비용을 지불하며 챙길 필요는 없잖아요?
무조건적인 순응이 아닌 충분한 이해를 거친 후에 장/단점을 비교하며 선택해야 했습니다.
3. 결론
데이터 통신 비용의 원인을 파악한 저는 서버 인스턴스들과 Elasticache, RDS 인스턴스들을 하나의 가용 영역으로 몰아 넣었습니다.
인스턴스들을 하나의 가용 영역으로 몰아 넣는데에도 해프닝이 있었는데 다음에 기록해보겠습니다 ㅜㅠ
이번에 얻은 교훈을 정리하면 다음과 같습니다 ㅋㅋ
- 가용성이 중요하지 않은 개발, 테스트 서버들은 모두 하나의 가용 영역에 몰아넣어두자!
- 가용성을 챙겨야 할 기능과 아닌 기능을 명확히 구분하자
- 문서는 꼼꼼히 읽자