본문으로 건너뛰기

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만 쓰므로 닫을 수 있다).