VPC는 AWS 클라우드 안에서 사용자가 논리적으로 격리된 네트워크를 정의하고, 리소스 간 통신 경로를 직접 설계할 수 있게 해주는 핵심 네트워크 서비스입니다.
핵심 요약
- VPC는 AWS 리전 안에서 사용자가 정의하는 가상 네트워크입니다.
- Subnet은 VPC 안에서 AZ 단위로 나뉘는 IP 주소 범위입니다.
- Route Table은 트래픽이 어디로 가야 하는지 결정하는 라우팅 규칙입니다.
- Internet Gateway는 VPC와 인터넷 간 통신을 가능하게 하는 게이트웨이입니다.
- 실무에서는 Public Subnet과 Private Subnet을 분리하고, 각각의 Route Table을 다르게 설정하는 것이 기본 설계입니다.
1. 왜 VPC가 필요한가
클라우드에서 EC2, RDS, Lambda 같은 리소스를 생성하면, 이 리소스들은 어딘가의 네트워크 안에 존재해야 합니다.
VPC가 없다면 모든 리소스가 같은 네트워크에 섞여 있게 됩니다. 이 경우 다음 문제가 생깁니다.
- 서로 다른 서비스 간 네트워크 격리가 불가능합니다.
- 외부 인터넷에 노출되면 안 되는 리소스를 보호하기 어렵습니다.
- IP 주소 충돌이나 라우팅 혼선이 발생할 수 있습니다.
VPC는 이런 문제를 해결하기 위해 사용자가 직접 네트워크 경계를 정의하고, 리소스 간 통신 규칙을 설계할 수 있게 해줍니다.
2. VPC란 무엇인가
VPC(Virtual Private Cloud)는 AWS 리전 안에서 사용자가 정의하는 논리적으로 격리된 가상 네트워크입니다.
핵심 특성:
| 특성 | 설명 |
|---|---|
| 범위 | 하나의 AWS 리전에 속합니다 |
| CIDR | 생성 시 IP 주소 범위(CIDR 블록)를 지정합니다 |
| 격리 | 다른 VPC와 기본적으로 통신이 차단됩니다 |
| 제어 | Subnet, Route Table, Security Group, NACL 등으로 트래픽을 제어합니다 |
VPC를 생성할 때는 CIDR 블록을 지정해야 합니다. 예를 들어 10.0.0.0/16으로 설정하면 약 65,000개의 IP 주소를 사용할 수 있습니다.
aws ec2 create-vpc --cidr-block 10.0.0.0/16 --region ap-northeast-2
CIDR 블록은 생성 후 변경이 제한적입니다. 향후 확장을 고려해 처음부터 충분한 범위를 잡는 것이 좋습니다. 일반적으로 /16이 가장 많이 사용됩니다.
3. 핵심 구성 요소
VPC를 구성하는 핵심 요소는 다음과 같습니다.
| 구성 요소 | 역할 |
|---|---|
| Subnet | VPC 안에서 AZ 단위로 나뉘는 IP 주소 범위 |
| Route Table | 트래픽의 목적지를 결정하는 라우팅 규칙 |
| Internet Gateway (IGW) | VPC와 인터넷 간 통신을 연결하는 게이트웨이 |
| NAT Gateway | Private Subnet에서 외부 인터넷으로 나가는 경로 |
| Security Group | 인스턴스 단위의 인바운드/아웃바운드 방화벽 |
| Network ACL (NACL) | Subnet 단위의 인바운드/아웃바운드 방화벽 |
이 글에서는 Subnet, Route Table, Internet Gateway를 중심으로 설명합니다. Security Group과 NACL은 별도 글에서 다룹니다.
4. Subnet

