๋ชฉ์ฐจ
ํ์ฌ ์๋น์ค์ ๋์ ํ๊ธฐ ์ํด ์์นํ๊ณ ์ ๋ฆฌํ๋ ๋ด์ฉ ์ฌ๋ ค๋ด ๋๋ค
๊ธฐ๋๊ธด ์ฝ์ง์ ๊ธฐ๋ก๋ค...
Lambda@Edge๋ ๋ญ๊ฐ์?
Lambda@Edge๋ AWS CloudFront์ ๊ธฐ๋ฅ ์ค ํ๋๋ก,
CloudFront์ ๋ค์ํ ์ด๋ฒคํธ์์ ์คํ๋ ์ ์๋ ๋๋ค์ ๋๋ค.
AWS CloudFront๋ Edge Location(๋ฐ์ดํฐ ์ผํฐ์ ์ ์ธ๊ณ ๋คํธ์ํฌ)๋ฅผ ํตํด ์ฝํ ์ธ ๋ฅผ ์ ๊ณตํ๋๋ฐ,
Lambda๋ Region๋ณ๋ก ์์ฑํ ์ ์๊ฒ ๋์ด์์ต๋๋ค.
๊ทธ๋ ๋ค๋ฉด ์ ์ธ๊ณ Region์ ๋๊ฐ์ Lambda๋ฅผ ๋ง๋ค์ด์ฃผ์ด์ผํ ๊น์?
์ด๋ด ๋ ์ฌ์ฉํ๋ ๊ฒ์ด Lambda@Edge์ ๋๋ค.
๋ฒ์ง๋์ ๋ฆฌ์ (us-east-1)์ Lambda@Edge๋ฅผ ๋ง๋ค์ด๋๋ฉด
AWS๊ฐ ์์์ ํด๋น ๋๋ค๋ฅผ Edge Location์ผ๋ก ๋ณต์ ํด์ค๋๋ค.
๋ฐ๋ผ์ ์ฌ์ฉ์์๊ฒ ๊ฐ๊น์ด ๋๋ค๊ฐ ์คํ๋์ด ์ง์ฐ์๊ฐ์ ๋จ์ถํ ์ ์๊ณ , ์ฑ๋ฅ์ ๊ฐ์ ํ ์ ์์ต๋๋ค.
์ฌ๊ธฐ์๋ ์ค์๊ฐ ์ด๋ฏธ์ง ๋ฆฌ์ฌ์ด์ง์ ๋๋ค ์ฃ์ง๋ฅผ ์ฌ์ฉํด๋ณด๋ คํฉ๋๋ค!
์์์ํฉ
์๋น์ค๋ฅผ ์ด์ํ๋ค๋ณด๋ฉด ํ๋์ ์๋ณธ ์ด๋ฏธ์ง๋ฅผ UI์ ๋ง์ถ์ด ๋ค์ผํ ํฌ๊ธฐ๋ก ๋ณด์ฌ์ฃผ์ด์ผํ๋ ์ํฉ์ด ๋ฐ์ํฉ๋๋ค.
ํ์ฌ์ ์ด๋ฏธ์ง ์ฒ๋ฆฌ ํ๋ก์ธ์ค๊ฐ ์๋์ ๊ฐ๋ค๊ณ ์๊ฐํด ๋ด ์๋ค.
1. ์๋ณธ ์ด๋ฏธ์ง(happy.jpg) S3์ ์ ์ฅ
2. ์ฌ์ด์ฆ ๊ท๊ฒฉ๋ณ๋ก ์ด๋ฏธ์ง๋ฅผ ๋ฆฌ์ฌ์ด์งํ์ฌ S3์ ์ ์ฅ
3. ํด๋ผ์ด์ธํธ๋ ๊ท๊ฒฉ์ ๋ง๊ฒ /happy_300x300.jpg๋ฅผ ํธ์ถ
์ฌ๊ธฐ์ ๋ฌธ์ ์ ์ 2๊ฐ์ง์ ๋๋ค.
1. ์๋ณธ ์ด๋ฏธ์ง 1๊ฐ + ์ฌ์ด์ฆ ๊ท๊ฒฉ N๊ฐ= ์ด N+1๊ฐ์ ์ด๋ฏธ์ง๊ฐ S3์ ์ ์ฅ๋จ
2. ์๋ก์ด ์ฌ์ด์ฆ ๊ท๊ฒฉ์ด ์๊ธธ๋๋ง๋ค ์๋ณธ ์ด๋ฏธ์ง๋ฅผ ์ฐพ์ ๋ฆฌ์ฌ์ด์ง ์ฒ๋ฆฌ ํ S3์ ์ ์ฅํด์ผํจ.
์์์ํฉ์ Lambda@Edge๋ฅผ ๋์ ํ๋ค๋ฉด?
1. S3์๋ ์๋ณธ ์ด๋ฏธ์ง๋ง ์ ์ฅํ ์ ์์
2. ์๋ก์ด ๊ท๊ฒฉ์ด ์๊ฒจ๋ ์ฟผ๋ฆฌ์คํธ๋ง์ ์ ๋ ฅํ๋๋๋ก ์ด๋ฏธ์ง๋ฅผ ๋ฆฌ์ฌ์ด์งํ๋ ๋ฌธ์ ์์.
/happy.jpg?w=100&h=200
3. ํ๋ฒ ์์ฒญํ๋ ๋ฐ์ดํฐ๋ CloudFront์์ ์บ์ฑ๋๊ธฐ ๋๋ฌธ์ ๋น ๋ฅธ ์๋ต ๊ฐ๋ฅ.
์ฃผ์
์๋์์ ์ฐ๋ฆฌ๊ฐ ๋ง๋ค ์ด๋ฏธ์ง ๋ฆฌ์ฌ์ด์ง ๋๋คํจ์๋
ํด๋ผ์ฐ๋ํ๋ก ํธ์ ์บ์ฑ ์ฒ๋ฆฌ๊ฐ ์๋์ด์์ ๋๋ง ์คํ๋๊ฒ ๋ง๋ค๊ฒ๋๋ค.
๋ง์ฝ ์บ์ฑ์ฒ๋ฆฌ๊ฐ ์๋ ๊ฐ๊ธฐ ๋ค๋ฅธ ์ด๋ฏธ์ง๋ฅผ 10000๊ฐ ์์ฒญํ๋ฉด ์ด๋ป๊ฒ๋ ๋ผ์?
์ผ๋ฐ์ ์ผ๋ก ๋๋ค๊ฐ ๋์์ ์คํ๋ ์ ์๋ ๊ฐ์๋ 1000๊ฐ์ ๋๋ค.
๋ค์๋งํด ์บ์ฑ์ฒ๋ฆฌ๊ฐ ์๋ ์ด๋ฏธ์ง๋ 1000๊ฐ๊น์ง๋ง ๋์์ ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
๊ทธ๋์ Lambda@Edge๋ฅผ ์ด์ฉํ ์ด๋ฏธ์ง ๋ฆฌ์ฌ์ด์ง ์์ ์
์๋น์ค ์ด์ฉ์ด ๋ฎ์ ์๊ฐ๋์ ํ๋ฒ์ฉ ๋ฐฐ์น๋ฅผ ๋๋ ค ์บ์ฑ ์ฒ๋ฆฌ๋๊ฒ๋ ์ฒ๋ฆฌํ๊ธฐ๋ ํ๋ค๋ค์..!
Lambda@Edge EventType
์ด๋ฒคํธ ์ ํ ์ ํ ๊ฐ์ด๋
- Viewer Request
- ์์ฒญํ ๊ฐ์ฒด๊ฐ CloudFront ์บ์์ ์๋์ง ํ์ธํ๊ธฐ ์ ์ ๋๋ค๊ฐ ์คํ๋๋ค.
- ํด๋น ์ด๋ฒคํธ์ ๋๋ค๋ฅผ ํธ๋ฆฌ๊ฑฐํ๋ฉด CloudFront ์บ์ ์ฌ๋ถ์ ๊ด๊ณ์์ด ๋งค ์์ฒญ๋ง๋ค ๋๋ค๊ฐ ์คํ๋๋ค.
- Origin Request
- ์์ฒญํ ๊ฐ์ฒด๊ฐ CloudFront ์บ์์ ์์ ๋, ์ค๋ฆฌ์ง์ผ๋ก ์์ฒญ์ ์ ๋ฌํ ๋ ๋๋ค๊ฐ ์คํ๋๋ค.
- ์์ฒญํ ๊ฐ์ฒด๊ฐ CLoudFront ์บ์์ ์์ ๋๋ ์คํ๋์ง ์๋๋ค.
- Origin Response << ํด๋น ์ด๋ฒคํธ์์ ์๋ณธ ์ด๋ฏธ์ง ๋ฆฌ์ฌ์ด์ง ์ฒ๋ฆฌ!
- ์ค๋ฆฌ์ง์ผ๋ก๋ถํฐ ์๋ต์ ์์ ํ๊ณ , ์๋ต์์ ๊ฐ์ฒด๋ฅผ ์บ์ํ๊ธฐ ์ ์ ๋๋ค๊ฐ ์คํ๋๋ค.
- ์ค๋ฆฌ์ง์์ ์ค๋ฅ๊ฐ ๋ฐํ๋ ๊ฒฝ์ฐ์๋ ๋๋ค๊ฐ ์คํ๋๋ค.
- Viewer Response
- ์์ฒญํ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉ์์๊ฒ ๋ฐํํ๊ธฐ ์ ์ ๋๋ค๊ฐ ์คํ๋๋ค.
- ํด๋น ์ด๋ฒคํธ์ ๋๋ค๋ฅผ ํธ๋ฆฌ๊ฑฐํ๋ฉด CloudFront ์บ์ ์ฌ๋ถ์ ๊ด๊ณ์์ด ๋งค ์์ฒญ๋ง๋ค ๋๋ค๊ฐ ์คํ๋๋ค.
๊ฒฐ๊ณผ ๋ฏธ๋ฆฌ๋ณด๊ธฐ
์๋ณธ์ด๋ฏธ์ง
์์ฒญ url : https://d39leqiptum1or.cloudfront.net/harry.jpg
์ฌ์ด์ฆ : 1058 * 1411
์์ ์๋ณธ์ด๋ฏธ์ง url์ ์ฟผ๋ฆฌ์คํธ๋ง์ ๋ถ์ฌ ์ค์๊ฐ์ผ๋ก ์ด๋ฏธ์ง๋ฅผ ๋ฆฌ์ฌ์ด์ง์ฒ๋ฆฌํ๊ณ ,
๋ฆฌ์ฌ์ด์ง๋ ์ด๋ฏธ์ง๊ฐ ์บ์ฑ์ฒ๋ฆฌ๋๋์ง ํ์ธํด๋ณด์.
์ด๋ฏธ์ง ๋ฆฌ์ฌ์ด์ง ์ต์ด์์ฒญ
์์ฒญ url : https://d39leqiptum1or.cloudfront.net/harry.jpg?w=200
๊ฒฐ๊ณผ
- ์ฌ์ด์ฆ : 200 * 267
- x-cache : Miss from cloudfront (= CloudFront์ ์บ์ฑ๋ ์ด๋ฏธ์ง๊ฐ ์กด์ฌํ์ง ์์์ S3์์ ์ด๋ฏธ์ง๋ฅผ ๊ฐ์ ธ์๋ค.)
- ๊ฒฝ๊ณผ์๊ฐ: 182.07ms
๋ฆฌ์ฌ์ด์ง๋ ์ด๋ฏธ์ง ์ฌ์์ฒญ
์์ฒญ url : https://d39leqiptum1or.cloudfront.net/harry.jpg?w=200
๊ฒฐ๊ณผ
- ์ฌ์ด์ฆ : 200 * 267
- x-cache : Hit from cloudfront (= CloudFront์ ์บ์ฑ๋ ์ด๋ฏธ์ง๊ฐ ์กด์ฌํ์ฌ ์บ์ฑ ๋ฐ์ดํฐ๋ฅผ ์๋ตํด์ฃผ์๋ค.)
- ๊ฒฝ๊ณผ์๊ฐ: 8.23ms
์์ ์์๋๋ก ๋ฐ๋ผํ๊ธฐ
1. S3, CloudFront ์
ํ
2. CloudFront ์ฟผ๋ฆฌ์คํธ๋ง ์บ์ ์
ํ
3. IAM ์ญํ ์์ฑ
4. Lambda@Edge ๋ฐฐํฌ ์
ํ
๋ฐ ๋ก๊ทธ ํ์ธ
5. ๋ฆฌ์ฌ์ด์ง ๋ก์ง ์์ฑ ๋ฐ ํ
์คํธ
5๋ฒ๊น์ง ํ๋ฉด ๊ธฐ๋ณธ์ ์ธ ์ด๋ฏธ์ง ๋ฆฌ์ฌ์ด์ง ์ฒ๋ฆฌ๋ ๋๋ฉ๋๋ค.
์ดํ ์ถ๊ฐ๋ก CloudFront๋ฅผ Route53์ ๋ถ์ธ๋ค๊ฑฐ๋,
CloudFront ์๋ฌ๋ฐ์ ์ ๊ธฐ๋ณธ์ด๋ฏธ์ง๋ฅผ ๋ณด์ฌ์ฃผ๋๋ก ์ ํ ํ๊ฑฐ๋ ๋ฑ์ ์์ ๋ ๊ฐ๋ฅํฉ๋๋ค!