VPC는 AWS에서 지원하는 사용자 지정 가상 네트워크이다. 해당 서비스는 가상화된 네트워크를 구축 & 관리 기능을 지원한다. VPC에서 제공하는 다양한 기능을 사용해 가상 네트워크 환경을 생성할 수 있다.
다음은 VPC의 예시이다.
AWS에서 컴퓨팅 서비스를 제공하려면 대규모의 서버 컴퓨터가 필요할 것이다. 이때 한 장소에 전부 몰아넣게 되면 치명적인 문제가 발생한다.
전세계에 데이터 센터 그룹을 분산 배치함으로써 이러한 문제를 예방 가능하다. 이때 해당 분산된 데이터 센터를 Region이라고 한다.
VPC는 하나의 Region에 종속되며 여러 Region에 걸쳐 형성될 수 없다. VPC 내에서는 사설 IP를 사용한다. 사용자는 VPC가 네트워크 범위를 가질 수 있도록 IP주소를 할당하여야 한다.
IP주소가 할당된 VPC를 바로 사용하지 않는다. IP주소를 관리하고, 서버를 여러개 배치하며, 네트워크 관리, 보안, 확장성 등을 향상시키기 위해 VPC를 더 작은 단위인 Subnet(서브넷) 으로 위 그림처럼 분할하여 사용한다. 이로써 Subnet은 더 작은 범위의 IP범위를 갖게 된다. 각 서브넷안에 서버, EC2, RDS같은 리소스를 배치할 수 있다.
이때 서브넷은 두가지로 나뉜다.
VPC와 인터넷을 연결하는 서비스이다. 인터넷에서 VPC로 오는 요청은 제일 먼저 게이트웨이를 먼저 만나게 된다. 반대로 VPC 내에서의 네트워크 트래픽을 외부 IP주소로 보내는 역할을 한다.
라우터는 네트워크 요청이 발생했을 때 VPC내에서 해당 요청을 알맞은 경로로 보내는 장치이다. 라우터 테이블을 사용하여 게이트웨이와 서브넷 사이에서 IP주소에 따라 정해진 경로로 네트워크 트래픽을 이동시킨다.
또한 각 서브넷에는 라우터가 존재한다. 즉, VPC 내의 서브넷 사이에서도 통신이 가능하다. 이때, 서브넷은 두가지 종류로 나뉜다.
public subnet은 외부와 연결된 서브넷이다. 인터넷에서 VPC로 들어오는 IP주소는 라우팅 테이블에 의해 public subnet으로 들어온다. 인터넷과 연결되는 Internet Gateway와 연결되어 인터넷에서 VPC에 들어오는 요청들은 Internet Gateway에서 public subnet으로 이동한다. 해당 설정은 public subnet으로 만들고싶은 서브넷을 Internet Gateway를 통해 인터넷과 연결되도록 라우팅 테이블 설정이 필요하다.
private subnet은 인터넷과 단절된 서브넷이다. Internet Gateway에서 받아온 네트워크 요청은 private subnet으로 오지 않는다. 즉, 공인IP주소로 접근 불가능한 서브넷이다. private subnet은 인터넷과 통신하기 위해선 public subnet을 거쳐 간접적으로 통신해야 한다. 이러한 특성을 사용해 특정 데이터를 private subnet에 위치시켜 해당 데이터를 보호하는 것이 가능하다. 데이터베이스를 private subnet에 둔다고 보면 되겠다.
EC2는 Instance(인스턴스)라고 불리는 가상 서버를 제공한다. 사용자의 필요에 따라 운영체제, 환경, 목적에 따른 유형 등을 선택 가능하다. 이전의 네트워크 개념이 아닌 실제로 연산이 가능한 컴퓨터(서버)라고 보면 된다. 사용자는 해당 서버(EC2)에 직접 접속하여 사용, 또는 애플리케이션 설치가 가능하다. 이에 웹 서버, 애플리케이션 서버, 데이터베이스 서버 등을 구성하여 서비스를 제공할 수 있다.
이외에도 보안그룹, 네트워크 ACL, Elastic IP 등이 있다. 더 부딪히고 배워서 추후 작성할 계획이다.