개발 역사 중 흑역사라고 한다면, RDS의 public IP를 허용하고, ID와 비밀번호를 쉽게 설정하여, 해킹 당하여 AWS 요금이 많이 나왔던 것이다.
이런 일이 없게, 백엔드 서버 또는 RDS를 외부와 완벽히 격리 시키고 싶다면, 어떻게 하는 게 좋을까?
⇒ 결론적으로 VPC와 Private Subnet을 이용하여 네트워크를 구성하면 된다.
AWS의 가장 핵심적인 기능이라고 할 수 있는 VPC에 대해서 알아보도록 하자.
AWS와 같은, 거대한 퍼블릭 클라우드에서 VPC(Virtual Private Cloud)를 사용하여 논리적으로 독립된 나만의 가상 네트워크 공간을 만드는 것
왜 VPC가 필요한데? ⇒ 내가 원하는 대로 네트워크를 세밀하게 설계하고 제어할 수 있다.
즉, VPC는 AWS의 물리적 인프라 위에 논리적으로 완전히 분리된 나만의 네트워크 공간을 만드는 기능이다.
AWS에서 기본으로 제공하는 VPC는 빠르게 리소스를 사용하기 위해, 만들어 놓은 VPC이다. 웬만하면 새롭게 만들어서 사용하도록 하자

VPC 안에 존재하는 더 작은 네트워크 구역
VPC의 IP 주소 범위를 더 작게 나눈 논리적 네트워크 영역
| 구분 | Public Subnet (퍼블릭 서브넷) | Private Subnet (프라이빗 서브넷) |
|---|---|---|
| 인터넷 접근성 | 외부 인터넷과 직접 통신 가능 | 외부에서 직접 접근 불가 |
| 라우팅 테이블 | 인터넷 게이트웨이(IGW)로 향하는 경로(0.0.0.0/0) 등록 | IGW 경로 없음, 필요시 NAT 게이트웨이로 아웃바운드 트래픽만 허용 |
| 사용 용도 | 웹 서버, Bastion Host 등 외부에서 접근이 필요한 리소스 | DB, 내부 서비스 등 외부 노출이 필요 없는 리소스 |
| 공인 IP 할당 | 가능 (퍼블릭 IP 할당 시 인터넷에서 접근 가능) | 불가 (공인 IP 할당해도 IGW 경로 없어 외부 접근 불가) |
| 아웃바운드 트래픽 | 인터넷으로 직접 나갈 수 있음 | NAT 게이트웨이 통해서만 인터넷으로 나갈 수 있음 |
| 인바운드 트래픽 | 외부에서 직접 접속 가능 | 외부에서 직접 접속 불가 |

인터넷 게이트웨이에 연결되었다면 그것은 Public Subnet이라고 한다.