AWS 프리티어 끝? NAT Gateway부터 끄고 월 4만원 아끼세요

AWS 프리티어 끝? NAT Gateway부터 끄고 월 4만원 아끼세요

여러분, AWS 비용의 주범이 비싼 EC2 인스턴스라고 생각하셨나요? 사실 매달 조용히 빠져나가는 NAT Gateway 고정 비용이 문제입니다. VPC Endpoint로 이 비용을 0원으로 만드는 실전 아키텍처를 공개합니다.
AWS 월 4만원, 그냥 버리고 계셨습니다.

여러분, AWS 프리티어 종료 후 나온 요금 명세서를 보며 가장 먼저 어떤 행동을 하시나요? 아마 대부분 습관적으로 EC2 인스턴스 사양을 낮추거나, 안 쓰는 EBS 볼륨을 삭제하는 일부터 시작하실 겁니다. 하지만 이런 노력에도 불구하고 매달 고정적으로 청구되는 비용 때문에 골머리를 앓고 계셨다면, 범인은 아마 생각지도 못한 곳에 숨어있을 겁니다.

이 글을 끝까지 읽으시면, 그동안 아무도 알려주지 않았던 월 4만원($32)의 고정 비용을 즉시 0원으로 만드는 구체적인 아키텍처 변경 방법을 알게 됩니다. 단순히 서비스를 끄는 것이 아니라, 더 효율적인 구조로 변경하여 비용과 성능을 모두 잡는 방법입니다.

1. 통념: "서버 비용은 EC2와 RDS가 전부다"

많은 개발자분들이 AWS 비용은 곧 컴퓨팅 자원(EC2, RDS)의 사용 시간과 비례한다고 생각합니다. 물론 틀린 말은 아닙니다. 하지만 서버를 단 한 대도 실행하지 않아도, 심지어 프리티어 기간 중에도 우리도 모르게 비용이 청구되는 '숨겨진 고정비'가 있습니다.

바로 Private Subnet의 인터넷 통신을 위해 설정해 둔 NAT Gateway입니다. 서울 리전 기준, 생성만 해두면 시간당 약 $0.059, 한 달이면 약 4만원이 넘는 비용이 청구됩니다. 작은 스타트업이나 개인 프로젝트 입장에서는 결코 무시할 수 없는 금액이죠.

2. 숨겨진 진실: NAT Gateway는 '통행세'와 같다

그렇다면 왜 우리는 이 비용을 감수하면서 NAT Gateway를 사용했을까요? 바로 DB 서버처럼 외부에서 직접 접근하면 안 되는 Private Subnet의 리소스가 OS 업데이트나 외부 API 호출 등을 위해 인터넷으로 '나갈' 필요가 있었기 때문입니다.

하지만 여기서 전문가들만 아는 디테일이 있습니다. Private Subnet의 리소스가 통신하려는 대상이 S3, DynamoDB, 혹은 다른 AWS 서비스인 경우가 대부분이라는 사실입니다. 즉, '공개된 인터넷'이 아니라 'AWS 내부 네트워크'로만 통신하면 되는데, 굳이 비싼 '인터넷 통행세(NAT Gateway)'를 내고 있었던 셈입니다.

기존 아키텍처 흐름도

3. 해결책 1: Gateway Endpoint로 S3/DynamoDB 비용 0원 만들기

가장 확실하고 즉각적인 해결책은 VPC Endpoint를 사용하는 것입니다. 특히 S3와 DynamoDB는 'Gateway' 타입의 Endpoint를 무료로 제공합니다.

이는 Private Subnet과 S3 사이에 AWS 내부 사설망 통로를 뚫어주는 것과 같습니다. NAT Gateway를 거치지 않으니 당연히 관련 비용은 0원이 되고, AWS 내부망을 사용하므로 보안과 속도 측면에서도 훨씬 유리합니다.

설정 방법은 매우 간단합니다.

  1. AWS 콘솔에서 'VPC' 서비스로 이동 후 '엔드포인트' 메뉴를 클릭합니다.
  2. '엔드포인트 생성'을 누르고, 서비스 이름 필터에서 's3'를 검색합니다.
  3. com.amazonaws.ap-northeast-2.s3 타입이 Gateway인 것을 선택합니다.
  4. 해당 엔드포인트를 적용할 VPC와 라우팅 테이블을 선택하면 끝입니다.