4.1 Subnet이란
Subnet은 VPC의 CIDR 블록을 더 작은 단위로 나눈 것입니다. 각 Subnet은 하나의 Availability Zone(AZ)에 속합니다.
예를 들어 VPC가 10.0.0.0/16이라면:
| Subnet | CIDR | AZ | 용도 |
|---|---|---|---|
| Public Subnet A | 10.0.1.0/24 | ap-northeast-2a | 로드밸런서, Bastion |
| Public Subnet B | 10.0.2.0/24 | ap-northeast-2b | 로드밸런서 (이중화) |
| Private Subnet A | 10.0.11.0/24 | ap-northeast-2a | 애플리케이션 서버 |
| Private Subnet B | 10.0.12.0/24 | ap-northeast-2b | 애플리케이션 서버 (이중화) |
| DB Subnet A | 10.0.21.0/24 | ap-northeast-2a | RDS |
| DB Subnet B | 10.0.22.0/24 | ap-northeast-2b | RDS (이중화) |
4.2 Public Subnet과 Private Subnet
Subnet 자체에 "Public" 또는 "Private"이라는 속성이 있는 것은 아닙니다. Route Table에 Internet Gateway로 향하는 경로가 있으면 Public Subnet, 없으면 Private Subnet으로 동작합니다.
| 구분 | Route Table에 IGW 경로 | 용도 |
|---|---|---|
| Public Subnet | 있음 (0.0.0.0/0 → IGW) | 외부에서 접근 가능한 리소스 |
| Private Subnet | 없음 | 외부에서 직접 접근 불가한 리소스 |
데이터베이스, 애플리케이션 서버 등 외부 접근이 필요 없는 리소스는 Private Subnet에 배치하는 것이 기본 보안 원칙입니다.
4.3 Subnet 설계 시 고려사항
- AZ 장애에 대비해 최소 2개 AZ에 Subnet을 분산합니다.
- CIDR 블록은 향후 확장을 고려해 여유 있게 잡습니다.
- 용도별로 Subnet을 분리하면 Security Group과 NACL 관리가 쉬워집니다.
5. Route Table
5.1 Route Table이란
Route Table은 Subnet 안의 리소스가 보내는 트래픽이 어디로 가야 하는지 결정하는 라우팅 규칙 모음입니다.
각 Subnet은 하나의 Route Table에 연결됩니다. 명시적으로 연결하지 않으면 VPC의 기본 Route Table(Main Route Table)이 적용됩니다.

5.2 Route Table 예시
Public Subnet용 Route Table:
| Destination | Target | 설명 |
|---|---|---|
| 10.0.0.0/16 | local | VPC 내부 통신 |
| 0.0.0.0/0 | igw-xxxxxxxx | 인터넷으로 나가는 경로 |
Private Subnet용 Route Table:
| Destination | Target | 설명 |
|---|---|---|
| 10.0.0.0/16 | local | VPC 내부 통신 |
| 0.0.0.0/0 | nat-xxxxxxxx | NAT Gateway를 통해 외부로 나가는 경로 |
5.3 Route Table 설계 시 고려사항
- Public Subnet과 Private Subnet은 반드시 별도 Route Table을 사용합니다.
- Main Route Table에는 인터넷 경로를 넣지 않는 것이 안전합니다. 새로 생성되는 Subnet이 의도치 않게 Public이 되는 것을 방지할 수 있습니다.
- VPC Peering, Transit Gateway, VPN 연결 시 Route Table에 해당 경로를 추가해야 합니다.
6. Internet Gateway
6.1 Internet Gateway란
Internet Gateway(IGW)는 VPC와 인터넷 간 양방향 통신을 가능하게 하는 AWS 관리형 게이트웨이입니다.
특성:
- VPC당 하나만 연결할 수 있습니다.
- 수평 확장되며 가용성이 보장됩니다.
- IGW 자체에는 별도 비용이 발생하지 않습니다. 다만 IGW를 통과하는 데이터 전송에는 EC2 데이터 전송 요금이 적용됩니다.
- IGW가 연결되어 있어도 Route Table에 경로가 없으면 인터넷 통신이 되지 않습니다.
6.2 IGW 연결 방법
# Internet Gateway 생성
aws ec2 create-internet-gateway --region ap-northeast-2
# VPC에 연결
aws ec2 attach-internet-gateway \
--internet-gateway-id igw-xxxxxxxx \
--vpc-id vpc-xxxxxxxx
6.3 IGW와 NAT Gateway의 차이
| 기준 | Internet Gateway | NAT Gateway |
|---|---|---|
| 방향 | 양방향 (인바운드 + 아웃바운드) | 아웃바운드만 |
| 용도 | Public Subnet의 인터넷 연결 | Private Subnet의 외부 접근 |
| 비용 | IGW 자체 무료 (데이터 전송 요금 별도) | 시간당 $0.045 + GB당 $0.045 (리전별 상이) |
| 보안 | Public IP가 필요하므로 외부 노출 가능 | Private IP 유지, 외부에서 접근 불가 |
외부 인터넷 접근이 필요하지만 외부에서의 인바운드 접근은 차단해야 하는 리소스는 Private Subnet + NAT Gateway 조합을 사용합니다.
7. 전체 구조 예시
일반적인 3-Tier 아키텍처에서 VPC 구조는 다음과 같습니다.

