AWS 04-2 밖에서 들어오는 길 — Route 53·CloudFront·Global Accelerator·ELB·API Gateway
고친 사람 github-actions[bot]
S3 버킷에 올린 이미지를 한국 사용자에게 한 달 1 TB 내려주면 서울 기준 약 $120 이 나갑니다. 같은 버킷 앞에 서비스 하나를 끼우면 같은 1 TB 가 35센트가 됩니다. 버킷도 파일도 그대로인데 무엇이 달라졌을까요.
답은 요청이 들어오는 길에 있습니다. 사용자가 주소창에 example.com 을 치면 요청은 몇 단계를 거쳐 서버에 닿습니다. 먼저 도메인 이름을 IP 주소로 바꾸고(Route 53), 가까운 곳에 사본이 있으면 거기서 바로 받고(CloudFront), 없으면 서버 여러 대 가운데 하나로 나눠 보내거나(ELB) API 전용 앞단을 거칩니다(API Gateway). 캐시 없이 AWS 전용망으로 길만 빌려주는 Global Accelerator 도 있습니다. 이 편은 한 요청을 따라가며 다섯이 맡는 일과 값을 봅니다.
요금은 전부 2026-09-24 기준입니다. 리전이 있는 서비스는 서울(ap-northeast-2), CloudFront 는 한국이 속한 요금 지역 기준입니다. 서버가 도는 VPC(내 계정 안의 가상 네트워크) 안쪽 이야기는 04-1편(내 망 안쪽)이 맡습니다.
지도
flowchart TD
U["사용자 브라우저·앱"] -- "① example.com 은 어디?" --> R53["Route 53<br/>이름을 IP 로"]
U -- "② HTTP 요청" --> CF["CloudFront 엣지<br/>사본 있으면 바로 응답"]
CF -- "정적 파일, 사본 없음" --> S3["S3 버킷"]
CF -- "동적 요청" --> ENT{"앞단"}
ENT -- "서버 백엔드" --> ALB["ALB"]
ENT -- "API 관리·Lambda" --> APIGW["API Gateway"]
ALB --> SRV["EC2·컨테이너·Lambda"]
APIGW --> SRV
U -. "게임·IoT 같은 TCP/UDP" .-> GA["Global Accelerator<br/>고정 IP 둘"]
GA --> NLB["NLB"] --> SRV
실선이 흔한 웹 서비스의 길이고, 점선은 HTTP 가 아니거나 고정 IP 가 꼭 필요한 서비스의 길입니다. 모든 요청이 다섯을 다 지나지는 않습니다. 작은 서비스는 Route 53 → ALB → 서버 셋만으로도 돌아갑니다.
1. Route 53 — 이름을 주소로 바꾼다
DNS(Domain Name System)는 example.com 같은 이름을 IP 주소로 바꿔 주는 인터넷의 전화번호부입니다. 브라우저는 이름만으로는 접속하지 못하므로 먼저 DNS 에 주소를 묻고, Route 53 은 이 물음에 답하는 AWS 의 DNS 서비스입니다. 도메인 하나의 답을 모아 둔 단위를 호스팅 영역(hosted zone)이라 하고, 그 안에 「api.example.com 은 이 IP」 같은 레코드를 한 줄씩 적습니다. 답에는 TTL(Time To Live, 다른 DNS 서버가 이 답을 캐시해 둘 초)이 붙어서, 같은 이름을 묻는 사람이 많아도 Route 53 까지 오는 질문은 그보다 적습니다.
AWS 자원을 가리킬 때는 별칭 레코드(alias record)를 씁니다. 로드 밸런서·CloudFront 처럼 IP 가 바뀌는 자원을 이름으로 가리키면 Route 53 이 그때그때의 IP 로 답합니다. 보통의 이름 연결인 CNAME 과 달리 example.com 같은 루트 도메인(zone apex)에도 만들 수 있고, AWS 자원을 가리키는 별칭 레코드의 조회는 요금이 없습니다(Choosing between alias and non-alias records). 대상은 ELB·CloudFront·API Gateway·Global Accelerator·정적 웹사이트로 설정한 S3 버킷 등입니다.
같은 이름에 답을 여럿 두고 무엇을 돌려줄지 고르는 방법을 라우팅 정책이라 합니다. 자주 쓰는 다섯은 이렇습니다(Choosing a routing policy).
| 정책 | 답을 고르는 기준 | 흔한 쓰임 |
|---|---|---|
| 단순 | 레코드 하나를 그대로 | 서버 하나, 로드 밸런서 하나 |
| 가중치 기반 | 정한 비율대로 | 새 버전에 10% 만 보내 보기 |
| 지연 시간 | 사용자에게 지연이 가장 짧은 리전 | 서울·도쿄 두 리전 운영 |
| 장애 조치 | 주 대상이 죽으면 예비 대상 | 평소엔 A, A 가 죽으면 B |
| 지리적 위치 | 사용자가 있는 나라·대륙 | 국가별 다른 서버·언어 |
이 밖에 자원이 있는 위치를 기준으로 가까운 쪽을 고르는 지리 근접, 사용자 IP 대역을 보고 고르는 IP 기반, 건강한 레코드를 최대 8개까지 무작위로 돌려주는 다중 값 응답이 있습니다. 장애 조치가 「죽었다」를 아는 것은 상태 확인(health check) 덕분입니다. Route 53 이 대상의 주소를 주기적으로 찔러 보고, 실패하면 그 레코드를 답에서 뺍니다.
요금은 호스팅 영역 월정액에 조회 수를 더하는데, 조회 단가가 정책마다 다릅니다.
Route 53 · 리전 없음(전역) · 2026-09-24
호스팅 영역 월 $0.50 (처음 25개), 이후 $0.10
표준 조회 100만 건당 $0.40 (월 10억 건까지)
지연 시간 조회 100만 건당 $0.60
지리적 위치 조회 100만 건당 $0.70
IP 기반 조회 100만 건당 $0.80
AWS 자원 별칭 조회 무료
상태 확인 AWS 대상 50개까지 무료, 이후 월 $0.50
AWS 밖 대상 월 $0.75 + 선택 기능별 추가
- 만든 뒤 12시간 안에 지운 호스팅 영역은 요금이 없습니다(Amazon Route 53 pricing)
도메인 하나에 한 달 1,000만 번 표준 조회가 와도 $0.50 + $4.00 = $4.50 이고, 대상이 ALB·CloudFront 같은 AWS 자원이면 별칭 레코드라 조회료마저 빠집니다. 값이 싼 대신 Route 53 은 「어디로 가라」고 알려 줄 뿐 트래픽을 받지 않으니, 답을 바꿔도 사용자에게 퍼지는 속도는 TTL 에 묶입니다.
| 이럴 때 맞다 | 이럴 때 안 맞다 | 대신 치르는 것 |
|---|---|---|
| 서울·도쿄 두 리전 가운데 가까운 쪽으로 보낸다(지연 시간) | 요청 경로·헤더를 보고 서비스를 나눠야 한다(→ ALB) | 대상이 AWS 밖이면 조회 100만 건당 $0.60, AWS 자원이면 별칭이라 무료 |
| 주 서버가 죽으면 예비 서버로 넘긴다(장애 조치 + 상태 확인) | DNS 캐시가 풀릴 때까지 못 기다린다(→ Global Accelerator) | 넘어가는 것이 TTL 만큼 늦게 퍼진다 |
2. CloudFront — 가까운 곳에 사본을 둔다
서울 리전 서버에 있는 파일을 부산 사용자가 받든 싱가포르 사용자가 받든, 요청은 매번 서울까지 옵니다. CDN(Content Delivery Network)은 사용자 가까이 흩어 둔 서버에 사본을 두고 거기서 답하는 서비스이고, CloudFront 는 AWS 의 CDN 입니다. 사용자 가까이 있는 이 서버들을 엣지 로케이션이라 부르며 전 세계에 750곳이 넘습니다. 사본의 출처인 S3 버킷이나 ALB 는 오리진(origin, 원본 서버)이라 합니다.
요청이 엣지에 오면 사본이 있나부터 봅니다. 있으면(캐시 적중) 엣지가 바로 답하고 오리진은 요청이 온 줄도 모릅니다. 없으면 오리진에서 가져와 답하면서 사본을 남깁니다. 적중이 90% 면 오리진이 받는 요청은 10분의 1이 됩니다. 사본은 정한 시간이 지나야 만료되므로, 파일을 바꿨는데 바로 새것을 내보내야 하면 캐시 무효화(invalidation)로 엣지의 사본을 지우라고 명령합니다.
로그인·주문 같은 동적 요청도 CloudFront 를 거치게 할 수 있고, 그때는 엣지가 사본 없이 오리진으로 넘깁니다. 다만 캐시할 응답이 거의 없는 API 는 CloudFront 를 끼워도 오리진 부담이 줄지 않고 요청료만 붙습니다. 정적 파일과 한 도메인으로 묶거나 정액 요금제의 WAF 를 쓸 것이 아니면, API 는 ALB·API Gateway 가 바로 받습니다.
돈이 줄어드는 이유는 전송 요금에 있습니다. AWS 오리진(S3·EC2·ELB 등)에서 CloudFront 로 가는 전송은 무료이고, 사용자에게 나가는 전송은 CloudFront 단가로 받습니다(Amazon CloudFront pay-as-you-go pricing). 게다가 매달 다시 채워지는 무료 한도가 큽니다.
CloudFront 종량제 · 한국이 속한 아시아 지역 · 2026-09-24
(홍콩·인도네시아·필리핀·싱가포르·한국·대만·태국·말레이시아·베트남)
월 무료 한도 전송 1 TB + 요청 1,000만 건
사용자로 나가는 전송 GB당 $0.120 (다음 9 TB), $0.100 (다음 40 TB) …
HTTPS 요청 1만 건당 $0.012 (HTTP 는 $0.009)
오리진으로 올리는 전송 GB당 $0.060 (업로드·POST 본문)
AWS 오리진 → CloudFront 무료
캐시 무효화 월 1,000경로까지 무료
비교할 S3 값은 S3 편(02-1)과 같습니다. 서울에서 인터넷으로 나가는 전송은 모든 리전·서비스를 합친 계정 전체로 월 100 GB 무료, 이후 첫 10 TB 까지 GB당 $0.126 이고, GET 요청은 1,000건당 $0.00035 입니다. 파일이 평균 약 100 KB 라 1 TB 가 요청 약 1,000만 건이라고 어림하고, 캐시 적중 90%, 계정에 다른 사용이 없을 때로 두 규모를 셉니다. 정액 요금제는 이 셈 아래에서 풉니다.
정적 파일 · 서울 S3 · 한국 사용자 · 한 달
[1 TB · 요청 1,000만 건]
S3 직접 GET 1,000만 × $0.00035/1,000 = $3.50
전송 (1,024 − 100) GB × $0.126 = $116.42
합계 = $119.92
CloudFront 전송 1,024 GB, 무료 한도 안 = $0
요청 1,000만 건, 무료 한도 안 = $0
S3 GET 100만(적중 못 한 10%) = $0.35
합계 = $0.35
[10 TB · 요청 1억 건]
S3 직접 GET 1억 × $0.00035/1,000 = $35.00
전송 (10,240 − 100) GB × $0.126 = $1,277.64
합계 = $1,312.64
CloudFront 전송 (10,240 − 1,024) GB × $0.120 = $1,105.92
요청 (1억 − 1,000만) × $0.012/1만 = $108.00
S3 GET 1,000만 = $3.50
합계 = $1,217.42
정액 Business CloudFront 몫 $1,213.92 대신 = $200.00
+ S3 GET = $3.50
10 TB 에서 CloudFront 는 전송비를 $171.72 덜어 주지만, 요청료가 S3 GET 보다 비싸 그 절반쯤을 도로 먹고 $95 남짓만 쌉니다. 크게 깎는 것은 정액 요금제(flat-rate pricing plan)입니다. 배포 하나(루트 도메인 하나)에 월 정액을 내면 CloudFront 와 WAF(웹 방화벽)·DDoS(대량 트래픽으로 서비스를 마비시키는 공격) 방어·TLS 인증서를 묶어 주고, 한도를 넘어도 초과 요금이 없습니다. Route 53 호스팅 영역도 요금제에 붙이면 그 요금이 들어가고, Pro 이상은 접속 로그의 CloudWatch 수집이 들어갑니다(로그 저장·조회 비용은 따로).
등급은 전송량이 아니라 요청 수로 가릅니다. 전송은 Pro·Business 모두 50 TB 까지이고, 요청이 월 1,000만 건 이하면 Pro $15, 1억 2,500만 건까지면 Business $200 입니다. 평균 100 KB 파일이면 1 TB 를 조금만 넘어도 요청이 1,000만 건을 넘어 Business 가 되지만, 종량제는 요청료까지 치면 약 2.5 TB 에서 이미 $200 을 넘습니다. 파일이 평균 2 MB 라면 10 TB 도 요청 약 500만 건이라 Pro $15 에 듭니다. 다만 한도를 계속 크게 넘기면 더 먼 엣지에서 내주는 식으로 전송이 조정될 수 있고, 실시간 로그처럼 지원하지 않는 기능을 쓰는 배포는 가입할 수 없습니다(CloudFront flat-rate pricing plans).
값은 이렇게 내려가도, 사본을 두는 이상 사본이 낡을 수 있다는 부담은 남습니다.
| 이럴 때 맞다 | 이럴 때 안 맞다 | 대신 치르는 것 |
|---|---|---|
| 이미지·JS 처럼 같은 파일을 여러 사람이 받는다 | 캐시할 응답이 거의 없는 API 만 받는다 | 파일을 바꿔도 사본이 만료될 때까지 옛것이 나가므로 이름에 버전을 붙이거나 무효화한다 |
| 한 달에 1 TB 넘게 내려보낸다 | 업로드가 트래픽의 대부분이다 | 오리진으로 올리는 전송은 GB당 $0.060 이 붙는다 |
3. Global Accelerator — 캐시 없이 길만 빌린다
CloudFront 는 HTTP 를 알아듣고 사본을 두는 서비스라서, 온라인 게임의 UDP 패킷이나 TCP 위의 MQTT(IoT 기기가 쓰는 가벼운 메시지 프로토콜)에는 쓸 데가 없습니다. 또 CloudFront·ALB 의 IP 는 계속 바뀌므로, 거래처 방화벽에 「이 IP 만 허용」을 걸어야 하는 서비스는 곤란합니다.
이 둘만이라면 뒤 4절의 NLB(TCP·UDP 를 받고 가용 영역마다 고정 IP 를 주는 로드 밸런서)로도 풀립니다. 사용자가 국내에 몰려 있고 리전이 하나면 NLB 로 끝납니다. Global Accelerator 가 필요한 것은 사용자가 해외에 흩어져 있거나 리전을 여럿 둘 때입니다.
가속기(accelerator)를 만들면 고정 IPv4 주소 둘을 받습니다. 이 주소는 애니캐스트(anycast)로 알려집니다. 같은 IP 를 전 세계 엣지가 동시에 알리고, 사용자의 패킷은 인터넷에서 가장 가까운 엣지로 들어가는 방식입니다. 엣지에 들어온 패킷은 공용 인터넷 대신 AWS 전용 글로벌 네트워크를 타고 리전의 ALB·NLB·EC2·탄력적 IP(내 계정에 묶어 두는 고정 공인 IPv4)로 갑니다. 대상이 여러 리전에 있으면 상태를 보고 건강한 가장 가까운 리전으로 보내며, 장애 때 DNS 캐시를 기다리지 않고 바로 옮깁니다(What is AWS Global Accelerator?).
요금은 가속기를 켜 둔 시간과, 보통 전송 요금 위에 얹히는 전송 프리미엄 둘입니다.
Global Accelerator · 2026-09-24
고정 요금 가속기 하나 시간당 $0.025 → 월 $18.25
공인 IPv4 두 개 $0.005 × 2 × 730 → 월 $7.30
전송 프리미엄(DT-Premium)
한국 사용자 ↔ 서울 리전 GB당 $0.043
+ 보통의 EC2 인터넷 전송 요금은 따로
- 전송 프리미엄은 시간마다 들어오는 방향과 나가는 방향 가운데 많은 한 방향에만 붙습니다(AWS Global Accelerator pricing)
한국 사용자에게 서울 리전에서 한 달 1 TB 를 내주면 고정 $25.55 에 프리미엄 1,024 × $0.043 = $44.03 이 더해져, 보통 전송 요금 위에 약 $70 을 얹습니다. 사본을 두지 않으니 전송비를 줄여 주지 않고 오히려 늘립니다.
| 이럴 때 맞다 | 이럴 때 안 맞다 | 대신 치르는 것 |
|---|---|---|
| 해외에 흩어진 사용자가 붙는 게임(UDP)·IoT(MQTT) 서버 | 사용자가 국내에 몰려 있다(→ NLB 만으로 UDP·고정 IP) | 고정비 월 $25.55 + GB당 전송 프리미엄 |
| 리전 여럿을 두고 DNS 캐시 없이 곧바로 장애 조치 | 리전 하나로 충분하다(→ Route 53 장애 조치) | 리전마다 서버와 로드 밸런서를 따로 둔다 |
| HTTP 서비스인데 고정 IP 가 필요하다 | 정적 파일·웹 페이지가 대부분이다(→ CloudFront) | 캐시가 없어 전송비가 줄지 않는다 |
4. ELB — 서버 여러 대 앞에서 나눠 준다
로드 밸런서는 서버 여러 대 앞에 서서 들어오는 요청을 나눠 주는 장치이고, ELB(Elastic Load Balancing)는 AWS 의 로드 밸런서 서비스입니다. 요청을 받아 건강한 서버에 나눠 보내고 트래픽에 따라 스스로 늘어납니다. 로드 밸런서는 리스너(정한 포트·프로토콜로 요청을 기다리는 설정)로 받아서 대상 그룹(요청을 받을 서버·컨테이너·IP 묶음)으로 보내고, 대상 그룹마다 상태 확인을 돌려 죽은 대상을 뺍니다.
종류는 요청을 얼마나 깊이 읽느냐로 셋입니다. 네트워크 통신을 일곱 계층으로 나눈 OSI 모델에서 계층 7 은 HTTP 요청의 경로·헤더까지 읽는 수준, 계층 4 는 TCP·UDP 연결과 포트까지만 보는 수준, 계층 3 은 IP 패킷 수준입니다.
- ALB(Application Load Balancer)는 계층 7 이라
/api는 A 서비스,/admin은 B 서비스처럼 경로·호스트·헤더로 나눕니다. HTTP·HTTPS·WebSocket 과 gRPC(구글이 만든 원격 호출 방식, HTTP/2 위에서 돈다)를 받고, Lambda 함수를 대상으로 두거나 요청을 넘기기 전에 사용자 로그인을 확인할 수 있습니다 - NLB(Network Load Balancer)는 계층 4 라 내용을 안 읽는 대신 TCP·UDP·TLS 와 QUIC(UDP 위에서 도는 전송 프로토콜, HTTP/3 가 쓴다)를 받고 초당 수백만 요청을 감당합니다. 가용 영역마다 고정 IP 를 쓰고 탄력적 IP 도 붙일 수 있습니다
- GWLB(Gateway Load Balancer)는 계층 3 에서 모든 IP 패킷을 방화벽·침입 탐지 같은 가상 보안 장비에 나눠 보내고 돌려받는 전용 장치입니다(What is a Gateway Load Balancer?)
요금은 셋 다 시간 요금에 용량 단위 요금을 더합니다. 용량 단위는 한 시간 동안 새 연결 수·동시 연결 수·처리 바이트 같은 차원 가운데 가장 많이 쓴 하나로 세고, ALB 의 것은 LCU, NLB 는 NLCU, GWLB 는 GLCU 라 부릅니다(Elastic Load Balancing pricing). 셋을 나란히 놓으면 이렇습니다.
| ALB | NLB | GWLB | |
|---|---|---|---|
| 계층 | 7 (HTTP 내용) | 4 (TCP·UDP 연결) | 3 (IP 패킷) |
| 받는 것 | HTTP·HTTPS·gRPC·WebSocket | TCP·UDP·TLS·QUIC | 모든 IP 패킷 |
| 고정 IP | 없음 | 가용 영역마다 하나, 탄력적 IP 가능 | 해당 없음 |
| 시간 요금(서울) | $0.0225 | $0.0225 | $0.0125 |
| 용량 단위(서울) | LCU 시간당 $0.008 | NLCU 시간당 $0.006 | GLCU 시간당 $0.004 |
- 인터넷용 ALB·NLB 는 걸친 가용 영역마다 공인 IPv4 를 최소 하나씩 쓰고(규모가 커지면 늘 수 있음), 주소마다 시간당 $0.005 가 따로 붙습니다. 두 영역이면 월 $7.30 부터입니다(Amazon VPC pricing)
- GWLB 는 트래픽을 넘겨받는 GWLB 엔드포인트를 거쳐 쓰고, 그 엔드포인트도 서울에서 시간당 $0.013 + GB당 $0.0035 를 받습니다
ALB 하나를 두 영역에 한 달 켜 두면 시간 요금 $16.43 + 공인 IPv4 $7.30 = $23.73 부터이고, 여기에 LCU 가 붙습니다. 요청이 하나도 없어도 나가는 고정비라서, 서버가 한 대뿐이면 로드 밸런서 없이 Route 53 이 그 서버의 탄력적 IP 를 바로 가리켜도 됩니다.
| 이럴 때 맞다 | 이럴 때 안 맞다 | 대신 치르는 것 |
|---|---|---|
| ALB — 웹·API 를 서버·컨테이너 여러 대로 받고 경로별로 서비스를 나눈다 | 서버가 한 대뿐이다(→ Route 53 이 탄력적 IP 를 바로 가리킨다) | 요청이 0 이어도 월 $23.73 부터 |
| NLB — TCP·UDP 를 받거나 고정 IP 가 필요하다 | 경로·헤더로 나눠야 한다(→ ALB) | 요청 내용을 못 보니 HTTP 기능이 없다 |
| GWLB — 서드파티 방화벽 장비를 트래픽 길목에 여러 대 끼운다 | 보안 장비가 없는 보통의 웹 서비스 | 라우팅 테이블과 엔드포인트를 짜야 하고 엔드포인트 요금이 붙는다 |
옛 세대인 Classic Load Balancer 도 아직 돌지만, AWS 는 새로 만들 때 ALB 나 NLB 를 권합니다.
5. API Gateway — API 전용 앞단
ALB 는 요청을 나눠 줄 뿐, 「이 API 키로는 초당 10번까지」 같은 API 관리는 하지 않습니다. API Gateway 는 API 앞에 세우는 관리형 앞단으로, 인증·요청 제한·도메인 연결을 맡고 뒤로는 Lambda·HTTP 서버·AWS 서비스를 부릅니다. 서버를 안 두고 Lambda 만으로 API 를 만들 때 가장 흔한 앞단입니다.
종류는 셋입니다. REST API 는 기능이 가장 많은 종류로 API 키와 사용량 계획(클라이언트별 한도), 요청 검증, 응답 캐시, WAF 연동, VPC 안에서만 부르는 사설 API 를 갖습니다. HTTP API 는 그 기능을 덜어 내고 값을 낮춘 종류로, JWT(서명을 붙인 로그인 토큰) 검증을 기본으로 갖습니다. 둘 다 IAM(AWS 의 권한 체계)과 Lambda 인증자(요청을 들여보낼지 판단하는 Lambda 함수)를 쓸 수 있고, REST API 는 AWS 의 사용자 로그인 서비스 Cognito 를 직접 붙입니다. API 키·클라이언트별 요청 제한·요청 검증·WAF·사설 엔드포인트 가운데 하나라도 필요하면 REST API 를, 아니면 HTTP API 를 고릅니다(Choose between REST APIs and HTTP APIs). WebSocket API 는 클라이언트와 연결을 유지하고 양쪽이 메시지를 주고받는 채팅·실시간 알림용입니다.
REST 와 HTTP 의 차이를 값과 기능으로 나란히 놓으면 이렇습니다.
| REST API | HTTP API | |
|---|---|---|
| 요금(서울) | 100만 건당 $3.50 (월 3억 3,300만 건까지) | 100만 건당 $1.23 (월 3억 건까지) |
| 인증 | IAM · Cognito · Lambda 인증자 | IAM · JWT(Cognito 포함) · Lambda 인증자 |
| API 키·클라이언트별 한도 | 있음 | 없음 |
| 응답 캐시·요청 검증·WAF | 있음 | 없음 |
| 사설 API(VPC 안에서만) | 있음 | 없음 |
요청료 말고 따로 붙는 것도 있습니다(Amazon API Gateway pricing).
API Gateway 추가 요금 · 서울 · 2026-09-24
REST 응답 캐시 0.5 GB 시간당 $0.02 (월 $14.60) 부터 크기별
WebSocket 메시지 100만 건당 $1.14 (32 KB 단위로 셈)
WebSocket 연결 시간 100만 분당 $0.285
응답 전송 EC2 인터넷 전송 요금으로 따로
- 캐시는 뒤쪽 호출을 줄여 줄 뿐, API Gateway 요청료는 캐시에 적중한 요청에도 그대로 붙습니다
- WebSocket 인증은 IAM 과 Lambda 인증자로 합니다(Control and manage access to WebSocket APIs). 동시 접속 1,000명이 한 달 내내 붙어 있으면 연결 시간만 4,380만 분 × $0.285/100만 = $12.48 입니다
한도도 봐 둡니다. 계정·리전마다 세 종류를 합쳐 기본 초당 10,000건(순간 5,000건 추가)이고 늘릴 수 있습니다. 요청 본문은 10 MB 까지, 뒤쪽 호출을 기다리는 시간은 HTTP API 30초, REST API 기본 29초입니다(Amazon API Gateway quotas · HTTP API quotas).
서버 백엔드라면 ALB 가 기본이다
EC2·컨테이너로 API 를 돌린다면 앞단의 기본은 ALB 입니다. 서버가 여러 대면 어차피 나눠 줄 로드 밸런서가 필요하고, 요청 수로 값이 오르지 않습니다. API 키나 클라이언트별 한도가 필요할 때만 REST API 를 ALB 앞에 겹칩니다. REST API 는 사설 통합(VPC 링크)으로 VPC 안의 ALB 를 뒤쪽으로 부를 수 있습니다.
값 차이를 한 달 1억 요청(평균 초당 약 38건), 응답 평균 10 KB 인 API 로 셉니다. 뒤는 EC2·컨테이너 서버이고, 서버 값과 인터넷 전송은 양쪽이 같아 앞단 값만 비교합니다. ALB 의 LCU 하나는 초당 새 연결 25개, 분당 동시 연결 3,000개, 시간당 처리 1 GB(대상이 EC2·컨테이너일 때), 초당 규칙 평가 1,000번 가운데 가장 많이 쓴 차원으로 셉니다.
앞단만 · 뒤는 EC2·컨테이너 · 서울 · 한 달(730시간, 2,628,000초)
HTTP API 1억 × $1.23/100만 = $123.00
REST API 1억 × $3.50/100만 = $350.00
ALB 시간 $0.0225 × 730 = $16.43
공인 IPv4 2개 $0.005 × 2 × 730 = $7.30
LCU 새 연결 38.05/초 ÷ 25 = 1.52
처리량 1,000 GB ÷ 730 = 1.37 → 큰 차원 1.52
1.52 × 730 × $0.008 = $8.88
합계 = $32.61
- 요청마다 새 연결을 맺는다고 친 값입니다. 연결을 다시 쓰면 새 연결 차원이 줄어 처리량(1.37)이 기준이 되고 ALB 가 더 내려갑니다
- 뒤가 Lambda 면 ALB 의 처리량 기준이 시간당 0.4 GB 라 LCU 가 3.42 로 올라, 합계 약 $43.7, 교차점은 월 약 2,300만 요청이 됩니다
월 1억 요청에서 ALB 는 HTTP API 의 약 4분의 1 값입니다. ALB 의 고정비 $23.73 을 100만 건당 차이($1.23 − LCU $0.089)로 나누면, 월 약 2,080만 요청(평균 초당 약 7.9건) 을 넘는 곳부터 ALB 가 HTTP API 보다 쌉니다. 그 아래에서는 고정비가 없는 API Gateway 가 싸고, JWT 인증(HTTP API)이나 API 키·요청 제한(REST API)을 직접 만들지 않아도 되는 값을 요청마다 치르는 셈입니다.
| 이럴 때 맞다 | 이럴 때 안 맞다 | 대신 치르는 것 |
|---|---|---|
| 요청이 적거나 몰렸다 끊긴다(월 약 2,080만 건 아래) | 서버 백엔드로 그보다 많이 고르게 받는다(→ ALB) | 요청마다 100만 건당 $1.23(HTTP)·$3.50(REST) 이 쌓인다 |
| 외부에 API 를 팔아 API 키·클라이언트별 한도가 필요하다(REST) | 인증만 있으면 된다(→ HTTP API 의 JWT) | REST 는 HTTP API 의 세 배 가까운 값 |
| 짧은 요청·응답, 연결을 유지하는 실시간 메시지(WebSocket) | 한 요청이 30초 넘게 걸리거나 본문이 10 MB 를 넘는다 | 뒤쪽 호출 30초(REST 기본 29초)·본문 10 MB 한도에 묶인다 |
이럴 땐 무엇
| 상황 | 서비스 | 이유 |
|---|---|---|
| 내 도메인을 AWS 자원에 연결한다 | Route 53 별칭 레코드 | 루트 도메인에도 걸리고 조회료가 없다 |
| 두 리전을 두고 가까운 리전으로 보낸다 | Route 53 지연 시간 라우팅 + 상태 확인 | 사용자마다 지연이 짧은 리전을 답하고, 죽은 리전은 뺀다 |
| 이미지·정적 파일을 한국 사용자에게 내준다 | S3 + CloudFront | 월 1 TB 면 무료 한도 안이라 S3 직접보다 훨씬 싸다 |
| 정적 전송이 월 1 TB 를 넘는다 | CloudFront 정액 요금제부터 견준다 | 요청 1,000만 건 이하 Pro $15, 1억 2,500만 건까지 Business $200 |
| 해외 사용자가 붙는 게임(UDP)·여러 리전 장애 조치 | Global Accelerator + NLB | 고정 애니캐스트 IP, AWS 전용망 |
| 국내 사용자의 TCP·UDP, 고정 IP | NLB | 가용 영역마다 고정 IP |
| EC2·컨테이너로 돌리는 웹·API | ALB | 계층 7 규칙, 요청 수로 값이 안 오른다 |
| Lambda 로 만든 작은 API | API Gateway HTTP API | 고정비 없음, JWT 인증 기본 |
| 외부에 파는 API, 키와 한도가 필요하다 | API Gateway REST API (서버 백엔드면 ALB 앞에) | API 키·사용량 계획 |
자주 붙는 서비스는 ACM(TLS 인증서) · WAF(웹 방화벽) · Shield(DDoS 방어) · S3(정적 파일 오리진) · Lambda · ECS(ALB 뒤의 컨테이너) · CloudWatch(로그·지표)이고, 엮는 방식은 조합 편(20 웹 서비스 한 벌 · 21 정적 사이트 · 22 서버리스 API)에서 끝까지 따라갑니다.
한 장 요약
요청은 Route 53 에서 IP 를 받고, CloudFront 엣지에 사본이 있으면 거기서 끝나고, 없으면 ALB 나 API Gateway 를 지나 서버에 닿습니다. 돈을 가장 크게 가르는 것은 전송량이라, 내려보내는 파일이 있으면 CloudFront 부터 두고 1 TB 를 넘으면 정액 요금제를 견줍니다. 서버 백엔드의 앞단은 ALB 가 기본이고, API Gateway 는 요청이 적은 Lambda API 나 API 키가 필요한 때 씁니다. Global Accelerator 는 해외 사용자와 여러 리전이 얽힐 때만 NLB 위에 얹습니다.
관련 항목
요청이 들어오는 길에 서는 AWS 서비스
Amazon Route 53 · Amazon CloudFront · AWS Global Accelerator · Elastic Load Balancing · Amazon API Gateway
로드 밸런서의 종류
Application Load Balancer · Network Load Balancer · Gateway Load Balancer · Classic Load Balancer · 로드 밸런서
Route 53 을 이루는 개념
DNS · 호스팅 영역 · DNS 레코드 · 별칭 레코드 · CNAME · TTL · 라우팅 정책 · 헬스 체크
CloudFront 를 이루는 개념
CDN · 엣지 로케이션 · 오리진 · 캐시 적중률 · 캐시 무효화 · CloudFront 정액 요금제
Global Accelerator 가 기대는 네트워크 개념
애니캐스트 · 고정 IP · 탄력적 IP · UDP · MQTT
ELB 요금과 구성을 이루는 단위
LCU · 리스너 · 대상 그룹 · 가용 영역 · 공인 IPv4 요금 · OSI 7계층 · QUIC · gRPC
API Gateway 의 종류와 기능
REST API · HTTP API · WebSocket · JWT · API 키 · 요청 제한 · VPC 링크
이 앞단들 뒤에서 요청을 받는 것
AWS Lambda · Amazon S3 · EC2 · ECS · Fargate
이 앞단들과 함께 서는 보안 장치
AWS WAF · AWS Shield · ACM · TLS · DDoS