AWS 계정을 처음 생성하면, 각 리전(Region)마다 기본 VPC(Default VPC)가 미리 구성되어 제공됩니다. 해당 VPC는 사용자가 네트워크에 대한 깊은 고민 없이도 EC2 인스턴스 등을 빠르게 시작할 수 있도록 돕는 편리한 환경입니다. 하지만 이는 모든 가구가 하나의 큰 원룸에 놓여있는 것과 같은 구조적 한계를 가집니다.
기본 VPC의 모든 서브넷은 기본적으로 인터넷과 직접 연결되는 Public 성격을 가지며, 이는 보안상 심각한 취약점이 될 수 있습니다. 예를 들어, 고객의 민감한 개인정보가 저장된 RDS 데이터베이스가 인터넷에서 직접 접근 가능한 경로에 노출될 위험이 있습니다.
VPC(Virtual Private Cloud)는 AWS 클라우드라는 거대한 공용 공간 안에 논리적으로 완벽하게 격리된 사용자만의 사적인 가상 네트워크 공간입니다. 이는 다른 수많은 AWS 사용자의 네트워크와는 완전히 분리되어 있으며, 마치 개인 데이터센터를 운영하는 것처럼 네트워크 환경의 모든 측면을 직접 제어할 수 있는 강력한 권한을 부여합니다. 이 격리된 공간은 자신의 클라우드 리소스를 위한 안전한 울타리 역할을 합니다.
VPC의 개념을 가장 쉽게 이해하는 방법은 이를 AWS라는 거대한 도시에 우리가 소유한 '사적인 오피스 빌딩'으로 상상하는 것입니다. 이 빌딩은 외부의 다른 건물들과는 완전히 독립된 우리만의 공간입니다. 빌딩의 내부 구조(네트워크 구성)를 어떻게 설계하고, 어떤 층에 누가 출입할 수 있도록 할지(보안 규칙), 그리고 외부 도로(인터넷)와 어떻게 연결할지(게이트웨이)에 대한 모든 결정권은 전적으로 빌딩 소유주인 자신에게 있습니다.
VPC를 생성할 때 가장 먼저 결정해야 하는 것이 바로 CIDR(Classless Inter-Domain Routing) 블록입니다. 10.0.0.0/16과 같은 형식으로 표현되는 이 CIDR 블록은 우리 오피스 빌딩(VPC) 전체에서 사용할 사설 IP 주소의 범위를 정의합니다.
이는 마치 '서울시 강남구 테헤란로 123번지'처럼 빌딩 전체에 부여된 고유한 주소 체계와 같습니다.
이 주소 범위 내에서 각 층의 사무실(서브넷의 리소스)들은 10.0.1.5, 10.0.11.20과 같은 고유한 내부 주소(Private IP)를 할당받게 됩니다.
/16은 약 65,536개의 IP 주소를 사용할 수 있는 매우 넓은 범위로, 향후 비즈니스 확장에 대비한 충분한 공간을 확보하는 것을 의미합니다.
서브넷(Subnet)은 VPC라는 커다란 IP 주소 범위를 더 작고 관리하기 쉬운 단위로 나눈 논리적인 구획입니다. VPC가 빌딩 전체라면, 서브넷은 그 빌딩을 구성하는 각각의 '층'에 해당합니다. AWS에서 중요한 규칙 중 하나는, 각 서브넷은 반드시 하나의 가용 영역(Availability Zone) 내에만 존재해야 하며, 여러 가용 영역에 걸쳐 생성될 수 없다는 것입니다.
오피스 빌딩을 효율적으로 사용하기 위해 각 층의 용도를 구분하듯, VPC 내에서도 서브넷을 용도에 따라 Public과 Private으로 나눕니다.
정문(Internet Gateway)을 통해 외부 도로(인터넷)와 직접 연결되어 있습니다.가용 영역(AZ)은 하나의 AWS 리전 내에 존재하는, 물리적으로 분리된 하나 이상의 데이터 센터의 모음입니다. 각 AZ는 독립적인 전력, 냉각, 네트워크 설비를 갖추고 있어 하나의 AZ에 장애가 발생하더라도 다른 AZ에 영향을 미치지 않도록 설계되었습니다.
VPC는 기본적으로 격리된 공간이므로, 외부 인터넷과 통신하기 위해서는 반드시 '문' 역할을 하는 게이트웨이가 필요합니다.
인터넷 게이트웨이(IGW)는 VPC와 인터넷을 연결하는, 수평적으로 확장되고 가용성이 높은 VPC 구성 요소입니다. 이는 오피스 빌딩의 유일한 '정문'에 비유할 수 있습니다. 이 정문을 통해 외부 방문객(인터넷 사용자)이 빌딩 안으로 들어올 수 있고(Inbound), 내부 직원(VPC 리소스)이 밖으로 나갈 수도 있습니다(Outbound). 즉, 양방향 통신을 가능하게 하는 핵심 통로입니다. Public Subnet은 바로 이 IGW로 향하는 경로를 가짐으로써 인터넷과 직접 소통할 수 있는 자격을 얻게 됩니다.
핵심 개념: NAT(Network Address Translation) 게이트웨이는 Private Subnet에 있는 리소스들이 외부 인터넷에 접속하여 필요한 작업을 수행할 수 있도록 허용하면서, 동시에 외부 인터넷에서 해당 리소스로 먼저 연결을 시작하는 것은 차단하는 매우 중요한 보안 장치입니다.
핵심 비유 - '보안 기능이 있는 서비스 출입문': Private Subnet에 위치한 데이터베이스 서버(내부 직원)가 운영체제 보안 패치를 다운로드하거나 외부 API를 호출해야 하는 경우가 있습니다. 이때 NAT 게이트웨이는 마치 보안 요원이 지키는 '서비스 출입문'과 같은 역할을 합니다. 내부 직원이 업무상 필요에 의해 밖으로 나가는 것(Outbound)은 허용하지만, 허가받지 않은 외부인이 이 문을 통해 안으로 들어오는 것(Inbound)은 철저히 막습니다.
작동 원리: Private Subnet의 EC2 인스턴스가 외부 인터넷으로 요청을 보내면, 이 요청은 먼저 NAT 게이트웨이로 전달됩니다. NAT 게이트웨이는 요청을 보낸 인스턴스의 사설 IP 주소(10.0.11.20)를 자신이 보유한 공인 IP 주소(Elastic IP)로 변환(Translation)한 뒤, 이 변환된 요청을 인터넷 게이트웨이를 통해 외부로 내보냅니다. 외부 서버는 NAT 게이트웨이의 공인 IP와 통신하고 응답을 보내며, 이 응답이 다시 NAT 게이트웨이에 도착하면 원래 요청을 보냈던 인스턴스의 사설 IP로 재변환하여 전달해 줍니다. 이 과정 덕분에 외부 세계는 Private Subnet에 있는 리소스의 실제 주소를 전혀 알 수 없으므로, 리소스는 안전하게 보호됩니다.
VPC에는 눈에 보이지 않는 가상의 라우터가 존재하며, 이 라우터의 행동을 제어하는 것이 바로 라우팅 테이블입니다. 라우팅 테이블은 VPC 내에서 발생하는 네트워크 트래픽이 목적지를 향해 어떤 경로로 이동해야 하는지를 알려주는 '규칙의 집합' 또는 '지능형 내비게이션 시스템'입니다. VPC 내의 모든 서브넷은 반드시 하나의 라우팅 테이블과 명시적으로 또는 암묵적으로 연결되어야 하며, 이 라우팅 테이블의 규칙에 따라 해당 서브넷에서 나가는 모든 트래픽의 경로가 결정됩니다.
서브넷 자체가 'Public'이나 'Private'이라는 고유한 속성을 가지고 태어나는 것이 아닙니다. 서브넷의 운명은 전적으로 어떤 라우팅 테이블과 연결되고, 그 테이블에 어떤 규칙이 정의되어 있느냐에 따라 결정됩니다.
0.0.0.0/0igw-xxxxxxxx (인터넷 게이트웨이 ID)10.0.0.0/16)을 제외한, 알 수 없는 모든 외부 목적지로 향하는 트래픽은 건물의 정문인 인터넷 게이트웨이(IGW)로 보내라"는 명확한 지시입니다. 이 규칙 하나가 해당 서브넷을 'Public Subnet'으로 만드는 것입니다.0.0.0.0/0nat-xxxxxxxx (NAT 게이트웨이 ID)이처럼 서브넷의 성격을 규정하는 것은 IP 주소 범위가 아니라, 그 서브넷에 연결된 라우팅 테이블의 경로 설정입니다. 네트워크 설계자는 라우팅 테이블을 제어함으로써 각 서브넷의 역할을 정의하고 전체 VPC의 트래픽 흐름을 설계합니다.