콘솔에는 안 보이고 청구서에만 쌓인다 — AWS 보이지 않는 비용

콘솔에는 안 보이고 청구서에만 쌓인다 — AWS 보이지 않는 비용

요금 폭탄 아티클에서 클라우드 비용은 두 갈래로 온다고 썼다. 해킹처럼 터지는 비용, 그리고 매달 조용히 새는 비용. 이 글은 후자다. 해킹은 하루 1억이라 눈에 띈다. 보이지 않는 비용은 매달 수백만 원씩 몇 년을 샌다. 아키텍처는 정상 동작하고 그래프도 평온한데, 청구서만 조금씩 무거워진다.

여섯 가지를 짚는다. 수정 난이도와 회수 기간은 트래픽 규모, AZ 수, 변경 절차에 따라 달라진다.

1. VPC 엔드포인트 미설정 — S3·ECR 트래픽이 NAT로 샌다

가장 흔하고 가장 안 보이는 사례다. 프라이빗 서브넷의 기본 경로가 NAT Gateway를 가리키고 S3·ECR 엔드포인트가 없으면, 해당 서비스 트래픽도 NAT를 통과한다. NAT Gateway는 시간당 요금에 더해 통과한 GB당 데이터 처리 요금을 문다. 서울 리전은 시간당 0.059달러, 처리 GB당 0.059달러다.1 문제는 이 트래픽 상당수가 인터넷도 아닌 AWS 내부로 가는 트래픽이라는 점이다.

VPC 엔드포인트는 이 트래픽을 NAT 없이 AWS 백본으로 직접 흘린다. 종류가 둘이고 성격이 다르다.

S3는 게이트웨이 엔드포인트가 무료다. 라우트 테이블에 경로 하나를 추가하는 방식이고 비용이 0이다.2 만들면 S3 트래픽이 NAT를 우회하고 데이터 처리 요금이 사라진다. 무료인데 안 만드는 경우가 흔한 이유는 단순하다. 콘솔 마법사로 VPC를 만들면 자동으로 붙지 않는다. 그래서 로그 아카이빙·백업·데이터 파이프라인처럼 S3 왕래가 많은 워크로드가 통째로 NAT 요금에 잡힌다.

ECR은 조금 더 손이 간다. EKS·ECS 노드가 이미지를 풀할 때마다 레이어를 다운로드하는데, 오토스케일링이나 CI 배포로 풀 빈도가 높으면 이 트래픽이 반복된다. ECR을 프라이빗하게 쓰려면 엔드포인트가 세 개 필요하다.3

  • ecr.api — 인증·조회 API (인터페이스, 유료)
  • ecr.dkr — Docker 레지스트리 API, push/pull (인터페이스, 유료)
  • s3레이어 실물이 S3에 저장되므로 필요 (게이트웨이, 무료)

이미지 레이어는 S3에서 내려오므로, 이미지 pull이 트래픽 대부분인 워크로드에서는 무료 S3 게이트웨이 엔드포인트가 ECR 관련 NAT 바이트의 큰 비중을 줄일 수 있다. 인터페이스 엔드포인트 두 개는 인증·메타데이터 트래픽을 별도 경로로 보낸다.

CI의 이미지 빌드와 ECS의 pull 빈도가 ECR 트래픽을 결정한다. 실제 GitHub Actions·Blacksmith 구성과 ECR 이미지 크기 비교에서는 네 최종 이미지의 압축 크기와 캐시 경계를 함께 측정했다.

서울 리전에서 NAT를 지나던 S3 트래픽 1TB(1,000GB)를 게이트웨이 엔드포인트로 옮기면 NAT 데이터 처리료 약 59달러를 줄인다. NAT 시간 요금과 AZ 간 전송료는 별도이며, 실제 절감액은 경로와 AZ 구성에 따라 달라진다.12

Traffic from a private subnet to S3 and ECR routing through a paid NAT Gateway versus bypassing it through a free S3 gateway endpoint and ECR interface endpoints
기본 경로는 NAT Gateway를 지나며 GB당 과금된다. 게이트웨이·인터페이스 엔드포인트가 같은 트래픽을 AWS 백본으로 우회시킨다.

