VPC 개념을 잡아보자

Alex·2025년 3월 24일
0

CS를 공부하자

목록 보기
74/74

VPC는 가상의 네트워크를 만드는 개념이다.
사용자가 원하는 대로 IP주소 범위를 선택하고, 서브넷을 생성하는 등의 작업을 할 수 있다.

먼저 아마존의 인프라에 대해서 한번 알아보자.

AWS 글로벌 인프라는 리전(Region), 가용영역(AZ), 엣지 로케이션, 리전 엣지 캐시 네가지로 구서된다.

리전

리전은 서버의 물리적인 국가/도시 단위의 위치이다.

여러개의 리전을 각 지역마다 두는 이유는 네트워크 속도 때문이다. 우리나라에서 하는 서비스를 미국에서 접속하면 속도가 느려질 수밖에 없다. 그러므로, 미국쪽 리전에 서버를 생성하는 방식을 쓸 수 있다.

리전을 설정함으로써 각종 재해에 대비할 수도 있다. 한 리전에 재해가 발생해 문제가 생겨도, 다른 리전에서 대신 서비스를 유지할 수 있다.

가용 영역

리전이 국가/도시 단위의 지리적 위치라면
가용영역은 각 리전안의 데이터센터다. AWS 서버 컴퓨터들이 모여있는 건물이라고 이해하면 된다.

기본적으로 AWS 각 리전에는 2개 이상의 가용영역이 있다.
하나의 가용 여역에 각종 재해나 정전, 화재가 발생하도 다른 가용 영역을 이용할 수 있다.

엣지 로케이션

AWS의 CDN들이 여러 서비스들을 가장 빠른 속도로 제공(캐싱)하기 위한 거점이다.

클라우드 용어 정리

1) 고가용성 : 사람이 개입하지 않아도 시스템이 항상 작동하고, 자동으로 오류를 복구해 가동 중지를 최소화하는 것(장애가 발생해도 아주 짧은 시간으로, 자동 복구)

2) 내결합성/장애 내구성 : 하드웨어 오류가 발생했을 때 데이터 무결성을 유지하는 컴퓨터 하드웨어나 소프트웨어의 기능
(장애가 있어도 다른 가용영역으로 연결시킴으로써 해결하는 방법)

3) 탄력성 : 용량 요구사항에 신경쓰지 않고 확장 및 축소가 자동으로 동작한다.

4) AMI(Amazon Machine Image) : EC2 인스턴스를 실행하기 위한 정보를 담고 있는 이미지

5) ARN(Amazon Resource Name) : 여러 정보를 표시하는 일종의 아이디 형식

6) 프로비저닝 : 사용자 요구에 맞게 시스템 자원을 할당/배치/배포해두었다가 필요 시 시스템을 즉시 사용할 수 있는 상태로 미리 준비해두는 것
(빌리는 것 -> EC2 한대를 프로비전해서 웹서버를 구성한다)

7) 보안그룹 : 가상의 방화벽

8) 인바운드 트래픽 : 서버로 들어오는 트래픽(클라이언트 요청)

9) 아웃바운드 트래픽 : 서버에서 나가는 트래픽(서버의 응답)

VPC를 더 자세히 공부하자

이 그림을 보면, IDC의 집합인 Region이 존재하며 Region에는 2개의 AZ개 존재한다. 그 중에서 VPC는 Region에 상응하는 규모의 네트워크이다.

즉, VPC는 독립된 하나의 네트워크를 구성하기 위한 가장 큰 단위다.
VPC는 Region에 하나에만 만들 수 있고, 다른 Region에 걸쳐서 확장 불가능하다.

VPC는 사설 IP대역에 맞춰서 설계해야 한다.
한 리전 안에 VPC를 여러개 생성할 떄 서로 IP가 겨치면 안된다. 기본 VPC가 172.31.0.0/16으로 생성되어 있다면 우리는 172.31 네트워크 IP주소를 피해서 생성해야 한다.