장단점 및 비교표

항목 NAT Gateway Interface Endpoint (일반)
시간당 비용 약 $0.059 (고정) 약 $0.014 (가변)
데이터 처리 비용 GB당 약 $0.059 GB당 약 $0.014
주요 용도 모든 아웃바운드 인터넷 트래픽 특정 AWS 서비스 및 외부 통신
비용 효율성 트래픽이 적을 때 매우 비효율적 트래픽이 적을 때 압도적으로 유리

4. 해결책 2: 외부 라이브러리 설치는 Interface Endpoint로 전환

"S3는 해결됐는데, OS 업데이트나 Github에서 소스를 받아오는 건 어떻게 하죠?" 좋은 질문입니다. 이런 '진짜 인터넷' 통신이 필요할 때를 대비한 것이 'Interface' 타입의 Endpoint입니다.

Interface Endpoint는 시간당 요금과 데이터 처리 비용이 발생하지만, NAT Gateway처럼 항상 켜두는 고정비가 아니라 사용량 기반(On-demand) 과금이라는 큰 차이가 있습니다. 개발 환경에서 가끔 라이브러리를 설치하는 정도라면 NAT Gateway보다 훨씬 저렴합니다.

5. 해결책 3: 'Instance Scheduler'로 개발 환경 비용 70% 자동 절감

네트워크 비용을 최적화했다면 이제 컴퓨팅 비용을 관리할 차례입니다. 특히 매일 사용하는 것이 아닌 개발/스테이징 환경의 EC2와 RDS는 업무 시간 외에는 불필요한 비용을 발생시키는 주범입니다.

AWS에서 공식 제공하는 'Instance Scheduler' 솔루션을 CloudFormation 템플릿으로 배포하면, 태그(Tag) 기반으로 특정 인스턴스들을 원하는 스케줄(예: 평일 오전 9시 ~ 오후 7시)에만 자동으로 켜고 끌 수 있습니다.

# 예시: 개발 서버에 적용할 스케줄링 태그
# 이 태그를 EC2 인스턴스에 추가하기만 하면
# Instance Scheduler가 인식하여 자동으로 관리합니다.
Key: "Schedule"
Value: "office-hours-seoul"

실제로 저희 팀에서는 이 방법을 도입하여 개발 환경의 월별 컴퓨팅 비용을 약 70% 가까이 절감했습니다. 설정 과정이 조금 번거롭게 느껴질 수 있지만, 한번 구축해두면 장기적으로 엄청난 비용 절감 효과를 가져다주는 FinOps의 기본 중 하나입니다.

AWS Instance Scheduler 아키텍처

6. 네트워크 아키텍처 진단의 중요성

우리는 흔히 눈에 보이는 리소스만 관리하려고 합니다. 하지만 클라우드 환경에서는 데이터가 흐르는 통로, 즉 네트워크 아키텍처 자체가 비용과 직결됩니다. 인프라를 처음 설계할 때 표준 아키텍처를 그대로 따르기보다, 실제 데이터가 어디로 흘러가는지 파악하는 것이 우선입니다.

7. 보안과 비용의 균형 잡기

NAT Gateway를 제거하고 Public IP를 사용하는 방식은 비용은 절감되지만 보안 위협에 노출될 수 있습니다. 따라서 무조건적인 제거보다는 VPC Endpoint와 같은 대안을 적극 활용하여 사설망의 이점은 유지하면서 비용만 덜어내는 전략이 필요합니다.

8. 데이터 처리량 모니터링하기

현재 사용 중인 NAT Gateway의 CloudWatch 지표를 확인해보세요. 데이터 처리량이 미미함에도 불구하고 시간당 고정 비용만 나가고 있다면, 이는 가장 우선적으로 최적화해야 할 대상입니다.

CloudWatch 모니터링 예시

9. FinOps 문화의 도입

