Network Address Translation 의 약자로, 사설 네트워크와 공용 네트워크 사이에서 통신이 가능하도록 IP 주소를 변환하는 역할을 한다.
VPC 내부의 인스턴스들은 대부분 사설 ip를 할당받는다. 하지만 외부 API 호출 (결제, 로그인 API 등) 처럼 외부 인터넷과 통신하려면 공용 ip 주소를 사용해야하는데, 이때 NAT 게이트웨이가 필요하게 된다.
NAT Gateway는 본래 IPv4 주소 고갈 문제 때문에 등장했다. 전 세계 공인 ip는 약 43억개 뿐이라 모든 기기에 공인 ip를 부여할 수 없다. 그래서 사설 ip와 공인 ip로 나누어 하나의 공인 ip를 여러 기기가 공유하는 형태가 되었는데, 내부에서 시작한 연결의 응답이 내부의 어느 기기로 돌아가야하는지 추적하기 위해 NAT Gateway 가 등장한 것이다. 그러자 자연스럽게 인바운드 트래픽 차단 효과가 생겼고 외부에서 내부 서버 구조를 알 수 없는 은닉 효과까지 생겨 보안 상 이점을 얻게 되었다.
IP 패킷을 통과시켜주는 인터넷 게이트웨이라는 것이 있는데, 이건 내부-외부 양방향 통신이 가능하다. 그런데 여기서, 그럼 굳이 단방향 NAT Gateway를 쓰지 않고 인터넷 게이트웨이만 써도 되나? 하는 생각이 들었다.
하지만 그럼에도 인터넷 게이트웨이와 NAT 게이트웨이가 따로 필요한 이유가 있다. 인터넷 게이트웨이는 트래픽을 통과시켜주는 역할만 할뿐 트래픽을 분산하거나 서버 헬스체크를 할 수가 없다. 또한 공용ip가 없는 서버는 통과시켜주지 않아 공용 ip를 부여할 수 없는 DB서버에는 인터넷 게이트웨이를 사용할 수 없다. 따라서 NAT 게이트웨이가 대신 외부로 나가주는 역할을 해야한다. 그리고 트래픽 분산을 위해 로드밸런서가 인바운드 트래픽을 처리하는 것이다.