๐ AWS CloudFront & Global Accelerator
CDN์ ํตํ ์ฝํ ์ธ ๊ฐ์๊ณผ ๋คํธ์ํฌ ๋ ๋ฒจ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ์์ ํต์ฌ ์๋น์ค
๋ ์๋น์ค ๋ชจ๋ AWS Global Edge Network๋ฅผ ํ์ฉํ์ง๋ง ๋ชฉ์ ๊ณผ ๋์ ๋ฐฉ์์ด ๋ค๋ฆ
๋ชฉ์ฐจ
- CloudFront ๊ฐ์
- CloudFront Origins (์ฝํ ์ธ ์๋ณธ)
- CloudFront vs. S3 Cross-Region Replication
- CloudFront ์บ์ ๋์ (Caching)
- CloudFront Geo Restriction (์ง์ญ ์ ํ)
- CloudFront + S3 ๋ณด์ ์ํคํ ์ฒ (OAC)
- AWS Global Accelerator
- CloudFront vs. Global Accelerator ๋น๊ต
- ์ํ ์์ฃผ ์ถ์ ํฌ์ธํธ ์ด์ ๋ฆฌ
- ์ฐธ๊ณ ์๋ฃ
CloudFront ๊ฐ์
- CDN (Content Delivery Network): ์ฝํ ์ธ ๋ฅผ Edge Location์ ์บ์ํ์ฌ ์ฌ์ฉ์์๊ฒ ๋ฎ์ ์ง์ฐ์๊ฐ์ผ๋ก ์ ๊ณต
- ์ ์ธ๊ณ ์๋ฐฑ ๊ฐ์ **Edge Locations (Points of Presence)**์์ ์ฝํ ์ธ ์บ์
- DDoS ๋ณดํธ: AWS Shield + AWS WAF(Web Application Firewall)์ ํตํฉ
CloudFront Origins (์ฝํ ์ธ ์๋ณธ)
CloudFront๊ฐ ์ฝํ ์ธ ๋ฅผ ๊ฐ์ ธ์ค๋ ์๋ณธ ์๋ฒ๋ ํฌ๊ฒ ์ธ ๊ฐ์ง๋ก ๋๋๋ค.
1. S3 Bucket
- ํ์ผ ๋ฐฐํฌ ๋ฐ Edge Location์ ์บ์
- CloudFront๋ฅผ ํตํ S3 ์ ๋ก๋ (Ingress) ์ง์
- *OAC (Origin Access Control)**๋ก S3 Bucket ๋ณด์ ๊ฐํ
[์ฌ์ฉ์] โ [CloudFront Edge] โ [S3 Bucket] โ OAC๋ก ๋ณดํธ (S3 Public ๋นํ์ฑํ ์ ์ง)TIPS3 Bucket์ CloudFront Origin์ผ๋ก ์ฌ์ฉํ ๋๋ OAC ์ฌ์ฉ. ๊ตฌ์ธ๋ ๋ฐฉ์์ธ OAI(Origin Access Identity)๋ deprecated ์์ .
2. VPC Origin
- VPC Private Subnet์ ํธ์คํ ๋ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ฝํ ์ธ ์ ๊ณต
- ์ธํฐ๋ท์ ๋
ธ์ถํ์ง ์๊ณ Private ๋ฆฌ์์ค์์ ์ง์ ํธ๋ํฝ ์์ :
- Private ALB (Application Load Balancer)
- Private NLB (Network Load Balancer)
- Private EC2 Instances
- ๊ธฐ์กด ๋ฐฉ์(Public Network)์ ๊ฒฝ์ฐ Edge Location์ Public IP๋ฅผ Security Group์ ํ์ฉํด์ผ ํ์ผ๋, VPC Origin ๋ฐฉ์์ ์ด ๋ถํธํจ์ ํด์
[์ฌ์ฉ์] โ โผ[CloudFront Edge] โ (VPC Origin ๋ฐฉ์ โ ์ธํฐ๋ท ๋ฏธ๊ฒฝ์ ) โผ[Private ALB / NLB / EC2] โ ์ธํฐ๋ท์ ๋
ธ์ถ ๋ถํ์3. Custom Origin (HTTP)
- S3 Static Website (S3 ์ ์ ์น์ฌ์ดํธ ์๋ํฌ์ธํธ)
- ๋ชจ๋ Public HTTP Backend (์จํ๋ ๋ฏธ์ค ์๋ฒ, ๋ค๋ฅธ ํด๋ผ์ฐ๋ ๋ฑ)
CloudFront vs. S3 Cross-Region Replication
์ํ์์ ๋ ์๋น์ค๋ฅผ ๋น๊ตํ๋ ๋ฌธ์ ๊ฐ ์์ฃผ ์ถ์ ๋จ.
| ํญ๋ชฉ | CloudFront | S3 Cross-Region Replication |
|---|---|---|
| ๋ฒ์ | ์ ์ธ๊ณ ๋ชจ๋ Edge Location ์๋ ์ ์ฉ | ๋ณต์ ํ ๋ฆฌ์ ์ ๊ฐ๊ฐ ์ง์ ์ค์ |
| ์ ๋ฐ์ดํธ ๋ฐ์ | TTL ๋ง๋ฃ ์ ๋ฐ์ (์บ์ ๊ธฐ๊ฐ ๋์ ์ง์ฐ) | Near real-time ์ ๋ฐ์ดํธ |
| ์ ๊ทผ ๋ฐฉํฅ | ์ฝ๊ธฐ/์ฐ๊ธฐ ๊ฐ๋ฅ (Ingress ์ง์) | ์ฝ๊ธฐ ์ ์ฉ (Read only) |
| ์ ํฉํ ์ฝํ ์ธ | ์ ์ธ๊ณ์์ ์ ๊ทผํ๋ Static ์ฝํ ์ธ (์ด๋ฏธ์ง, ์์ ๋ฑ) | ์์ ๋ฆฌ์ ์์ ๋ฎ์ ์ง์ฐ์๊ฐ์ผ๋ก Dynamic ์ฝํ ์ธ ์ ๊ณต |
| ๋ฐ์ดํฐ ๋ณต์ฌ | ๋ณต์ฌ ์์ (์บ์๋ง) | ์ค์ ๊ฐ์ฒด๋ฅผ ๋ค๋ฅธ ๋ฆฌ์ ์ผ๋ก ๋ณต์ |
CloudFront ์บ์ ๋์ (Caching)
TTL (Time To Live)
- CloudFront๋ TTL ๋์ ์บ์๋ ์ฝํ ์ธ ๋ฅผ ์ฌ์ฉ์์๊ฒ ์ ๊ณต
- TTL ๋์์ Origin์ ์์ฒญํ์ง ์์ โ Origin ๋ถํ ๊ฐ์
- TTL์ Cache-Control, Expires Header๋ก ์ ์ด ๊ฐ๋ฅ
Cache Invalidation (์บ์ ๋ฌดํจํ)
- Origin ์ฝํ ์ธ ๋ฅผ ์ ๋ฐ์ดํธํด๋ TTL์ด ๋ง๋ฃ๋๊ธฐ ์ ๊น์ง CloudFront๋ ๋ณ๊ฒฝ์ ๋ชจ๋ฆ
- CloudFront Invalidation์ ์ง์ ์คํํ๋ฉด TTL ๋ฌด์ํ๊ณ ์บ์ ๊ฐ์ ๊ฐฑ์
Invalidation ๊ฒฝ๋ก ์์:/** โ ์ ์ฒด ์บ์ ๋ฌดํจํ/images/** โ /images/ ํ์ ์ ์ฒด ๋ฌดํจํ/index.html โ ํน์ ํ์ผ๋ง ๋ฌดํจํDeployment Tip์ฝํ ์ธ ํ์ผ๋ช ์ ๋ฒ์ /ํด์๋ฅผ ํฌํจ์ํค๋ฉด (์:
app.v2.js) Invalidation ์์ด๋ ์ ๋ฒ์ ์ฆ์ ์ ๊ณต ๊ฐ๋ฅ.
CloudFront Geo Restriction (์ง์ญ ์ ํ)
- ํน์ ๊ตญ๊ฐ ์ฌ์ฉ์์ ์ฝํ ์ธ ์ ๊ทผ์ ์ ์ด
- ๊ตญ๊ฐ ํ๋ณ: 3rd Party Geo-IP Database ์ฌ์ฉ
| ์ค์ | ์ค๋ช |
|---|---|
| Allowlist | ์น์ธ๋ ๊ตญ๊ฐ ๋ชฉ๋ก์ ์ฌ์ฉ์๋ง ์ ๊ทผ ํ์ฉ |
| Blocklist | ์ฐจ๋จ๋ ๊ตญ๊ฐ ๋ชฉ๋ก์ ์ฌ์ฉ์๋ ์ ๊ทผ ๊ฑฐ๋ถ |
Use Case: ์ ์๊ถ๋ฒ(Copyright Laws)์ ๋ฐ๋ฅธ ์ฝํ ์ธ ๋ฐฐํฌ ์ ํ
CloudFront + S3 ๋ณด์ ์ํคํ ์ฒ (OAC)
CloudFront๋ฅผ ํตํด์๋ง S3์ ์ ๊ทผํ๊ณ ์ง์ ์ ๊ทผ์ ์ฐจ๋จํ๋ ํจํด.
[์ฌ์ฉ์] โ โผ[CloudFront Distribution] โ OAC๋ก ์ธ์ฆ๋ ์์ฒญ๋ง โผ[S3 Bucket] โ Block Public Access ํ์ฑํ ์ ์ง Bucket Policy: CloudFront Service Principal๋ง ํ์ฉBucket Policy ์์ (OAC):
{ "Effect": "Allow", "Principal": { "Service": "cloudfront.amazonaws.com" }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::my-bucket/*", "Condition": { "StringEquals": { "AWS:SourceArn": "arn:aws:cloudfront::ACCOUNT:distribution/DISTRIBUTION_ID" } }}CloudFront Signed URL / Signed Cookies
- Private ์ฝํ ์ธ ์ ๋ํ ์ ๊ทผ ์ ์ด โ S3 Pre-signed URL๊ณผ ๋ค๋ฆ
| ํญ๋ชฉ | CloudFront Signed URL | CloudFront Signed Cookie |
|---|---|---|
| ์ ๊ทผ ๋ฒ์ | ํ์ผ 1๊ฐ์ ๋ํ ์ ๊ทผ | ์ฌ๋ฌ ํ์ผ ๋๋ ์ ์ฒด ๊ฒฝ๋ก ์ ๊ทผ |
| ์ฌ์ฉ ์๋๋ฆฌ์ค | ๊ฐ๋ณ ํ์ผ ๋ค์ด๋ก๋ ๋งํฌ | ํ๋ฆฌ๋ฏธ์ ๋ฉค๋ฒ์ญ ์ ์ฒด ์ฝํ ์ธ ์ ๊ทผ |
S3 Pre-signed URL๊ณผ์ ์ฐจ์ด์ :
| ํญ๋ชฉ | S3 Pre-signed URL | CloudFront Signed URL |
|---|---|---|
| ๊ฒฝ์ ์๋ฒ | S3 ์ง์ ์ ๊ทผ | CloudFront Edge โ S3 |
| ๊ถํ ๋ฒ์ | ์์ฑ์์ IAM ๊ถํ ์์ | CloudFront Key Pair ๊ธฐ๋ฐ |
| ์บ์ ํ์ฉ | โ S3 ์ง์ ์ ๊ทผ | โ CloudFront ์บ์ ํ์ฉ |
| IP ์ ํ | ๋ถ๊ฐ | ๊ฐ๋ฅ (์ ์ฑ ์ ํฌํจ) |
NOTECDN์ ํตํด Private ์ฝํ ์ธ ๋ฅผ ์ ๊ณตํ ๋๋ CloudFront Signed URL/Cookie ์ฌ์ฉ. S3 Pre-signed URL์ S3 ์ง์ ์ ๊ทผ์ด๋ฏ๋ก CDN ์บ์ ํํ ์์.
CloudFront Price Classes
- CloudFront Edge Location์ ์ง์ญ๋ณ๋ก ๋ฐ์ดํฐ ์ ์ก ๋น์ฉ์ด ๋ค๋ฆ
- Price Class๋ก ์ฌ์ฉํ Edge Location ๋ฒ์๋ฅผ ์ ํํ์ฌ ๋น์ฉ ์ ๊ฐ
| Price Class | ํฌํจ ์ง์ญ | ๋น์ฉ |
|---|---|---|
| Price Class All | ์ ์ฒด Edge Location | ๊ฐ์ฅ ๋น์, ์ต๊ณ ์ฑ๋ฅ |
| Price Class 200 | ๋๋ถ๋ถ ์ง์ญ (๋น์ฉ ๋์ ์ผ๋ถ ์ ์ธ) | ์ค๊ฐ |
| Price Class 100 | ๊ฐ์ฅ ์ ๋ ดํ ์ง์ญ๋ง (๋ถ๋ฏธ, ์ ๋ฝ ๋ฑ) | ๊ฐ์ฅ ์ ๋ ด |
CloudFront Origin Groups (Failover)
- Primary Origin์ด ์คํจํ๋ฉด Secondary Origin์ผ๋ก ์๋ Failover
- High Availability ๊ตฌ์ฑ์ ํ์ฉ
[CloudFront Distribution] โ โโโ Primary Origin (us-east-1 S3) โ ์ ์ ์ ์ฌ์ฉ โโโ Secondary Origin (us-west-2 S3) โ Primary ์คํจ ์ ์๋ ์ ํLambda@Edge / CloudFront Functions
Edge Location์์ ์ฝ๋๋ฅผ ์คํํ์ฌ ์์ฒญ/์๋ต์ ๋์ ์ผ๋ก ์ฒ๋ฆฌ.
| ํญ๋ชฉ | CloudFront Functions | Lambda@Edge |
|---|---|---|
| ๋ฐํ์ | JavaScript | Node.js, Python |
| ์คํ ํธ๋ฆฌ๊ฑฐ | Viewer Request/Response | Viewer/Origin Request/Response |
| ์คํ ์์น | CloudFront Edge (๊ฒฝ๋) | ๋ฆฌ์ Edge Location |
| ์ต๋ ์คํ ์๊ฐ | 1ms | 5~10์ด |
| ์์ฒญ ์/์ด | ์๋ฐฑ๋ง req/s | ์์ฒ req/s |
| ์ฌ์ฉ ์ฌ๋ก | Header ์กฐ์, URL ๋ฆฌ๋ค์ด๋ ํธ, A/B ํ ์คํธ | ๋ณต์กํ ๋ก์ง, ์ธ๋ถ API ํธ์ถ |
AWS Global Accelerator
๋ฌธ์ ์ ์
๊ธ๋ก๋ฒ ์ฌ์ฉ์๊ฐ ํน์ ๋ฆฌ์ ์ ๋ฐฐํฌ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ๊ทผํ ๋, Public Internet์ ํตํ **๋ค์์ Hop(๊ฒฝ์ ์ง)**์ผ๋ก ์ธํด ์ง์ฐ ์๊ฐ๊ณผ ํจํท ์์ค ๋ฐ์.
[์ผ๋ณธ ์ฌ์ฉ์] โ Public Internet โ [us-east-1 ALB] (์๋ง์ ๋ผ์ฐํฐ ๊ฒฝ์ โ ๋์ ์ง์ฐ, ๋ถ์์ )ํด๊ฒฐ: AWS ๋ด๋ถ ๋คํธ์ํฌ ํ์ฉ
[์ผ๋ณธ ์ฌ์ฉ์] โ [๋์ฟ Edge Location] โ AWS ์ ์ฉ ๋ฐฑ๋ณธ๋ง โ [us-east-1 ALB] (์งง์ Public Internet ๊ตฌ๊ฐ) (๊ณ ์, ์์ )Anycast IP
- Global Accelerator๋ ์ ํ๋ฆฌ์ผ์ด์ ์ 2๊ฐ์ Anycast IP ํ ๋น
- Unicast IP: ํ๋์ ์๋ฒ๊ฐ ํ๋์ IP๋ฅผ ๋ณด์
- Anycast IP: ์ฌ๋ฌ ์๋ฒ๊ฐ ๊ฐ์ IP๋ฅผ ๋ณด์ , ํด๋ผ์ด์ธํธ๋ ์๋์ผ๋ก ๊ฐ์ฅ ๊ฐ๊น์ด ์๋ฒ๋ก ๋ผ์ฐํ
Anycast IP: 1.2.3.4 โ ์ ์ธ๊ณ ์ด๋์ ์์ฒญํด๋ ๊ฐ์ IP โ โโโ ๋์ฟ Edge โ ๋์ฟ ์ฌ์ฉ์ ์ฒ๋ฆฌ โโโ ๋ฐ๋ Edge โ ์ ๋ฝ ์ฌ์ฉ์ ์ฒ๋ฆฌ โโโ ๋ฒ์ง๋์ Edge โ ๋ฏธ๊ตญ ์ฌ์ฉ์ ์ฒ๋ฆฌGlobal Accelerator ์ฃผ์ ํน์ฑ
| ํญ๋ชฉ | ๋ด์ฉ |
|---|---|
| ๊ณ ์ IP | 2๊ฐ์ Anycast IP (๋ณ๊ฒฝ ์์) |
| ์ง์ ๋ฆฌ์์ค | Elastic IP, EC2, ALB, NLB (Public/Private ๋ชจ๋) |
| Health Check | ์ ํ๋ฆฌ์ผ์ด์ ํฌ์ค ์ฒดํฌ, ๋น์ ์ ์ 1๋ถ ์ด๋ด Failover |
| ๋ณด์ | ์ธ๋ถ์ ๋ ธ์ถ๋๋ IP๊ฐ ๋จ 2๊ฐ โ ํ์ดํธ๋ฆฌ์คํธ ๊ด๋ฆฌ ์ฉ์ด |
| DDoS ๋ณดํธ | AWS Shield ํตํฉ |
| ํด๋ผ์ด์ธํธ ์บ์ ์ด์ | IP๊ฐ ๋ณ๊ฒฝ๋์ง ์์ผ๋ฏ๋ก DNS ์บ์ ๋ฌธ์ ์์ |
CloudFront vs. Global Accelerator ๋น๊ต
๐ ์ํ์์ ๊ฐ์ฅ ์์ฃผ ์ถ์ ๋๋ ๋น๊ต โ ๋ฐ๋์ ๊ตฌ๋ถ
| ํญ๋ชฉ | CloudFront | Global Accelerator |
|---|---|---|
| ์ฃผ์ ๊ธฐ๋ฅ | ์ฝํ ์ธ ์บ์ฑ ๋ฐ ๋ฐฐํฌ | ๋คํธ์ํฌ ๋ ๋ฒจ ํธ๋ํฝ ๊ฐ์ |
| ์บ์ฑ | โ Edge Location์ ์ฝํ ์ธ ์บ์ | โ ์บ์ ์์ (ํ๋ก์๋ง) |
| ์ฝํ ์ธ ์ฒ๋ฆฌ | Edge์์ ์ฝํ ์ธ ์ง์ ์ ๊ณต | Edge์์ ํจํท์ ์๋ณธ ์๋ฒ๋ก ์ ๋ฌ |
| ํ๋กํ ์ฝ | HTTP/HTTPS ์ ์ฉ | TCP, UDP ๋ชจ๋ ์ง์ |
| IP ์ฃผ์ | ๋์ IP (DNS๋ก ์ ๊ทผ) | ๊ณ ์ Anycast IP 2๊ฐ |
| Failover | ๋๋ฆผ (DNS TTL ์ํฅ) | 1๋ถ ์ด๋ด ๋น ๋ฅธ Failover |
| ์ ํฉํ Use Case | Static/Dynamic HTTP ์ฝํ ์ธ ๊ฐ์ | ๊ฒ์(UDP), IoT(MQTT), VoIP, ๊ณ ์ IP ํ์, ๋น ๋ฅธ Regional Failover |
๊ฐ๋จ ์ ํ ๊ธฐ์ค:
HTTP ์ฝํ
์ธ ๋ฅผ ์ ์ธ๊ณ์ ๋น ๋ฅด๊ฒ ๋ฐฐํฌ โ CloudFront์บ์์ ๋ฌด๊ดํ TCP/UDP ์ ํ๋ฆฌ์ผ์ด์
๊ฐ์ โ Global Accelerator๊ณ ์ IP 2๊ฐ๋ก ๋ฐฉํ๋ฒฝ ํ์ดํธ๋ฆฌ์คํ
ํ์ โ Global AcceleratorHTTP ์์ฒญ์ด์ง๋ง Static IP ๋๋ ๋น ๋ฅธ Failover ํ์ โ Global Accelerator๐ ์ํ ์์ฃผ ์ถ์ ํฌ์ธํธ ์ด์ ๋ฆฌ
| ํฌ์ธํธ | ๋ด์ฉ |
|---|---|
| CloudFront ๋ณด์ ํตํฉ | AWS Shield + WAF |
| S3 Origin ๋ณด์ | OAC (Origin Access Control) (๊ตฌ: OAI deprecated ์์ ) |
| VPC Origin | Private ALB/NLB/EC2๋ฅผ ์ธํฐ๋ท ๋ ธ์ถ ์์ด Origin์ผ๋ก ์ฌ์ฉ ๊ฐ๋ฅ |
| Cache Invalidation | /** ๋๋ /path/** ๋ก TTL ๋ฌด์ ๊ฐ์ ๊ฐฑ์ |
| Geo Restriction ํ๋ณ | 3rd Party Geo-IP Database ์ฌ์ฉ |
| CloudFront vs S3 CRR | ์ ์ ์ ์ธ๊ณ ๋ฐฐํฌ โ CloudFront / ์์ ๋ฆฌ์ ๋์ ์ฝํ ์ธ โ S3 CRR |
| Signed URL | ํ์ผ 1๊ฐ ์ ๊ทผ ์ ํ |
| Signed Cookie | ์ฌ๋ฌ ํ์ผ ๋๋ ๊ฒฝ๋ก ์ ์ฒด ์ ๊ทผ ์ ํ |
| CloudFront Signed URL vs S3 Pre-signed URL | CloudFront: Edge ์บ์ ํ์ฉ, IP ์ ํ ๊ฐ๋ฅ / S3: S3 ์ง์ ์ ๊ทผ, IAM ๊ถํ ์์ |
| Price Class 100 | ๊ฐ์ฅ ์ ๋ ดํ ์ง์ญ๋ง (๋ถ๋ฏธ, ์ ๋ฝ ๋ฑ) |
| Origin Failover | Primary ์คํจ ์ Secondary๋ก ์๋ ์ ํ |
| CloudFront Functions | ๊ฒฝ๋ JS, 1ms, Viewer Request/Response |
| Lambda@Edge | ๋ณต์กํ ๋ก์ง, 5~10์ด, Viewer + Origin ํธ๋ฆฌ๊ฑฐ |
| Global Accelerator IP ์ | 2๊ฐ์ Anycast IP |
| Global Accelerator Failover | 1๋ถ ์ด๋ด |
| Anycast IP ๊ฐ๋ | ์ฌ๋ฌ ์๋ฒ๊ฐ ๊ฐ์ IP ๊ณต์ , ํด๋ผ์ด์ธํธ๋ ๊ฐ์ฅ ๊ฐ๊น์ด ์๋ฒ๋ก ๋ผ์ฐํ |
| Global Accelerator ์ง์ ํ๋กํ ์ฝ | TCP + UDP (CloudFront๋ HTTP๋ง) |
| ๊ณ ์ IP ํ์ดํธ๋ฆฌ์คํ | Global Accelerator (IP 2๊ฐ๋ง ๋ ธ์ถ) |
| Non-HTTP ๊ฐ์ (UDP, MQTT, VoIP) | Global Accelerator |