Egress Is What Makes the Bill
한국어 원문으로 표시합니다.
한 줄 요약
S3 표준 저장은 GB당 약 0.023달러다. 그것을 인터넷으로 한 번 내보내면 GB당 0.09달러가 더 붙는다. 저장은 미끼다.
왜 이게 필요했나
숫자로 보면 명확합니다. 1TB 를 한 달 저장하는 비용은 약 23달러입니다. 그 1TB 를 인터넷으로 한 번 내보내면 90달러가 추가됩니다. 저장한 것을 네 번만 읽어도 저장 비용보다 전송 비용이 큽니다.
실제 워크로드로 계산하면 더 극적입니다. 1TB 저장 + 월 10TB 송신이면 S3 는 저장 23달러 + 송신 900달러 = 약 925달러입니다. 같은 워크로드를 이그레스가 무료인 스토리지에 두면 저장 비용만 나옵니다. 저자가 계산한 R2 기준으로는 15달러이고, 차이가 약 54배입니다.
이 구조를 모르고 설계하면 아키텍처가 아니라 청구서가 먼저 망가집니다.
어떻게 동작하나
비용은 네 축으로 나뉩니다.
저장 비용은 GB-월 단가입니다. S3 표준은 첫 50TB 가 GB당 0.023달러이고, 계층이 내려갈수록 싸집니다. Glacier Deep Archive 는 GB당 0.00099달러까지 내려갑니다 — 표준의 약 4% 입니다.
요청 비용은 PUT/GET 개수당 붙습니다. 작은 파일이 수백만 개인 워크로드에서는 이 항목이 저장 비용을 넘어설 수 있습니다.
전송 비용이 앞서 본 이그레스입니다. AWS 는 S3 만 비싼 게 아니라 EC2, RDS, NAT Gateway 전부 같은 구조입니다.
검색 비용은 콜드 티어에만 붙습니다. Glacier 계열은 저장이 싼 대신 꺼낼 때 GB당 요금과 대기 시간이 붙습니다.
수명주기 규칙이 이 네 축을 다루는 도구입니다. 규칙은 접두어나 태그로 대상을 잡고, 며칠 뒤 어떤 계층으로 옮길지 또는 지울지를 정합니다. 로그를 예로 들면 30일 뒤 저빈도 계층, 90일 뒤 아카이브, 365일 뒤 삭제 같은 식입니다.
현장에서 만나는 모습
계층 이동에도 비용이 있다는 점을 자주 놓칩니다. 전환 요청당 요금이 붙기 때문에, 아주 작은 객체 수백만 개를 아카이브로 옮기면 전환 비용이 절약분보다 클 수 있습니다. AWS 가 128KB 미만 객체에 대해 전환을 권장하지 않는 이유입니다.
그리고 최소 저장 기간이 있습니다. Glacier 계열은 90일 또는 180일 최소 과금 기간이 있어서, 30일 만에 지우면 남은 기간 요금이 그대로 청구됩니다. "아카이브로 옮겼다가 곧 지운다"는 최악의 조합입니다.
셀프 호스팅으로 옮기는 판단도 이 계산에서 나옵니다. 이그레스가 큰 워크로드는 자체 스토리지의 하드웨어 비용을 몇 달 만에 회수합니다. 반대로 저장량은 큰데 거의 읽지 않는 데이터는 클라우드 콜드 티어가 압도적으로 쌉니다.
저장 등급을 옮길 때 따라오는 조건
수명주기 규칙으로 값싼 등급에 옮기는 것은 쉬워 보이지만 세 가지 제약이 있습니다.
| 제약 | 내용 | 놓치면 |
|---|---|---|
| 최소 보관 기간 | IA 30일, Glacier 90일, Deep Archive 180일 | 일찍 지워도 그 기간만큼 과금 |
| 최소 객체 크기 | IA 계열은 128KB 미만도 128KB 로 과금 | 작은 파일이 많으면 오히려 비싸진다 |
| 전환 요청 비용 | 객체당 전환 요청 요금 | 수백만 개를 옮기면 그 자체가 큰돈 |
두 번째가 특히 함정입니다. 로그 조각이나 썸네일처럼 수십 KB 파일이 수백만 개 있으면, IA 로 옮겨서 저장 단가는 내려가도 128KB 로 올림 과금되어 총액이 오릅니다. 작은 파일은 묶어서 하나로 만드는 편 이 훨씬 큰 절감입니다.
세 번째도 계산합니다. 500만 개를 전환하면 전환 요청만으로 수십 달러가 나가고, 그것이 몇 달치 절감액을 먹습니다. 적게, 크게, 드물게 옮기는 것 이 원칙입니다.
무엇이 이그레스인가
같은 리전 안이라고 다 공짜가 아닙니다. 경계를 정확히 알아야 합니다.
같은 리전 · 같은 AZ → 대개 무료
같은 리전 · 다른 AZ → AZ 간 요금 (양방향)
같은 리전 · VPC 엔드포인트 경유 → 무료 또는 저렴
다른 리전 → 리전 간 요금
인터넷·CDN 원본 요청 → 가장 비싸다
쿠버네티스에서 파드가 어느 AZ 에 뜰지 신경 쓰지 않으면, S3 게이트웨이 엔드포인트가 없는 상태에서 NAT 게이트웨이를 통해 인터넷으로 나갔다 들어옵니다. NAT 처리 요금과 이그레스가 함께 붙습니다. 게이트웨이 엔드포인트 하나를 만들면 이 경로가 사라지고 요금도 사라집니다.
요금을 실제로 확인하는 법
추정하지 말고 실측합니다.
- S3 Storage Lens — 버킷별 등급 분포, 작은 객체 비율, 미완료 멀티파트 용량을 한 화면에서 봅니다. 위에서 말한 함정이 전부 여기 보입니다.
- 비용 할당 태그 — 버킷과 프리픽스에 팀·환경 태그를 붙이면 청구서가 팀별로 갈립니다. 이것이 없으면 "S3 비용 3,000달러" 라는 한 줄만 남습니다.
- 요청 지표(CloudWatch) — GET·PUT·LIST 건수. LIST 가 비정상적으로 많으면 코드가 매번 목록을 훑고 있다는 뜻이고, 그것은 대개 잘못된 접근 패턴입니다.
다음 퀴즈에서 확인할 것
이 모듈은 개념만 다룹니다. 수명주기 규칙 적용은 앞의 버저닝 실습에서 이미 다뤘고, 다음 모듈에서 소파일 워크로드를 두 스토리지에 넣어 특성을 직접 비교합니다.