NAT Gateway를 만들지 않고 EC2를 public subnet에 둔다
- 상태: 채택됨
- 작성일: 2026-07-18
- 관련 문서: ADR-0005, APP-60, APP-61
맥락
원안은 EC2를 private subnet에 두고 NAT Gateway로 아웃바운드를 내보내는 교과서 구성이었다. 트래픽이 사실상 없는 MVP 단계에서 NAT Gateway 하나가 **월 $47+**를 고정으로 먹는다. 사용량과 무관하게 존재하는 것만으로 나가는 비용이라 트래픽이 0에 가까울수록 비율이 나빠진다.
결정
- NAT Gateway를 만들지 않고 EC2를 public subnet(
10.30.0.0/20,10.30.16.0/20)에 직접 둔다. - private subnet 2개도 애플리케이션용으로는 만들지 않는다. RDS만 private에 남긴다.
- 인터넷 노출은 보안그룹(
heymoa-app-sg,heymoa-ai-sg)으로 막는다.
대안
대안 1 — EC2 private + NAT Gateway(원안). 네트워크 계층의 완충이 생겨 보안그룹 실수 하나가 곧바로 노출로 이어지지 않는다. 기각한 이유: 월 $47+가 고정으로 나간다. MVP 단계 인프라 전체 유지비를 NAT 하나가 압도하는데, 그 대가로 얻는 것이 실사용 트래픽 없는 구간의 완충뿐이었다.
결과
- 기본 유지비가 월 약 $41.93로 억제됐다. NAT 하나 값보다 인프라 전체가 싸다.
- EC2가 인터넷에 직접 노출되면서 보안그룹 하나가 유일한 방어선이 됐다. 네트워크 계층의 완충이 없으니 설정 실수 하나가 곧바로 인터넷 노출이 된다.
- 실제로
heymoa-app-sg가 22번 포트를0.0.0.0/0에 열어둔 채 남아 있는 것이cloud-architecture.md§4에 경고로 기록돼 있다(접속은 SSM만 쓰므로 닫을 수 있다).