S4 NAT vs fck-nat: NAT Gateway 대체를 위한 솔직한 비교
이 페이지를 찾았다면 이미 문제를 알고 있을 것입니다. 관리형 NAT Gateway는 AZ당 대략 월 $32를 청구하고, 처리하는 GB마다 $0.045를 추가로 청구합니다. egress-heavy workload에서는 데이터 처리 항목이 빠르게 다른 비용을 압도합니다. NAT instance는 이 문제를 해결하며, fck-nat는 NAT instance를 다시 신뢰할 만한 선택지로 만든 오픈소스 프로젝트입니다.
먼저 vendor 페이지에서 좀처럼 크게 말하지 않는 부분부터 시작하겠습니다.
그냥 fck-nat를 써야 하는 경우
fck-nat는 무료이고, 활발히 유지보수되고 있으며(2.2k+ GitHub stars), Amazon Linux 2023 기반의 바로 사용할 수 있는 arm64/x86 AMI를 제공하고, 탄탄한 CDK 및 Terraform module도 갖추고 있습니다. t4g.nano에서 실행하면 약 월 $3 수준이며, 여러 Gbit/s의 burst NAT traffic을 처리할 수 있습니다.
다음과 같은 경우에는 fck-nat를 사용하세요.
- 환경이 dev, staging 또는 개인용입니다. 몇 분의 egress downtime이 사고가 아니라 불편함에 가깝다면 무료 옵션이 이깁니다.
- 비용이 유일한 기준입니다. S4 NAT는 instance 비용 위에 시간당 소프트웨어 요금을 부과합니다. 가격만으로는 절대 무료를 이길 수 없고, 우리도 다르게 포장하지 않겠습니다.
- community support에 익숙합니다. fck-nat의 maintainer와 커뮤니티는 응답성이 좋으며, 표준적인 구성에서는 대개 그것으로 충분합니다.
S4 NAT가 비용을 정당화하는 지점
S4 NAT는 AWS Marketplace를 통해 판매되는 상용 NAT instance입니다. fck-nat와 같은 아이디어(표준 EC2, kernel nftables, per-GB fee 없음)이지만, 구현 방식과 보장이 다릅니다. 중요한 차이는 다음과 같습니다.
숫자로 설명할 수 있는 failover. fck-nat의 high-availability 방식은 Auto Scaling Group이 장애가 난 instance를 교체하는 구조입니다. 복구는 보통 몇 분 단위입니다. S4 NAT는 heartbeat가 있는 active/standby pair로 동작하며, standby가 ec2:ReplaceRoute를 통해 route table을 다시 씁니다. 일반적으로 under 10 seconds 안에 완료됩니다. 이 수치는 릴리스 전반에 걸친 170+회의 연속 실제 EC2 failover drill에서 검증되었고, 방법론과 숫자는 repo의 validation report에 공개되어 있습니다.
failover 중에도 안정적인 egress IP. per-instance addressing(fck-nat의 모델이자 S4 NAT의 기본값)을 사용하면 NAT가 failover될 때 egress public IP가 바뀝니다. 파트너가 해당 IP를 allowlist에 등록해 둔 경우 문제가 됩니다. S4 NAT의 선택적 StableEgressIp 모드는 route를 소유한 노드에 shared Elastic IP를 유지합니다. 공개된 drill run에서, 매초 egress IP를 샘플링한 client는 계속 shared IP를 보았고, 최악의 관측 fallback window는 2 seconds였습니다. 또한 fallback은 traffic을 드롭하는 대신 instance 자체의 EIP로 이동합니다.
NAT64 내장. IPv6-only subnet이 IPv4 internet에 접근할 수 있습니다(RFC 6146, integrated translator). fck-nat는 NAT64를 제공하지 않습니다.
pps가 중요할 때 쓰는 XDP fast path. AMI에 포함되어 있으며 기본값은 꺼져 있고, config 한 줄로 활성화할 수 있습니다. network-optimized instance에서 표준 kernel path 대비 대략 2× the packets-per-second per CPU core로 측정되었습니다.
조달과 책임 소재. Marketplace billing은 기존 AWS invoice에 포함됩니다(새 vendor onboarding 불필요). 그리고 반대편에는 support contact와 공개된 validation report를 갖춘 회사가 있습니다. 관련이 있고 약간 불편하지만 현실적인 점도 있습니다. 여러 팀이 이름에 “fck”가 들어간 도구를 security review나 procurement document에 통과시킬 수 없었다고 말했습니다. 당신의 조직이 그런 경우라면 기능 목록은 의미가 없습니다.
나란히 비교
| fck-nat | S4 NAT | |
|---|---|---|
| 가격 | 무료(instance cost만) | 시간당 소프트웨어 요금 + instance |
| 데이터 처리 요금 | 없음 | 없음 |
| Failover | ASG replacement(분) | Active/standby, <10s(170+ drills) |
| failover 중 안정적인 egress IP | 없음 | 선택적 StableEgressIp 모드 |
| NAT64 | 없음 | 예(RFC 6146) |
| XDP fast path | 없음 | 선택 가능, ~2x pps/core 측정 |
| Support | Community | Commercial([email protected]) |
| Procurement | Self-managed OSS | AWS Marketplace, AWS invoice |
5분 판단 기준
- Dev/staging이거나 downtime tolerance가 분 단위라면 → fck-nat. 좋습니다. 쓰세요.
- 파트너가 IP를 allowlist에 등록하는 production egress이고, failover가 분이 아니라 초 단위여야 하거나, IPv6-only subnet을 지원해야 한다면 → S4 NAT.
- 확실하지 않다면 → fck-nat로 시작하고, 첫 번째 “the NAT was down for four minutes” postmortem이나 allowlist rotation ticket이 도착했을 때 다시 검토하세요.
두 제품 모두 egress-heavy workload에서 관리형 NAT Gateway보다 비용을 한 자릿수 규모 이상 줄입니다. 솔직한 차이는 packet path 너머에서 무엇을 사느냐입니다. 측정된 failover 동작, 변하지 않는 egress IP, 그리고 새벽 3시에 책임질 수 있는 상대입니다.
S4 NAT는 AWS Marketplace에서 사용할 수 있습니다. Validation methodology, drill harness, 전체 report는 product repository에 함께 제공됩니다.