AWS VPC

Ziggy Stardust·2025년 1월 3일
0

AWS

목록 보기
3/3

개인적으로 공부하며 정리한 글입니다. 당연히 틀린 부분이 있을 수 있으니 중요한 부분은 공식 문서를 확인하시길 바랍니다.
어떤 피드백이라도 감사히 받겠습니다.


AWS 를 사용하거나 공부할 때 가장 진입장벽을 많이 느끼는 파트 같습니다.

현대에선 네트워크의 추상화가 너무 잘되어있어 네트워크 관련 엔지니어가 아니라면 잘 와닿지도 않을 것 같습니다.

그런 VPC 를 한 번 다뤄보려 합니다.


본론

VPC 란

VPC 란 용어 자체는 Virtual Private Cloud 의 약자로 AWS 에서 제공하는 가상의 사설 네트워크 입니다.

이 VPC 의 역할은 뭘까요?

용어 자체에서 알 수 있듯 네트워크의 한 분류로 볼 수 있습니다.
네트워크여러 대의 컴퓨터가 서로 연결되어 데이터를 주고 받을 수 있는 환경, 개념을 일컫는 말입니다.

그래서 AWS VPC 는 AWS 내의 자원이 서로 연결되어 작용할 수 있도록 도와주는 기능입니다.

그래서 다이어그램을 그리게 되면 대부분의 AWS 서비스를 감싸듯 나타나는걸 볼 수 있습니다.

VPC 는 왜 쓰나요?

서로 상호작용할 AWS 리소스들을 네트워크 안에서 편리하고 효과적으로 관리하기 위함입니다.

조금 더 구체적으로는 같은 네트워크 안의 자원들끼리만 통신할 수 있도록 내부적으로 라우팅 처리를 해준다던가 현재 VPC 에서 인터넷과 연결을 위해 인터넷 게이트웨이를 추가한다던가 하는 작업을 VPC 를 통해 할 수 있습니다. 그리고 서브넷을 나눠 네트워크를 좀 더 세분화해서 다룰 수도 있습니다.

  • 네트워크 내 라우팅 처리
  • 인터넷 게이트웨이 추가
  • 서브넷 관리

이러한 기능을 한 곳에서 담당하고 있는게 VPC 입니다.

서브넷은 무엇인가요?

서브넷은 VPC 같은 네트워크를 조금 더 세분화, 즉 잘게 나눠서 사용하는 개념입니다.

AWS 에서 서브넷은 논리적으로 VPC 네트워크를 나누는 것이라 물리적 분리의 개념과는 다릅니다. 따라서 라우팅도 소프트웨어적으로 처리합니다. 그리고 서브넷은 AWS 내 한 가지 가용 영역 안에서 관리 됩니다.

이렇게 나눈 서브넷에 개별적으로 ACL 같은 보안 설정을 둘 수 있고 Public, Private 으로 설정해 보안적인 부분을 향상시킬 수 있습니다. (트래픽 병목 감소의 효과도 있다하는데 잘 이해가 안 가네요.)

네트워크는 자신의 네트워크를 형성하기 위해 인스턴스나 여러 장치들을 자신 안에 두는데 이런 장치들을 관리하기 위해 IP를 부여해야 합니다.

이런 IP는 기본적으로 Private IP 로 다룹니다.

그리고 이런 IP 는 한정적인 자원 입니다. IPv4 를 따른다면 최대 가능한 IP 는 2^32 개가 됩니다. (실제론 예약 IP 를 제외한 수만큼 가능)

그래서 VPC 의 한정된 IP 를 서브넷으로 나눈다는건 땅따먹기 게임 같은 일이 발생합니다.

인터넷 연결 시엔 Public IP 가 필요합니다. 이때 네트워크 내부에서 다뤄지는 Private IP 를 Public IP 로 바꿔줘야하는데 이 역할을 해주는게 NAT(Network Address Translation) 입니다.


CIDR 는 무엇인가요?

CIDR 는 서브넷마스킹 표기법 중 하나입니다.

아래와 같이 익숙한 IPv4 주소를 표기한 뒤 /숫자 를 덧붙이는데
이를 프리픽스 표기법이라 합니다. (CIDR 표기법에서 프리픽스 표기법을 사용)

10.0.0.0/16

이런 서브넷마스킹은 네트워크 장치들에 주로 붙습니다. 왜냐하면 네트워크 정의와 라우팅을 위해서 입니다.

어떻게 CIDR 를 보고 네트워크 정의와 라우팅을 할 수 있는지 설명드리겠습니다.

그전에 CIDR 표기 구조를 조금 더 자세히 말씀드리자면
프리픽스 표기의 숫자는 네트워크 식별에 해당하는 비트 수를 의미합니다.
IPv4 는 32비트로 구성되어 있어 프리픽스 표기의 수만큼 IP 비트의 앞자리 수들을 네트워크 식별용으로 사용하겠다는 의미입니다.

10.0.0.0/16 의 경우엔 앞 16비트를 의미하는 10.0 을 네트워크 식별용으로 사용하겠다는 의미입니다.

이렇게 CIDR 를 통해 네트워크 장치를 식별할 수 있게 되니 이 정보를 통해 네트워크 정의와 라우팅을 할 수 있습니다.

네트워크를 정의할 때 10.0.0.0/16 을 선언함으로 10.0 으로 시작하는 IP는 이 장치에서 처리하겠습니다. 라고 나타낼 수 있습니다. 그리고 이 정의를 통해 라우팅 과정에서 10.0 으로 시작하는 요청 트래픽들을 라우팅 처리 할 수 있습니다.