VPC (10.0.0.0/16)
├── Internet Gateway
├── Public Subnet A (10.0.1.0/24) - AZ-a
│ ├── ALB
│ └── NAT Gateway
├── Public Subnet B (10.0.2.0/24) - AZ-b
│ └── ALB
├── Private Subnet A (10.0.11.0/24) - AZ-a
│ └── EC2 (Application)
├── Private Subnet B (10.0.12.0/24) - AZ-b
│ └── EC2 (Application)
├── DB Subnet A (10.0.21.0/24) - AZ-a
│ └── RDS Primary
└── DB Subnet B (10.0.22.0/24) - AZ-b
└── RDS Standby
트래픽 흐름:
- 사용자 → Internet Gateway → ALB (Public Subnet)
- ALB → EC2 (Private Subnet)
- EC2 → RDS (DB Subnet)
- EC2 → 외부 API: NAT Gateway → Internet Gateway → 인터넷
8. 실무 사용 사례
사례 1: 웹 서비스 기본 구조
- Public Subnet: ALB, Bastion Host
- Private Subnet: 애플리케이션 서버
- DB Subnet: RDS, ElastiCache
사례 2: 마이크로서비스 + EKS
- Public Subnet: ALB, NAT Gateway
- Private Subnet: EKS Worker Node
- DB Subnet: RDS, DynamoDB VPC Endpoint
사례 3: 하이브리드 연결
- Public Subnet: 외부 서비스 연동
- Private Subnet: 온프레미스 연결 (VPN / Direct Connect)
9. 보안 고려사항
VPC 설계 시 보안은 네트워크 계층에서 시작됩니다. 아래 원칙을 기본으로 적용하는 것이 좋습니다.
- Subnet 분리: 외부 접근이 필요한 리소스와 내부 리소스를 반드시 분리합니다.
- Main Route Table: 인터넷 경로를 넣지 않습니다. 새 Subnet이 의도치 않게 Public이 되는 것을 방지합니다.
- Security Group: 필요한 포트와 소스만 허용합니다. 0.0.0.0/0 인바운드는 최소화합니다.
- NACL: Subnet 단위의 추가 방어 계층으로 사용할 수 있습니다.
- VPC Flow Logs: 네트워크 트래픽을 기록하여 이상 트래픽을 탐지할 수 있습니다.
10. 비용/운영 고려사항
VPC 자체는 무료이지만, VPC 안에서 사용하는 일부 리소스는 비용이 발생합니다.
| 리소스 | 비용 발생 여부 |
|---|---|
| VPC | 무료 |
| Subnet | 무료 |
| Route Table | 무료 |
| Internet Gateway | IGW 자체 무료 (데이터 전송 요금 별도) |
| NAT Gateway | 시간당 $0.045 + GB당 $0.045 (리전별 상이) |
| Elastic IP (미사용 포함) | 모든 Public IPv4에 $0.005/IP/시간 (2024.02~) |
| VPC Peering | 데이터 전송 비용 (AZ 간, 리전 간 상이) |
운영 관점:
- VPC CIDR은 생성 후 확장이 제한적이므로 초기 설계가 중요합니다.
- Multi-AZ 구성은 가용성을 높이지만 NAT Gateway 비용이 AZ 수만큼 증가할 수 있습니다.
- VPC Flow Logs를 활성화하면 CloudWatch Logs 또는 S3 저장 비용이 발생합니다.
11. 자주 하는 실수
- CIDR 블록을 너무 작게 잡는 것: /24로 시작하면 Subnet을 나눌 여유가 없습니다. 일반적으로 /16을 권장합니다.
- Main Route Table에 IGW 경로를 넣는 것: 새로 생성되는 모든 Subnet이 자동으로 Public이 됩니다.
- 모든 리소스를 Public Subnet에 배치하는 것: 데이터베이스나 애플리케이션 서버는 Private Subnet에 두는 것이 기본입니다.
- AZ를 하나만 사용하는 것: AZ 장애 시 전체 서비스가 중단될 수 있습니다.
- NAT Gateway를 삭제하지 않는 것: 테스트 후 삭제하지 않으면 시간당 비용이 계속 발생합니다.
12. 정리
- VPC는 AWS에서 네트워크를 설계하는 기본 단위입니다.
- Subnet은 AZ 단위로 나뉘며, Route Table 설정에 따라 Public 또는 Private으로 동작합니다.
- Route Table은 트래픽의 목적지를 결정하며, Public/Private Subnet은 별도 Route Table을 사용해야 합니다.
- Internet Gateway는 VPC와 인터넷 간 양방향 통신을 가능하게 합니다.
- 실무에서는 Public/Private/DB Subnet을 분리하고, 최소 2개 AZ에 분산하는 것이 기본 설계입니다.
참고 문서
'Cloud > AWS' 카테고리의 다른 글
| ALB와 NLB 차이: 언제 어떤 Load Balancer를 선택할까 (0) | 2026.06.01 |
|---|---|
| AWS 3-Tier 아키텍처 설계 예시: Web, App, DB 계층 분리와 운영 전략 (0) | 2026.06.01 |
| Security Group과 NACL 차이: Stateful vs Stateless, 적용 범위, 운영 전략 (0) | 2026.05.31 |
| Public Subnet과 Private Subnet 차이: Route Table, 보안, 비용 기준으로 정리 (0) | 2026.05.29 |
| NAT Gateway와 VPC Endpoint 차이: 비용, 보안, 트래픽 경로 기준 정리 (0) | 2026.05.29 |