

VPC(Virtual Private Cloud)는 클라우드 내에서 사용자가 독립적으로 사용할 수 있는 가상의 네트워크를 말합니다.
💡즉, 쉽게 말하면 VPC는 퍼블릭 클라우드 안에서 만든 "나만의 네트워크"라고 할 수 있습니다.

퍼블릭 클라우드는 공유된 자원을 쓰는 것이기 때문에 기본적으로 모든 사용자가 같은 네트워크를 이용하는 구조입니다.
하지만 VPC를 사용한다면?
퍼블릭 클라우드(AWS, GCP 등) 안에서도 내 서버와 네트워크를 외부와 완전히 분리해서 프라이빗 클라우드처럼 사용할 수 있게 되는 것이죠
쉽게 비유하면
퍼블릭 클라우드 = 공용 아파트 단지 🏘️
VPC 사용 = 단지 안에서 나만의 울타리를 치고 집을 짓는 것 🏠⛺️🏠
VPC가 없다면 EC2 인스턴스들이 서로 거미줄처럼 연결되고 인터넷과 연결됩니다.

이런 구조는 시스템의 복잡도를 엄청나게 끌어올릴뿐만 아니라 하나의 인스턴스만 추가되도 모든 인스턴스를 수정해야하는 불편함이 생깁니다.
하지만 VPC를 적용하면 VPC별로 네트워크를 구성할 수 있고 각각의 VPC에따라 다르게 네트워크 설정을 줄 수 있습니다.
또한 각각의 VPC는 완전히 독립된 네트워크처럼 작동하게됩니다.

VPC 사용의 이점
✅ 보안 강화: 외부 접근을 제어하고 내부 네트워크를 분리 가능
✅ 유연한 네트워크 구성: 퍼블릭/프라이빗 서브넷을 원하는 대로 설정 가능
✅ 고가용성 지원: 여러 가용 영역(AZ)으로 분산하여 장애 대비
✅ 비용 절감: 인터넷 게이트웨이 대신 프라이빗 네트워크 사용 시 트래픽 비용 절감

서브넷은 VPC 내부에서 네트워크를 나누어 여러 개의 작은 네트워크를 만드는 개념입니다.
클라우드에서는 한 개의 VPC를 만들면 기본적으로 하나의 네트워크 공간이 할당되는데,
이 공간을 서브넷으로 나누면 각 서브넷마다 개별적인 네트워크 환경을 설정할 수 있습니다.
서브넷은 크게 퍼블릭 서브넷과 프라이빗 서브넷으로 나뉩니다.
퍼블릭 서브넷 (Public Subnet)
인터넷 게이트웨이(IGW) 를 통해 인터넷과 직접 연결할 수 있음프라이빗 서브넷 (Private Subnet)
NAT 게이트웨이를 사용라우트 테이블은 서브넷 내에서 네트워크 트래픽이 어디로 가야 하는지를 정의하는 규칙입니다.
각 서브넷은 반드시 하나의 라우트 테이블을 사용하며,
라우트 테이블에 어떤 경로가 설정되었느냐에 따라 인터넷 연결 여부와 내부 통신 방식이 결정됩니다.

인터넷 게이트웨이는 VPC 내부의 인스턴스가 외부 인터넷과 통신할 수 있도록 연결하는 장치입니다.
즉, 인터넷과 퍼블릭 서브넷을 연결하는 다리 역할을 하기 때문에
퍼블릿 서브넷에 위치한 EC2(웹 서버) 같은 리소스들이 외부에서 접근 가능하려면 IGW가 필요합니다.
인터넷 게이트웨이 설정 과정
1️⃣ 인터넷 게이트웨이 생성
2️⃣ VPC에 인터넷 게이트웨이 연결
3️⃣ 라우트 테이블에서 0.0.0.0/0 트래픽을 IGW로 연결
4️⃣ 퍼블릭 서브넷에서 외부 인터넷과 연결 완료
NAT 게이트웨이는 프라이빗 서브넷의 인스턴스들이 인터넷과 통신할 수 있도록 해주는 서비스입니다.
즉, 프라이빗 서브넷 내의 서버들은 외부에서 직접 접근할 수 없지만,
NAT 게이트웨이를 사용하면 내부에서 외부로 나가는 인터넷 요청(API 호출, 패치 등)은 가능해집니다.
NAT 게이트웨이 설정 과정
1️⃣ 퍼블릭 서브넷에 NAT 게이트웨이 생성
2️⃣ 프라이빗 서브넷의 라우트 테이블을 NAT 게이트웨이로 연결
3️⃣ 프라이빗 서브넷 내부의 인스턴스가 인터넷 사용 가능
보안 그룹은 VPC 내부에서 개별 인스턴스(EC2, RDS 등)에 대한 트래픽을 제어하는 방화벽 역할을 합니다.
각 보안 그룹은 인바운드(들어오는 트래픽)와 아웃바운드(나가는 트래픽) 규칙을 설정할 수 있습니다.
네트워크 ACL은 서브넷 단위에서 동작하는 방화벽 역할을 합니다.
보안 그룹과의 차이점은 "스테이트리스(Stateless)" 방식으로 동작하기 때문에,
인바운드와 아웃바운드 트래픽을 각각 따로 설정해야 합니다.

보안 그룹은 서버(EC2) 단위의 방화벽, 네트워크 ACL은 서브넷 단위의 방화벽이라고 보면 됩니다!