๋ฐ์ํ
CDN์ด๋?
- CDN(Content Delivery Network)์ ์ฌ์ฉ์์ ๋ฌผ๋ฆฌ์ ์ผ๋ก ๊ฐ๊น์ด ๊ณณ์ ์บ์ ์๋ฒ๋ฅผ ์ด์ํ์ฌ ์ปจํ ์ธ ๋ฅผ ๋น ๋ฅด๊ฒ ์ ์กํ๋ ์บ์ฑ ๊ธฐ์ ์ ๋๋ค.
- CDN์ ํด๋ผ์ด์ธํธ์ ์๋ฒ ๊ฐ์ ์ค๊ฐ ์๋ฒ(intermediary servers)๋ฅผ ๋์ด latency๋ฅผ ์ค์ด๊ณ ํต์ ๊ณผ์ ์์ delay๋ฅผ ์ค์ด๋ ๊ฒ์ด ๋ชฉ์ ์ ๋๋ค.
- CDN์ ์ฌ์ฉํ๋ฉด ์ฌ์ฉ์๋ ์ง๋ฆฌ์ ์ผ๋ก ๊ฐ๊น์ด CDN ์๋ฒ์์ ์ ์ฅ๋ ์ฝํ ์ธ ๋ฅผ ์ ๊ณต๋ฐ๊ฒ ๋ฉ๋๋ค.
- CDN์ ๋ฐ์ดํฐ ์ฌ์ฉ๋์ด ๋ง์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์น ํ์ด์ง ๋ก๋ ์๋๋ฅผ ๋์ด๋ ์๋ฒ ๋คํธ์ํฌ๋ก ์ฝํ ์ธ ์ ์ก ๋คํธ์ํฌ ๋๋ ์ฝํ ์ธ ๋ฐฐํฌ ๋คํธ์ํฌ๋ฅผ ์๋ฏธํ๊ธฐ๋ ํฉ๋๋ค.
- AWS๋ CDN ์๋น์ค๋ก CloudFront๋ฅผ ์ ๊ณตํฉ๋๋ค.
CloudFront๋?
- Cloud Front๋ AWS์ CDN ์๋น์ค๋ก Edge Location์ด๋ผ๊ณ ๋ถ๋ฆฌ๋ ๋ฐ์ดํฐ ์ผํฐ์ ๋คํธ์ํฌ๋ฅผ ํตํด ์ปจํ ์ธ ๋ฅผ ์ ๋ฌํฉ๋๋ค.
- Edge Location์ ์ค์ ๋ฐ์ดํฐ๊ฐ ์บ์ฑ๋๋ ์ฅ์น์ ๋๋ค.
- CloudFront๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ์ ์ฌ์ฉ์๊ฐ ์ฝํ ์ธ ๋ฅผ ์์ฒญํ๋ฉด ์ง์ฐ ์๊ฐ์ด ๊ฐ์ฅ ๋ฎ์ Edge Location์ผ๋ก ์์ฒญ์ด ๋ผ์ฐํ ๋์ด ์ฑ๋ฅ์ด ํฅ์๋ฉ๋๋ค.
- Origin์ ์ปจํ ์ธ ๊ฐ ์ ์ฅ๋๋ ์์น์ด๋ฉฐ CloudFront๊ฐ ์ฌ์ฉ์๊ฐ ์ ๊ณตํ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ๊ณณ์ ๋๋ค.
- Origin์ S3, ALB, Lambda function URL, EC2, Custom Origin(HTTP), MediaSotre, MediaPackage๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
- Distribution์ CloudFront๋ฅผ ํตํด ์ปจํ ์ธ ๋ฅผ ์ ๊ณตํ๊ธฐ ์ํ ์ค์ ์ ํฌํจํ๋ ๋ ผ๋ฆฌ์ ๋จ์์ ๋๋ค.
- Distribution์ CloudFront์ ํ์ผ์ ๊ฐ์ ธ์ฌ Origin๊ณผ ๋์ํ๋ ๋ฐฉ๋ฒ์ ์๋ ค์ฃผ๋ ์ค์ ์ ๋๋ค.
- Distribution์ Origin, Cache Behavior ๋ฑ์ผ๋ก ๊ตฌ์ฑ๋๊ณ 1๊ฐ์ Distribution์ ์ต๋ 25๊ฐ์ Origin์ ์กฐํฉํ์ฌ ์ง์ ํ ์ ์์ต๋๋ค.
- Distribution์ ์์ฑํ๋ฉด d111111abcdef8.cloudfront.net๊ณผ ๊ฐ์ ๋๋ฉ์ธ์ด ํ ๋น๋ฉ๋๋ค.
CloudFront - Origin
- CloudFront๋ Origin์ผ๋ก S3 Bucket, S3 Object Lambda, S3 Access Point๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- ์ฌ์ฉ์๊ฐ ์์ฃผ ์ ๊ทผํ๋ ๊ฐ์ฒด๋ CloudFront๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ํจ์จ์ ์ ๋๋ค. CloudFront๋ S3์ ๋นํด ๋ฐ์ดํฐ ์ ์ก ๊ฐ๊ฒฉ์ด ์ ๋ ดํ๊ณ ์ฌ์ฉ์์ ๋ ๊ฐ๊น์ด ๊ณณ์ ์ ์ฅ๋์ด ์ง์ฐ์๊ฐ์ด ์ค์ด๋ค๊ธฐ ๋๋ฌธ์ ๋๋ค.
- CloudFront๋ S3 origin์ ์ธ์ฆ๋ ์์ฒญ์ ์ ์กํ๋ ๋ฐฉ๋ฒ์ผ๋ก Origin Access Control(OAC)์ Origin Access Identity(OAI)๋ฅผ ์ ๊ณตํฉ๋๋ค. OAC๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด best practice์ ๋๋ค.
- CloudFront๋ Origin์ผ๋ก Internet-facing ALB๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. (Internal ALB๋ Origin์ผ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค.)
- ์ฌ์ฉ์๊ฐ CloudFront๋ฅผ ์ฐํํ์ฌ ALB์ ์ ๊ทผํ๋ ๊ฑธ ๋ง๊ธฐ ์ํด์ AWS-managed prefix๋ฅผ ALB์ SG์ ๋ฑ๋กํ๊ฑฐ๋ ALB๊ฐ ํน์ HTTP ํค๋๋ฅผ ํฌํจํ ์์ฒญ๋ง ์๋ตํ๋๋ก ๊ตฌ์ฑํ ์ ์์ต๋๋ค.
- CloudFront๋ Origin์ผ๋ก EC2, Custom Origin, Lambda function URL์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- Custom Origin์ Public DNS ์ด๋ฆ์ด ์๋ HTTP(S) ์น ์๋ฒ์ ๋๋ค.
- S3 Static website endpoint๋ Custom origin์ผ๋ก ๊ฐ์ฃผ๋ฉ๋๋ค.
- Lambda function URL์ Lambda function์ ์ํ ์ ์ฉ HTTPS endpoint์ ๋๋ค.
CloudFront - Orgin Group
- ๊ณ ๊ฐ์ฉ์ฑ์ด ํ์ํ ๊ฒฝ์ฐ Origin Group์ ์ฌ์ฉํ์ฌ Origin fail-over๋ฅผ ๊ตฌ์ฑํ ์ ์์ต๋๋ค.
- Origin Group์ Primary origin๊ณผ Secondary origin์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
- Primary origin์ด fail-over๋ฅผ ์ํด ์ค์ ํ HTTP status code๋ฅผ ๋ฐํํ๋ ๊ฒฝ์ฐ ๋๋ Primary origin์ ์ฐ๊ฒฐ์ ์คํจํ๊ฑฐ๋ ์๋ต์ด ๋๋ฌด ์ค๋ ๊ฑธ๋ฆฌ๋ ๊ฒฝ์ฐ์ CloudFront๋ Secondary origin์ผ๋ก ๋ผ์ฐํ ํฉ๋๋ค.
Cache Key์ Cache Policy
- Cache Key๋ Cache์ ์กด์ฌํ๋ ๊ฐ์ฒด๋ฅผ ์ ์ผํ๊ฒ ์๋ณํ๋ ๊ฐ์ผ๋ก CloudFront๋ Cache Key๋ก Cache Hit์ธ์ง Cache Miss ์ธ์ง ๊ฒฐ์ ํฉ๋๋ค.
- Default cache key๋ CloudFront distribution์ domain name๊ณผ ์์ฒญ URL ๊ฒฝ๋ก๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
- Cache Policy๋ฅผ ์ฌ์ฉํ์ฌ Cache key์ HTTP ํค๋, cookie, query string ๋ฑ์ ํฌํจ์์ผ Custom cache key๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค.
- Custom cache key๋ฅผ ์๋ชป ์ง์ ํ๊ฒ ๋๋ฉด ์ค๋ณต๋ ๊ฐ์ฒด๋ฅผ ์บ์ฑํ๊ณ cache hit ๋น์จ์ ๋ฎ์ถ๊ณ origin request ์๋ฅผ ๋๋ฆฌ๋ ๋ฑ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. User-agent ๋๋ ์ฌ์ฉ์๋ณ session id ๋ฑ์ cache key์ ํฌํจ์ํค๋ฉด ์ ๋ฉ๋๋ค.
- Cache Policy๋ ์ผ๋ฐ์ ์ธ ์ฌ๋ก์ ์ ํฉํ Managed policy์ Custom policy๋ฅผ ์ ๊ณตํฉ๋๋ค.
CloudFront Cache behavior์ Invalidation
- Cache behavior๋ฅผ ์ค์ ํ์ฌ URL ๊ฒฝ๋ก ํจํด์ ๋ฐ๋ผ์ ๋ค์ํ Origin์ ์ง์ ํ ์ ์์ต๋๋ค.
- Cache behavior๋ Path pattern, Origin ๋๋ Origin group, ์ฌ์ฉ์๊ฐ ์์ฒญํ๋ ํ๋กํ ์ฝ, ํ์ฉ๋๋ HTTP ๋ฉ์๋ ๋ฑ์ ์ง์ ํ ์ ์์ต๋๋ค.
- Path pattern๊ณผ ์์๋ฅผ ์๋ชป ์ ์ํ๋ฉด ์ฌ์ฉ์์๊ฒ ์์น ์๋ ๋ฐ์ดํฐ๋ฅผ ์ ๊ณตํ ์ ์์ผ๋ฏ๋ก ์ฃผ์ ๊น๊ฒ ์ ์ํด์ผ ํฉ๋๋ค.
- ์ฌ๋ฌ๊ฐ์ behavior๊ฐ ์๋ ๊ฒฝ์ฐ ๊ธฐ๋ณธ ํจํด(*)์ ํญ์ ๋ง์ง๋ง์ผ๋ก ์ฒ๋ฆฌ๋ฉ๋๋ค.
- Invalidation์ ์ฌ์ฉํ๋ฉด ์บ์๊ฐ ๋ง๋ฃ๋๊ธฐ ์ ์ ์บ์ฑ ๋ ์ฝํ
์ธ ๋ฅผ ์ญ์ ํ์ฌ ์ฝํ
์ธ ๋ฅผ ๊ฐฑ์ ํ ์ ์์ต๋๋ค.
Invalidation์ ๋น์ฉ์ด ๋ฐ์ํฉ๋๋ค.
CloudFront Signed Cookie/URL
- Signed URL๊ณผ Signed cookie๋ฅผ ์ฌ์ฉํ๋ฉด ๋น๊ณต๊ฐ ์ปจํ ์ธ ๋ฅผ ์ ๊ณตํ ์ ์์ต๋๋ค.
- ์ ํ๋ฆฌ์ผ์ด์ ์ค์น ํ์ผ๊ณผ ๊ฐ์ ๊ฐ๋ณ ํ์ผ์ ๋ํ ์ก์ธ์ค๋ฅผ ์ ๊ณตํ๋ ค๋ ๊ฒฝ์ฐ์๋ Signed URL์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
- ์ฌ๋ฌ ๊ฐ์ ํ์ผ์ ๋ํ ์ก์ธ์ค๋ฅผ ์ ๊ณตํ๋ ค๋ ๊ฒฝ์ฐ์๋ Signed cookie๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
- Signed Cookie/URL์ ๋ง๋๋ ค๋ฉด signer๊ฐ ํ์ํฉ๋๋ค. signer๋ CloudFront์์ ๋ง๋ ์ ๋ขฐํ ์ ์๋ key group์ด๊ฑฐ๋ CloudFront key pair๊ฐ ํฌํจ๋ AWS account์ ๋๋ค. ์ ๋ขฐํ ์ ์๋ key group์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
CloudFront Geo restriction
- Geo restriction(๋๋ Geo Blocking)๋ ์ฌ์ฉ์์ ์ง๋ฆฌ์ ์์น์ ๋ฐ๋ผ CloudFront๋ก ์ ๊ทผํ ์ฌ์ฉ์๋ฅผ ์ ํํ ์ ์์ต๋๋ค.
- Allow list๋ฅผ ์ง์ ํ์ฌ ํ์ฉํ ๊ตญ๊ฐ๋ฅผ ์ง์ ํ๊ฑฐ๋ Block list๋ฅผ ์ง์ ํ์ฌ ์ฐจ๋จํ ๊ตญ๊ฐ๋ฅผ ์ง์ ํ ์ ์์ต๋๋ค.
- CloudFront์ geographic restriction์ ์ฌ์ฉํ๊ฑฐ๋ third-party geolocation service๋ฅผ ์ฌ์ฉํ์ฌ ์ ํํ ์ ์์ต๋๋ค.
- ์ฌ์ฉ์์ ์์น๋ฅผ ํ์ธํ ์ ์๋ ๊ฒฝ์ฐ CloudFront๋ ์์ฒญํ ์ปจํ ์ธ ๋ฅผ ์ ๊ณตํฉ๋๋ค.
CloudFront Logging
- CloudFront๋ Standard log(access log) ๋๋ Real-time log ๋ฐฉ์์ผ๋ก request logging์ด ๊ฐ๋ฅํฉ๋๋ค.
- Standard log๋ S3๋ก ์ ๋ฌ๋๊ณ Real-time log๋ Kinesis Data Stream์ผ๋ก ์ ๋ฌ๋ฉ๋๋ค.
- Standard log์ Real-time log๋ best-effor์ ๊ธฐ๋ฐํ์ฌ ์ ์กํ๋ฉฐ ๋ก๊ทธ ๋ ์ฝ๋๊ฐ ๋๋ฝ๋๊ฑฐ๋ ํ์ฐธ ๋ค์ ์ ์ฌ๋ ์ ๋ ์์ต๋๋ค.
- CloudFront request log๋ฅผ ๋ชจ๋ ๋ถ์ํ๊ธฐ ๋ณด๋ค๋ ์ปจํ ์ธ ์ ๋ํ request ํน์ฑ์ ์ดํดํ๋๋ฐ ์ฌ์ฉํ๊ธฐ๋ฅผ ๊ถ์ฅํฉ๋๋ค.
๋ฐ์ํ
'๐ AWS > AWS Developer - Associate' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[AWS] Developer Associate #9 ๋ชจ๋ํฐ๋ง(CloudWatch, X-Ray) (2) | 2024.11.11 |
---|---|
[AWS] Developer Associate #8 ๋ฉ์ธ์ง(SQS, SNS) (0) | 2024.09.22 |
[AWS] Developer Associate #6 S3 (0) | 2024.07.26 |
[AWS] Developer Associate #5 ElastiCache (0) | 2024.05.24 |
[AWS] Developer Associate #4 ์ปจํ ์ด๋(ECR, ECS, EKS) (0) | 2024.05.12 |