S3·DynamoDB 게이트웨이 엔드포인트에는 시간·데이터 처리 요금이 없어, 해당 서비스로 가는 프라이빗 트래픽이 있다면 우선 검토할 만하다. 인터페이스 엔드포인트는 AZ당 시간당 0.013달러와 처음 1PB까지 GB당 0.010달러다.4 NAT 처리료와만 비교하면 단일 AZ의 엔드포인트 하나는 월 약 194GB에서 고정비를 회수한다. ECR은 참여 AZ마다 ecr.apiecr.dkr 두 엔드포인트가 필요하므로 전체 토폴로지로 계산해야 한다.

비슷한 과제를 다루고 계신가요?기술 과제 검토 요청

2. AZ 간 데이터 전송 — 아키텍처 그림에 없는 요금

EC2 인스턴스와 NLB·ENI 사이의 일반적인 경로에서는 1GB가 AZ 경계를 한 번 넘을 때 송신·수신 측에 각각 0.010달러가 청구되어 합계 0.020달러다. 같은 크기의 1GB 응답이 다시 경계를 넘으면 0.020달러가 더 붙는다. RDS·ELB 등은 서비스별 과금 예외가 있으므로 각 요금표를 함께 확인해야 한다.5 이 비용은 아키텍처 다이어그램에 드러나지 않는다. 멀티 AZ로 흩어둔 애플리케이션 서버와 DB, 캐시, 서비스 간 호출이 AZ 경계를 계속 넘나들면 트래픽 자체는 정상인데 요금이 쌓인다. 데이터 집약적 서비스는 같은 AZ에 배치하거나, AZ를 의식한 라우팅으로 경계 통과를 줄인다.

3. 퍼블릭 IPv4 상시 과금 — 안 쓰는 IP도 돈을 문다

2024년부터 AWS가 제공하고 VPC 리소스에 연결됐거나 계정에서 유휴 상태인 공인 IPv4 주소는 시간당 0.005달러가 과금된다.6 예전엔 미연결 탄력적 IP(EIP)만 물렸지만, 지금은 인스턴스에 붙어 있어도 과금된다. 흔히 새는 건 안 쓰는 EIP, 오래된 실험 리소스에 붙은 채 잊힌 퍼블릭 IP다. 주소 하나는 월 3.6달러 남짓이라 작아 보여도, 수십·수백 개가 방치되면 무시 못 할 고정비다. 진짜 필요한 곳만 남기고, 프라이빗 서브넷 + 엔드포인트로 뺄 수 있는 건 뺀다.

4. CloudWatch Logs 무한 보존 — 지운 적 없으니 영원히

로그 그룹에 **보존 기한을 안 정하면 기본값이 "만료 없음"**이다.7 디버그 로그, 액세스 로그가 영원히 쌓이고 저장 요금도 영원히 나간다. 수집 요금은 이미 냈는데, 다시는 안 볼 로그를 계속 보관하며 매달 저장료를 더 낸다. 로그 그룹마다 보존 기한을 걸고, 장기 보관이 필요하면 S3로 내보내 저렴한 스토리지 계층에 둔다.

5. 방치된 스토리지 — 지운 줄 알았던 것들

  • 고아 EBS 스냅샷: 인스턴스와 볼륨은 지웠는데 스냅샷은 별도 수명주기로 남아 저장료를 문다.8
  • 미완료 멀티파트 업로드: 실패한 S3 업로드의 조각이 버킷에 남아 저장 요금이 발생한다. 수명 주기 규칙으로 자동 정리한다.9
  • gp2 → gp3 미전환: gp3는 gp2보다 GiB당 기본 요금이 20% 낮고 성능을 용량과 독립적으로 정할 수 있다. 필요한 IOPS·처리량의 추가 요금을 비교한 뒤 전환한다.10

6. 비프로덕션 24시간 가동 — 아무도 안 쓰는 밤과 주말