또한, 원래 규정된 사설 IP 범위와는 다르게 aws에서는 /16 ~ /28 비트의 서브넷 마스크만을 허용한다는 것이다.
즉, AWS VPC를 생성할 수 있는 가장 큰 IP 대역은 /16이며, 가장 작은 대역은 /28 인 셈이다.

그리고 VPC에서 한번 설정된 IP 대역은 수정할 수 없으며, 각각의 VPC는 독립적이기 때문에 서로 통신할 수 없다. 통신을 원한다면 VPC 피어링 서비스를 통해 VPC간 트래픽을 라우팅하도록 할 수 있다.

서브넷

서브넷은 VPC의 IP주소를 나누어 리소스가 배치되는 물리적인 주소 범위를 뜻한다.

하나의 VPC에 N개의 서브넷을 가질 수 있고, 하나의 AZ에만 생성 가능하다. 여러 AZ에 걸쳐서 만들 수 없다.

서브넷 역시 vpc처럼 CIDR 범위는 /16(65536개) ~ /28(16개)을 사용할 수 있으며, VPC CIDR 블록 범위에 속하는 CIDR 블록을 지정할 수 있다.

퍼블릭 서브넷과 프라이빗 서브넷

인터넷과 연결돼 있는 서브넷을 퍼블릿 서브넷, 인터넷과 연결되지 않은 서브넷을 프라이빗 서브넷이라고 한다.

즉, 프라이빗 서브넷은 VPC 내부에서만 통신이 가능하고 퍼블릭 서브넷은 VPC 외부/내부와 통신이 가능하다.

퍼블릭 서브넷에 존재하는 인스턴스는 Public Ip와 Elastic IP를 보유하여 인터넷에 연결되어 아웃바운드 인바운드 트래픽을 주고받을 수 있다.

반면, 프라이빗 서브넷은 외부에 노출이 되어 있지 않아 접근할 수 없다.

그래서 private subnet에 민감한 데이터 정보들을 저장해 보안을 강화하는 식으로 설계를 하는 편이다.
이처럼 Private 서브넷 내부의 인스턴스들은 오직 다른 서브넷과만 연결이 가능한데, 만일 데이터를 업데이트하는데 인터넷 연결이 필수라면 NAT instance를 통해서 Private 내부의 인스턴스들이 인터넷을 가능하게 만들 수도 있다.

위 사진은 서브넷 구조의 완성형이다. (사진에 보이는 Router나 Internet gatway는 다음 섹션에서 진행한다)
AZ안에 public 서브넷 과 private 서브넷을 배치한다.

라우팅 테이블

각각의 서브넷은 서로 다른 네트워크 영역을 갖는다. 한 서브넷이 다른 서브넷으로 가려면, 라우팅이 필요하다.

라우팅 테이블은 VPC 안에서 발생한 네트워크 요청을 처리하기 위해 어디로 트래픽을 전송해야 하는지 알려주는 표지판 역할을 수행한다.
각 서브넷들은 이러한 네트워크 트래픽 전달 규칙에 해당하는 라우팅 테이블을 가지고 있으며, 요청이 발생하면 이 라우트 테이블을 사용해서 목적지를 찾게 되는 것이다.

VPC 내부(모든 Sunbet)에 대해서는 디폴트로 Routing이 자동으로 생성되어져 있다.
즉 별도의 설정 없이 한 Subnet에서 다른 Subnet으로 통신이 가능하다.

인터넷 게이트웨이

VPC는 기본적으로 격리된 네트워크다. 따라서, VPC에서 생성된 리소스는 기본적으로 인터넷을 사용하지 못한다.

이런 환경에서, 인터넷 게이트웨이는 VPC의 인스턴스와 인터넷간에 통신을 하게 해준다. 즉, VPC 리소스가 인터넷으로 나가기위한 통로이다

[참고자료]

[AWS] 📚 아마존 웹 서비스 구조 (Region / AZ / Edge Location / Cache

[AWS] 📚 VPC 개념 & 사용 - 인프라 구축 [Subnet / Routing / Internet Gateway]

profile
답을 찾기 위해서 노력하는 사람

0개의 댓글