이제 여기에 서브넷 개념을 가져와 보겠습니다.
AWS 에서 서브넷은 VPC 를 세분화한 것이니 VPC 는 서브넷을 포함한다고 표현할 수 있습니다. 즉 서브넷은 VPC 보다 커질 수 없으니 서브넷들은 VPC 보다 CIDR 에서 표기할 수 있는 네트워크 식별용 수의 범위가 적습니다.

VPC 의 CIDR 표기가 10.0.0.0/16 이라면 서브넷의 CIDR 표기는 10.0.0.0/17 처럼 VPC 의 것보다 식별할 수 있는 수의 범위를 적게 해야합니다. (전자의 경우 다룰 수 있는 IP의 수가 2^16, 후자의 경우 2^15)

추가로 CIDR 는 네트워크 장치를 위한 것이고 인스턴스 같은 호스트들은 굳이 CIDR 로 나타낼 필요가 없습니다. 굳이 나타낸다면 프리픽스 수로 32가 들어올 것입니다. 인식하고 처리해야할 IP가 자기자신 밖에 없으니까요.

AWS 에선 실제 네트워크 장치별 예약된 IP 가 있어 실제 기대한 CIDR 규모보다 사용할 수 있는 IP 는 적을 수 있습니다. (서브넷 첫 번째, 마지막 IP는 예약되어있습니다. 네트워크 자체 주소, 브로드캐스트 주소)

사설망의 IP 범위는 표준에 따라 정해져 있습니다.

10.0.0.0 - 10.255.255.255 (10/8 prefix)
172.16.0.0 - 172.31.255.255 (172.16/12 prefix)
192.168.0.0 - 192.168.255.255 (192.168/16 prefix)


VPC 엔 무엇이 있나요?

IGW(Internet Gateway), Subnet, 라우팅 테이블 그리고 EC2, RDS 같이 VPC 내에서 관리되는 AWS 리소스들이 있습니다.

AWS 리소스 중엔 VPC 에 포함되지 않는 S3, DynamoDB 같은 것들이 있는데 이런 것들은 VPC 밖에서 처리됩니다. (VPC 에 존재하지 않는다고 무조건 인터넷을 통해 S3 에 접근하는 것은 아니고 내부적으로 Endpoint 를 통해 접근 가능합니다. 이렇게 VPC 밖에 있어도 VPC 와 통합된 듯 사용이 가능합니다.)


비용

VPC 나 서브넷을 나눔으로 드는 비용은 없지만 Public IP 부여나 Network Gateway 등 일부 서비스에는 비용이 발생합니다.
공식 자료

그리고 네트워크 비용 (Data Transfer) 에 대해서 따져봐야합니다.

같은 VPC 내 다른 가용 영역에 배치된 서브넷에 데이터를 전송한다면 비용이 발생합니다.
반대로 같은 VPC 내 같은 가용 영역에 배치된 서브넷에 데이터를 전송한다면 비용이 발생하지 않습니다.

IGW 를 통해서 데이터를 전송한다면 Outbound 비용이 발생합니다. AWS 정책 상 Inbound 비용은 받지 않습니다. (인터넷에서 인스턴스에 데이터를 전달한다면 인스턴스 입장에선 외부에서 데이터가 들어오는거니 Inbound 로 처리, 사진 업로드처럼)

그 외 VPC 끼리 서로 통신하는 VPC peering 이나 Endpoint 접근등이 있긴한데 이 곳에 다 적진 않겠습니다.

저는 비용 관련 책임을 질 수 없으니 꼭 스스로 한 번 더 확인하시고 본인만의 전략을 세우시길 권장합니다. 시간이 지남에 따라 price 정책이 바뀔 수도 있습니다.

따라서 비용을 개선하고 싶다면 다음 방법들을 고려할 수 있습니다.

  • 같은 가용 영역 내에서 리소스 배치
  • IGW 대신 VPC Endpoint 사용

헷갈리는 것

리전, VPC, 가용 영역(AZ), 서브넷 이런 용어들이 있는데 관계가 어떻게 되나요?

가용 영역은 리전 내에 존재하는 물리적 위치, 영역 입니다.
한 리전에 가용 영역 a, b, c 가 있다면 이건 한 리전에 데이터 센터 건물이 독립적으로 세 곳 있다고 볼 수 있습니다.

따라서 가용 영역은 리전 바로 밑의 개념입니다.
그리고 VPC 또한 리전 바로 밑의 개념입니다.
그래서 가용 영역과 VPC 는 같은 레벨의 개념이라 서로 포함되게 설명이 불가하고 이해하는데 어려움을 주는 것입니다.

그래서 다이어그램을 그릴 때도 가용 영역과 VPC 는 포함되게 그리지 않고 겹쳐서 그리 것을 많이 볼 수 있습니다.

대신 서브넷은 단일 가용 영역 안에 포함되어야 합니다.

마치 VPC 와 가용 영역이 각각 x축, y축 같아서 서브넷들은 x축, y축이 나타내는 좌표와도 같이 느껴지네요.



결론

VPC 는 AWS 자원들끼리 네트워크 안에서 상호작용하고 네트워크 처리를 편리하게 할 수 있게 도와주는 서비스입니다.

VPC 내부에는 인터넷 게이트웨이, 서브넷, 라우팅 테이블 같은 요소들이 있어 네트워크 전반적인 처리를 담당합니다.

VPC 자체엔 비용이 없지만 Public IP, NAT Gateway 같은 서비스에선 비용이 청구됩니다.

profile
spider from mars

0개의 댓글