개발·스테이징 환경이 밤과 주말에도 돌아간다. 하루 8시간·주 5일만 필요한 컴퓨트를 그 시간에만 켜면 이론상 가동 시간을 약 76% 줄일 수 있다. 다만 EBS·관리형 DB처럼 정지 후에도 남는 비용은 별도로 계산한다.

어떻게 찾나

  • Cost Explorer에서 사용 유형(Usage Type)으로 그룹핑한다. NatGateway-Bytes나 리전 내 전송(DataTransfer-Regional-Bytes)이 크면 네트워크 비용을 더 살필 신호다. EC2-Other에는 NAT·EBS 등 여러 항목이 섞이므로 Usage Type으로 다시 분해한다.
  • VPC Flow Logs로 NAT를 지나는 트래픽의 목적지를 분해한다. 목적지가 S3·ECR·기타 AWS 서비스로 몰려 있으면 그게 곧 엔드포인트 후보다.
  • 태깅 규율을 먼저 세운다. 태그 없이는 어느 팀·서비스가 얼마를 태우는지 분해가 안 된다.

가시성이 먼저다. 요금 폭탄 아티클에서 급격한 오용을 사용량 지표와 비용 통제로 다뤘듯, 구조적 낭비도 Usage Type과 트래픽 경로를 볼 수 있어야 줄인다.


보이지 않는 비용은 구성 변경으로 줄일 수 있는 항목이 많지만, 회수 기간은 트래픽과 변경 위험을 함께 계산해야 한다. 클라우드 / AWS 실전에서 관련 진단 글을, 클라우드 & 인프라에서 네트워크·스토리지 비용 최적화 업무를 볼 수 있다.

참고 자료

출처와 각주10개펼치기접기

Footnotes

  1. AWS Docs, Pricing for NAT gateways · Amazon VPC Pricing — 서울 리전(ap-northeast-2) NAT Gateway 시간당 $0.059, 데이터 처리 GB당 $0.059 (AWS Price List API, 2026-07 확인). 2

  2. AWS Architecture Blog, Choosing Your VPC Endpoint Strategy for Amazon S3 — 게이트웨이 엔드포인트 무료, 인터페이스 엔드포인트 AZ당 시간당·GB당 과금. 2

  3. AWS Docs, Amazon ECR interface VPC endpoints (AWS PrivateLink) — ECR은 ecr.api·ecr.dkr 인터페이스 엔드포인트와 S3 게이트웨이 엔드포인트가 함께 필요.

  4. 서울 리전 인터페이스 엔드포인트(PrivateLink) AZ당 시간당 $0.013, 처리 GB당 $0.010 (AWS Price List API, 2026-07 확인). AWS PrivateLink Pricing 참고.

  5. AWS, Optimizing data transfer costs when using AWS Network Load Balancer · Amazon EC2 On-Demand Pricing — Data Transfer · Amazon RDS Pricing — EC2·NLB의 일반적인 AZ 경계 통과 요금과 RDS 등 서비스별 예외.

  6. AWS, New — AWS Public IPv4 Address Charge — 2024-02부터 모든 퍼블릭 IPv4 주소 시간당 $0.005(서울 리전 동일, Price List API 확인).

  7. AWS Docs, Working with log groups and log streams — 보존 기간을 설정하기 전 로그 그룹의 기본값은 Never expire다.

  8. AWS Docs, Amazon EBS snapshots — 스냅샷은 볼륨과 별도로 관리되는 증분 백업이다.

  9. AWS Docs, Aborting incomplete multipart uploads — 완료·중단 전까지 업로드된 파트의 스토리지 요금이 발생한다.

  10. AWS Docs, General Purpose SSD volumes — gp3 기본 저장 요금과 독립적인 IOPS·처리량 구성.

이 주제와 연결된 구축 서비스를 확인하세요.

클라우드 & 인프라

이런 작업을 실제 환경에 적용합니다.

엔지니어가 현재 환경과 제약을 먼저 검토하고, 필요한 경우 30분 기술 대화로 실행 범위를 정합니다.

이미 금융·헬스케어·미디어·공공의 팀들과 함께
기술 과제 검토 요청