우당탕탕
AWS VPC 서브넷 처음 구성할 때 헷갈렸던 개념과 비용 차이 비교 본문
AWS VPC 서브넷을 처음 구성하면서 생각보다 헷갈리는 개념이 많았어요. 특히 서브넷 크기와 가용 영역, 그리고 비용 구조가 복잡해서 여러 번 삽질을 했거든요. 실제로 직접 세팅하며 겪은 문제들과, 비용 차이가 얼마나 나는지 자세하게 비교해보려고 합니다.
서브넷 구성 올바르게 하는 법부터, 각 서브넷 타입에 따른 요금 차이, 그리고 설정 시 실수하기 쉬운 부분까지 구체적인 명령어와 설정값과 함께 정리해봤어요.
개발 환경 / 버전 정보
AWS 콘솔과 AWS CLI v2 를 사용했고, 주요 설정은 aws-cli/2.7.21를 기준으로 했습니다. 리전은 ap-northeast-2 (서울)를 사용했어요.
AWS VPC 서브넷 구성 처음 할 때 헷갈렸던 개념 관련 정보
서브넷 크기, CIDR, 그리고 가용 영역이 이렇게 헷갈려요
사실 이 부분이 가장 헷갈리던 부분이었는데요. VPC에 서브넷을 나눌 때 CIDR 블록을 적절히 쪼개야 하는데, 너무 크게 잡으면 IP 낭비가 심하고, 너무 작게 잡으면 인스턴스 못 넣는 일이 생겨요.
그리고 가용 영역(AZ)마다 하나씩 서브넷을 만들어야 AZ 장애 대비가 가능하다는 것도 처음엔 잘 몰랐어요. 그래서 처음엔 한 AZ에 서브넷 여러 개를 만들어 비용도 더 들고 관리도 번거로웠죠.
다음은 제가 사용한 명령어입니다. 참고로 10.0.0.0/16 범위 VPC에서 서브넷을 나누는 예입니다.
# VPC 생성
aws ec2 create-vpc --cidr-block 10.0.0.0/16
# 서브넷 생성 (첫 번째 가용 영역)
aws ec2 create-subnet --vpc-id vpc-xxxxxx --cidr-block 10.0.1.0/24 --availability-zone ap-northeast-2a
# 서브넷 생성 (두 번째 가용 영역)
aws ec2 create-subnet --vpc-id vpc-xxxxxx --cidr-block 10.0.2.0/24 --availability-zone ap-northeast-2c
이렇게 하면 두 개 가용 영역 각각에 서브넷이 하나씩 만들어지는데, 서브넷당 IP는 256개 (실제 할당 가능한 IP는 251개)예요. 그래서 서비스 규모에 따라 서브넷 크기를 적절히 조절하는 게 중요합니다.
서브넷 유형에 따른 비용 차이, 이 정도 차이가 납니다
그런데 여기서 많이들 헷갈리는 게, 퍼블릭 서브넷인지, 프라이빗 서브넷인지에 따라 직접적인 비용 차이는 없다는 점이에요. 하지만 NAT 게이트웨이나 VPN, 인터넷 게이트웨이 사용 여부에 따라 비용이 발생하는 구조거든요.
제가 직접 테스트해본 비용 차이를 표로 정리해봤어요. 비교 대상은 다음과 같습니다.
- 퍼블릭 서브넷 + 인터넷 게이트웨이만 사용
- 프라이빗 서브넷 + NAT 게이트웨이 사용
- 프라이빗 서브넷 + VPC 엔드포인트 사용
| 구성 | 월 예상 비용 (서울 리전) | 설명 |
|---|---|---|
| 퍼블릭 서브넷 + 인터넷 게이트웨이 | 약 0원 | 인터넷 게이트웨이는 요금 없음 |
| 프라이빗 서브넷 + NAT 게이트웨이 | 약 32,000원 (NAT 시간 + 데이터 처리량) | NAT 게이트웨이 시간당 약 0.045 USD, 데이터 처리량에 따라 추가 요금 발생 |
| 프라이빗 서브넷 + VPC 엔드포인트 | 약 7,000원 | 엔드포인트 요청 수에 따라 비용 발생하나 NAT 대비 저렴 |
NAT 게이트웨이 비용이 생각보다 꽤 많이 나오더라고요. 그래서 프라이빗 서브넷을 쓸 때는 꼭 VPC 엔드포인트 같은 대체 수단을 고려하는 게 비용 절감에 큰 도움이 됩니다.
AWS VPC 서브넷 구성 처음 할 때 헷갈렸던 개념 관련 정보
이렇게 하면 서브넷과 라우팅 설정도 헷갈리지 않아요
서브넷을 잘못 구성해 라우팅 테이블에서 막힐 때도 많았는데요. 저는 다음 순서로 설정했습니다.
- VPC 생성 후 CIDR을 적절히 나눕니다.
- 각 AZ에 맞춰 퍼블릭/프라이빗 서브넷 생성.
- 퍼블릭 서브넷 라우팅 테이블에 인터넷 게이트웨이 연결.
- 프라이빗 서브넷 라우팅 테이블에 NAT 게이트웨이나 VPC 엔드포인트 연결.
예를 들어 NAT 게이트웨이 생성 커맨드는 다음과 같아요.
# NAT 게이트웨이 생성
aws ec2 create-nat-gateway --subnet-id subnet-xxxxxx --allocation-id eipalloc-xxxxxx
# 라우팅 테이블에 추가
aws ec2 create-route --route-table-id rtb-xxxxxx --destination-cidr-block 0.0.0.0/0 --nat-gateway-id nat-xxxxxx
이렇게 하면 프라이빗 서브넷에서 외부 인터넷 접속이 가능해지고, NAT 게이트웨이 비용도 명확히 확인할 수 있습니다.
여기서 삽질했던 부분들, 비용 절감 놓칠 뻔한 경험
이 에러가 왜 나는지 한참 찾았는데, 서브넷이 너무 크게 잡혀서 예상보다 IP 낭비가 심했고, NAT 게이트웨이 트래픽이 많아진 탓에 요금이 크게 나왔던 적이 있었어요.
# 에러 메시지 예시
An error occurred (InsufficientFreeAddressesInSubnet) when calling the RunInstances operation: Your request would exceed the allowed number of addresses in the subnet.
AMAZON EC2 인스턴스를 추가하려는데 IP 부족으로 실패한 거였죠. 그래서 서브넷 크기를 10.0.1.0/24에서 10.0.1.0/23으로 조정해 IP 여유를 늘렸고, NAT 게이트웨이 데이터 처리량을 모니터링해 트래픽을 줄이는 쪽으로 조정했습니다.
AWS VPC 서브넷 구성 처음 할 때 헷갈렸던 개념 관련 정보
심화: 비용 최적화 팁과 명령어 모음
서브넷 및 NAT 게이트웨이 비용을 최적화하는 팁을 몇 가지 알려드릴게요.
- 프라이빗 서브넷에 꼭 NAT 게이트웨이 써야 하나 고민하고, 가능하면 VPC 엔드포인트(예: S3, DynamoDB)를 활용하기
- NAT 게이트웨이가 없는 서브넷에 아예 퍼블릭 IP 부여해 비용 줄이기
- 서브넷 IP를 너무 크게 잡아 IP 낭비하지 말기
- NAT 게이트웨이 데이터 전송 트래픽 모니터링용 CloudWatch 경보 설정
CloudWatch 경보 설정 예시는 다음과 같습니다.
# CloudWatch에서 NAT 게이트웨이 데이터 처리량 경보 설정 (예시)
aws cloudwatch put-metric-alarm \
--alarm-name "NATGatewayHighTraffic" \
--metric-name "BytesOutToDestination" \
--namespace "AWS/NATGateway" \
--statistic Sum \
--period 300 \
--threshold 50000000 \
--comparison-operator GreaterThanThreshold \
--evaluation-periods 1 \
--alarm-actions arn:aws:sns:ap-northeast-2:123456789012:NotifyMe
이렇게 하면 데이터 처리량이 일정 수치를 넘었을 때 바로 알 수 있어 불필요한 비용 발생을 줄일 수 있어요.
자주 물어보시는 것들
Q. AWS 서브넷 IP 부족 오류가 뜨면 어떻게 해야 하나요?
A. 가장 확실한 방법은 서브넷 CIDR 범위를 확장하는 겁니다. 예를 들어 10.0.1.0/24에서 10.0.0.0/23으로 변경하거나, 새로운 서브넷을 추가해 부하를 분산하세요. 하지만 이미 운영 중이라면 바로 변경이 어려우니, 필요하지 않은 인스턴스나 리소스를 정리하는 것도 방법입니다.
Q. 프라이빗 서브넷에서 외부 인터넷 접속 시 비용을 줄이는 방법은요?
A. NAT 게이트웨이는 시간당 요금과 데이터 처리량 요금이 발생하니까 최대한 VPC 엔드포인트로 대체하는 게 효과적이에요. 또한 불필요한 트래픽을 줄이는 네트워크 설계도 중요합니다.
결국 AWS VPC 서브넷이 처음엔 복잡하고 헷갈리는데, 서브넷 크기와 라우팅, 그리고 비용 구조를 정확히 이해하면 훨씬 효율적인 인프라 운영이 가능해요. 특히 NAT 게이트웨이 비용이 생각보다 크니까 대체 비용 절감 방법을 꼭 고민해보시길 권해요.
'Tech > AWS' 카테고리의 다른 글
| AWS CodeDeploy 무중단 배포 적용하며 겪은 실수와 해결 과정 (0) | 2026.10.03 |
|---|---|
| AWS S3 정적 웹사이트 호스팅과 CloudFront 연결하면서 겪은 문제와 해결법 (0) | 2026.09.27 |
| AWS EC2 프리티어 서버 처음 만들기, 단계별로 제가 겪은 이야기 (0) | 2026.09.15 |
| AWS SES로 이메일 발송 시작하며 겪은 삽질과 해결법 공유합니다 (0) | 2026.09.13 |
| AWS CodeDeploy로 무중단 배포 직접 해봤더니 이런 점을 주의하세요 (0) | 2026.09.08 |