비용 절감은 한 번의 작업으로 끝나지 않습니다. 정기적으로 인프라 비용 리포트를 검토하고, 팀원들과 공유하며 불필요한 낭비 요소를 찾아내는 FinOps 문화를 정착시키는 것이 장기적인 관점에서 매우 중요합니다.

10. 최신 인스턴스 타입 활용

네트워크 외에도 Graviton 인스턴스와 같은 최신 하드웨어를 활용하면 성능은 높이면서 비용은 낮출 수 있습니다. 인프라 형상 관리를 통해 언제든 인스턴스 타입을 변경할 수 있는 유연함을 갖추는 것을 추천합니다.

11. 실천을 위한 로드맵

지금 바로 AWS 콘솔에 접속하여 엔드포인트 메뉴를 확인해보세요. 무료로 제공되는 Gateway Endpoint 설정만으로도 당장 오늘부터 발생하는 불필요한 비용을 줄일 수 있습니다.

실천 로드맵 이미지

AWS 제품 관리 및 비용 절감 꿀팁

정기적으로 사용하지 않는 탄력적 IP(EIP)를 해제하고, 오래된 스냅샷을 정리하는 습관을 들이세요. 특히 개발 서버의 경우 주말이나 야간에는 인스턴스를 중지시키는 것만으로도 상당한 비용을 보전할 수 있습니다. Cost Explorer의 권장 사항 기능을 매주 한 번씩 체크하는 것도 좋은 꿀팁입니다.

Q&A

Q1: NAT Gateway를 없애면 apt-get, yum 같은 패키지 설치는 어떻게 하나요?

가장 간단한 방법은 패키지 설치가 필요할 때만 해당 Private EC2 인스턴스가 속한 서브넷을 잠시 Public Subnet으로 변경하고 EIP를 할당하여 작업한 뒤 원복하는 것입니다. 또는, 사내에 Nexus나 Artifactory 같은 미러링 리포지토리를 구축하여 AWS 내부망을 통해 라이브러리를 설치하는 방법도 있습니다.

Q2: Gateway Endpoint와 Interface Endpoint의 가장 큰 차이점은 무엇인가요?

Gateway Endpoint는 라우팅 테이블을 수정하여 트래픽 경로를 지정하는 방식이며, S3와 DynamoDB만 지원하고 비용이 무료입니다. 반면, Interface Endpoint는 서브넷 내에 ENI(탄력적 네트워크 인터페이스)를 생성하여 Private IP를 부여받는 방식입니다. 대부분의 AWS 서비스를 지원하며, DNS를 통해 엔드포인트로 연결되고 시간당 및 데이터 처리 비용이 발생합니다.

Q3: 운영 중인 서비스의 NAT Gateway를 제거해도 서비스 중단이 없나요?

반드시 점검이 필요합니다. 먼저 CloudTrail이나 VPC Flow Logs를 통해 현재 NAT Gateway를 통해 어떤 트래픽이 나가고 있는지 분석해야 합니다. 만약 외부 결제 API나 서드파티 서비스와 통신하는 로직이 있다면, 해당 트래픽은 Interface Endpoint나 다른 방식으로 처리할 수 있도록 아키텍처를 변경한 후에 NAT Gateway를 삭제해야 안전합니다.

AWS 비용 절감의 시작은 무조건 리소스를 줄이는 것이 아니라, 비효율적인 아키텍처를 개선하는 것에서 출발해야 합니다. 오늘 당장 여러분의 VPC에 불필요하게 떠 있는 NAT Gateway가 없는지 확인해보고, 월 4만원의 숨겨진 고정비를 영원히 삭제하시길 바랍니다.

추가 참고 이미지
#AWS비용절감 #NATGateway #VPCEndpoint #FinOps #클라우드아키텍처 #Graviton2

댓글 없음:

댓글 쓰기

AWS 요금폭탄 방지: 24시간 0원 서버 자동화 아키텍처

AWS 요금폭탄 방지: 24시간 0원 서버 자동화 아키텍처 여러분, AWS 인스턴스만 끄면 요금이 0원이라고 알고 계셨나요? 연결된 스토리지, 고정 IP가 바로 요금 폭탄의 숨겨진 주범입니다. 예산 초과 시 인스턴스를 자동 종료...