본문 바로가기
study

[도서] Amazon VPC - 3장: VPC 네트워킹 구성 요소의 포함 관계

by ramo 2025. 5. 27.

공간 요소의 포함 관계: 계정 > 리전 > VPC, 가용 영역 > 서브넷

AWS VPC를 처음 공부하다 보면 Region, Availability Zone, VPC, Subnet이 대충 겹쳐 있는 것 같다는 느낌이 드는데, 실제로는 꽤 엄격한 포함 관계가 있다. 이 챕터는 그걸 수학의 집합 개념으로 풀어서 설명한다.

우선 큰 그림부터. AWS 계정(Account)은 가장 바깥 공간이고, 그 안에 여러 Region이 들어간다. Region은 물리적으로 분리된 독립 공간이라 서울(ap-northeast-2)과 런던(eu-west-2) 사이에는 교차 지점이 없다. VPC는 특정 Region 하나에만 속한다. 서울 Region에서 만든 VPC를 런던 Region에서 볼 수 없다는 게 당연해 보이지만, 이 제약을 명시적으로 이해하고 있어야 나중에 멀티 리전 설계에서 실수가 없다.

Availability Zone은 Region을 세분화한 물리 공간이다. 서울 Region에는 ap-northeast-2a부터 2d까지 4개가 있다. Region에 포함된 가용 영역들 사이에도 서로 교차 지점은 없다. 각각 다른 데이터센터를 가리키기 때문이다.

Subnet은 VPC와 Availability Zone 두 공간에 동시에 포함되어야 한다. 서브넷을 생성하면 VPC를 고르고 가용 영역을 골라야 하는데, 그 이유가 바로 여기에 있다. VPC에만 속하고 가용 영역에 속하지 않는 서브넷은 만들 수 없고, 반대도 마찬가지다. 결국 서브넷이 점유할 수 있는 공간은 VPC와 가용 영역의 교집합으로만 한정된다.

VPC와 가용 영역은 포함 관계가 아니다

이 부분이 처음엔 좀 헷갈렸다. VPC가 가용 영역을 품고 있는 것처럼 다이어그램에 자주 표현되는데, 실제로는 그렇지 않다. VPC와 가용 영역은 서로를 포함하거나 포함되는 관계가 아니고, 각자 고유한 영역이 있다.

VPC만의 전용 공간에는 Security Group이나 Network ACL 같은 요소들이 놓인다. 이것들은 가용 영역에 의존하지 않는다. 반대로 가용 영역만의 전용 공간도 있는데, S3처럼 리전에는 포함되지만 VPC와 무관하거나 VPC 연결을 해제한 서비스들이 여기에 해당한다.

그래서 AWS 토폴로지를 그릴 때 VPC 안에 가용 영역 박스를 넣는 표현 방식이 엄밀히 말하면 부정확하다. 서브넷 기준으로 보면 VPC와 가용 영역 양쪽에 모두 걸쳐 있는 것이고, VPC 자체는 가용 영역을 포함하는 게 아니라 가용 영역들과 교집합 공간을 공유하는 것에 가깝다.

패런트와 연결(Attach or Associate)의 구분

3장에서 또 중요하게 다루는 게 패런트와 연결 개념이다. 패런트는 자신을 포함하는 직속 상위 집합을 말한다. Security Group을 만들 때 VPC를 지정하는데, 이 VPC가 Security Group의 패런트가 된다. 한번 생성된 네트워크 구성 요소는 수명 주기 동안 패런트를 벗어날 수 없다. 서울 Region에서 만든 VPC는 그 VPC가 삭제될 때까지 서울 Region에 종속된다.

연결(Attach or Associate)은 다른 얘기다. VPC 네트워킹 요소를 다른 요소에 붙여서 쓰는 것을 말한다. 네트워크 인터페이스를 인스턴스에 붙이면 Attach, Route Table을 서브넷에 붙이면 Associate라고 부른다. 이 연결에는 종속성이 있는 것과 없는 것이 갈린다.

Internet Gateway가 대표적인 종속성 있는 케이스다. 특정 VPC에 연결한 상태라면 다른 VPC에 추가로 연결할 수 없다. 반드시 분리(detach)한 뒤에야 다른 VPC에 붙일 수 있고, 하나의 VPC에 2개 이상의 Internet Gateway도 연결할 수 없다. 1:1 관계다. 반면 Security Group은 연결 종속성이 없어서 여러 네트워크 인터페이스에 중복 연결이 가능하고, Route Table이나 Network ACL도 VPC 내 모든 서브넷에 동시 연결할 수 있다. 단, 이 둘은 다중 연결(N:1)은 안 되기 때문에 서브넷 단위로 1개씩만 연결해야 한다.

패런트는 공간 포함 관계, 연결은 기능적 결합 관계라고 구분해 두면 이후 구성 요소들을 볼 때 혼선이 줄어든다.