NAT Gateway를 Zonal 구조에서 Regional 구조로 전환할 수 있을까?
안녕하세요 클래스메소드 김재욱(Kim Jaewook) 입니다. 이번 블로그에서는 NAT Gateway를 Zonal 구조에서 Regional 구조로 전환할 수 있는지 확인해 봤습니다.
NAT Gateway의 Zonal과 Regional에 대한 상세한 내용은 아래 블로그에서 확인할 수 있습니다.
Zonal 구조로 NAT Gateway 생성
CloudFormation에서 NAT Gateway를 생성할 때 별도의 설정 없이 특정 서브넷을 지정하면 해당 서브넷이 속한 AZ에 NAT Gateway가 생성됩니다.
따라서 NAT Gateway 1개를 특정 AZ에만 배치하고 여러 AZ의 프라이빗 서브넷이 이를 공용으로 사용하는 경우, 일반적으로 이를 Zonal NAT Gateway 구조라고 부릅니다.
NatEIP:
Type: AWS::EC2::EIP
Properties:
Domain: vpc
Tags:
- Key: Name
Value: !Sub ${SystemName}-${EnvName}-nat-eip
- Key: Env
Value: !Sub ${EnvName}
NatGateway:
Type: AWS::EC2::NatGateway
Properties:
AllocationId: !GetAtt NatEIP.AllocationId
SubnetId: !Ref ExistingPublicSubnet1aId
Tags:
- Key: Name
Value: !Sub ${SystemName}-${EnvName}-nat
- Key: Env
Value: !Sub ${EnvName}
Regional 구조로 NAT Gateway 변경
Regional NAT Gateway는 특정 서브넷에 배치되지 않으므로 SubnetId를 사용할 수 없습니다. 따라서 AvailabilityMode를 regional로 설정하고 SubnetId를 제거한 후, NAT Gateway를 생성할 VPC를 나타내는 VpcId를 지정해야 합니다.
NatEIP:
Type: AWS::EC2::EIP
Properties:
Domain: vpc
Tags:
- Key: Name
Value: !Sub ${SystemName}-${EnvName}-nat-eip
- Key: Env
Value: !Sub ${EnvName}
NatGateway:
Type: AWS::EC2::NatGateway
Properties:
AvailabilityMode: regional
VpcId: !Ref ExistingVpcId
AllocationId: !GetAtt NatEIP.AllocationId
Tags:
- Key: Name
Value: !Sub ${SystemName}-${EnvName}-nat
- Key: Env
Value: !Sub ${EnvName}
Regional NAT Gateway는 특정 서브넷이나 AZ에 종속되지 않고 VPC 전체에서 동작하며, AWS가 AZ 단위 확장과 고가용성을 자동으로 관리합니다.
이 과정에서 라우팅 대상이 일시적으로 사라지므로, Private Subnet에 위치한 EC2, ECS, EKS 워커 노드 등이 NAT Gateway를 통해 인터넷에 접근하고 있다면 일시적인 통신 단절이 발생할 수 있습니다.
운영 환경이라면 서비스 영향도를 고려하여 점검 시간에 작업하거나, 신규 NAT Gateway를 먼저 생성한 뒤 라우팅을 전환하는 방식으로 마이그레이션을 진행하는 것이 좋습니다.

CloudFormation 스택 업데이트에는 약 5분 정도 소요됩니다. 업데이트가 진행되는 동안 기존 NAT Gateway가 삭제되고 새로운 NAT Gateway가 생성됩니다.

결과를 확인해 보면, CloudFormation이 NAT Gateway 리소스를 교체(Replacement)하면서 기존 NAT Gateway를 삭제하고 Regional NAT Gateway를 새롭게 생성한 것을 확인할 수 있습니다.

마무리
이번 포스팅에서는 CloudFormation으로 생성한 NAT Gateway를 Zonal 구조에서 Regional 구조로 변경하는 방법을 살펴보았습니다.
Regional NAT Gateway는 특정 AZ에 종속되지 않고 VPC 단위로 동작하기 때문에, AZ 장애에 대한 복원력을 높이고 NAT Gateway 운영을 단순화할 수 있다는 장점이 있습니다. 또한 AWS가 내부적으로 고가용성과 확장을 관리하므로 인프라 운영 부담도 줄일 수 있습니다.
CloudFormation 기준으로는 AvailabilityMode를 regional로 변경하고, 기존 SubnetId를 제거한 뒤 VpcId를 지정하는 것만으로 비교적 간단하게 전환할 수 있었습니다. 다만 해당 속성 변경은 NAT Gateway 리소스의 교체(Replacement)를 발생시키기 때문에, 업데이트 과정에서 기존 NAT Gateway가 삭제되고 새로운 NAT Gateway가 생성됩니다.
실제로 스택 업데이트에는 약 5분 정도가 소요되었으며, 이 시간 동안 NAT Gateway를 통해 인터넷 통신을 수행하는 리소스는 일시적인 영향이 발생할 수 있습니다. 따라서 운영 환경에서는 서비스 영향도를 충분히 검토한 후 작업을 진행하는 것이 좋습니다. 필요하다면 신규 NAT Gateway를 먼저 생성한 뒤 라우팅을 전환하는 방식으로 다운타임을 최소화하는 것도 고려해 볼 수 있습니다.
최근 AWS에서 Regional NAT Gateway를 지원하면서 NAT Gateway 설계 방식에도 변화가 생기고 있습니다. 기존에는 AZ별로 NAT Gateway를 배치하여 고가용성을 확보하는 구성이 일반적이었다면, 이제는 서비스 특성과 요구사항에 따라 Regional NAT Gateway를 활용하는 선택지도 고려할 수 있게 되었습니다.
NAT Gateway의 Zonal 구조와 Regional 구조에 대한 보다 자세한 내용은 아래 블로그를 참고하시기 바랍니다.








