๐ŸŽ‰ berenickt ๋ธ”๋กœ๊ทธ์— ์˜จ ๊ฑธ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค. ๐ŸŽ‰
DevOps
09-Cloud Front

1. CloudFront

  • CloudFront๋Š” CDN(Content Delivery Network, ์ปจํ…์ธ  ์ „์†ก ๋„คํŠธ์›Œํฌ) ์„œ๋น„์Šค์ด๋‹ค.
  • CDN์ด ํ•˜๋Š” ์—ญํ• ์€ ์ด๋ฆ„ ๊ทธ๋Œ€๋กœ ์ฝ˜ํ…์ธ ๋ฅผ ์ „์„ธ๊ณ„๋กœ ๋น ๋ฅด๊ฒŒ ์ „์†กํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๊ฒƒ
  • AWS์—์„œ ์ด CDN์˜ ์—ญํ• ์„ ํ•˜๋Š” ์„œ๋น„์Šค๊ฐ€ ๋ฐ”๋กœ CloudFront

1.1 CloudFront ํŠน์ง•

  • ์ฝ˜ํ…์ธ  ์ „์†ก ๋„คํŠธ์›Œํฌ(CDN)
  • ์ฝ˜ํ…์ธ (์ด๋ฏธ์ง€, HTML)๋ฅผ ์บ์‹ฑํ•˜์—ฌ ์„ฑ๋Šฅ ๊ฐ€์†
  • ์ „ ์„ธ๊ณ„ ์ˆ˜๋งŽ์€ Edge Location์„ ํ†ตํ•ด ์ฝ˜ํ…์ธ ๋ฅผ ๋น ๋ฅด๊ฒŒ ์ „์„ธ๊ณ„๋กœ ์ „์†ก ๊ฐ€๋Šฅ
  • ๊ธ€๋กœ๋ฒŒ ๊ณ ์† ๋ฐฑ๋ณธ ๋„คํŠธ์›Œํฌ ํ™•๋ณด์žˆ์Œ
  • AWS ์„œ๋น„์Šค <---> CloudFront ๋ฐ์ดํ„ฐ ์ „์†ก ๋ฌด๋ฃŒ
  • DDoS ๋ฐฉ์–ด ๋ฌด๋ฃŒ ์ œ๊ณต(AWS Shield Standard)

1.2 AWS Shield Standard

  • AWS์—์„œ ์‹คํ–‰๋˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ณดํ˜ธํ•˜๋Š” DDoS ๋ณดํ˜ธ ์„œ๋น„์Šค
  • CloudFront์—์„œ๋Š” AWS Shield Standard์— ์˜ํ•œ L3/L4 DDoS ๋ณดํ˜ธ๋Š” ์ถ”๊ฐ€ ๋น„์šฉ ์—†์ด ํฌํ•จ๋œ๋‹ค.
  • AWS๋Š” ์ „ ์„ธ๊ณ„์— 400๊ฐœ ์ด์ƒ์˜ ์—ฃ์ง€ ๋กœ์ผ€์ด์…˜์ด ์กด์žฌํ•œ๋‹ค๊ณ  ๋‚˜์™€ ์žˆ๋Š”๋ฐ,
    • ์ด ์—ฃ์ง€ ๋กœ์ผ€์ด์…˜์ด ๋ฐ”๋กœ CloudFront๊ฐ™์€ CDN ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•œ ๋ชฉ์ ์œผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค.

1.3 CloudFront ๊ธฐ๋ณธ ์šฉ์–ด

  • ๋ฐฐํฌ(Distribution)
    • CloudFront์˜ ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ๋‹จ์œ„๋ฅผ ์˜๋ฏธ
    • ๊ฐ ๋ฐฐํฌ๋Š” ๊ณ ์œ ์˜ ๋„๋ฉ”์ธ์„ ๊ฐ€์ง€๊ฒŒ ๋˜๋ฉฐ,
    • Route 53์ด๋ผ๋Š” AWS์˜ DNS ์„œ๋น„์Šค๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ž์‹ ์ด ๊ตฌ์ž…ํ•œ ๋„๋ฉ”์ธ์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์˜ค๋ฆฌ์ง„(Origin)
    • ์›๋ณธ ํŒŒ์ผ์„ ๊ฐ€์ ธ์˜ค๋Š” ์œ„์น˜๋ฅผ ์˜๋ฏธ
    • ๊ธฐ๋ณธ ์„ค์ •์€ S3๋กœ ๋˜์–ด ์žˆ์œผ๋ฉฐ, EC2, ELB, ์™ธ๋ถ€์„œ๋ฒ„ ๋“ฑ์œผ๋กœ ์ปค์Šคํ…€ ์„ค์ •๋„ ๊ฐ€๋Šฅํ•˜๋‹ค

2. (์‹ค์Šต) S3 ๋ฒ„ํ‚ท ์ƒ์„ฑ

1
(ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ) โŽฏโŽฏโŽฏ> (CloudFront) โŽฏโŽฏโŽฏ> (S3)

CloudFront๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— ๋จผ์ € S3 ๋ฒ„ํ‚ท์„ ์ƒ์„ฑํ•ด์•ผ ํ•œ๋‹ค.

  • [S3] โ†’ [๋ฒ„ํ‚ท]ํŽ˜์ด์ง€ ์˜ค๋ฅธ์ชฝ์— ์žˆ๋Š” [bucket ๋งŒ๋“ค๊ธฐ] ๋ฒ„ํŠผ์„ ํด๋ฆญ.
  • ๊ทธ๋Ÿฌ๋ฉด ๋ฒ„ํ‚ท์„ ์ƒ์„ฑํ•˜๋Š” ํ™”๋ฉด์ด ๋‚˜์˜จ๋‹ค.
  • ๋ฒ„ํ‚ท ์ด๋ฆ„ : sw-bucket-240114-2
    • cf. ์ฃผ์˜ํ•  ์ ์€ ๋ฒ„ํ‚ท ์ด๋ฆ„์€ DNS ํ˜•์‹์œผ๋กœ ์ „ ์„ธ๊ณ„์—์„œ ์œ ์ผํ•ด์•ผ ํ•œ๋‹ค
  • ๊ฐ์ฒด ์†Œ์œ ๊ถŒ : ACL ๋น„ํ™œ์„ฑํ™”๋จ์„ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉ
  • ์ด ๋ฒ„ํ‚ท์˜ ํผ๋ธ”๋ฆญ ์•ก์„ธ์Šค ์ฐจ๋‹จ ์„ค์ •
    • ํผ๋ธ”๋ฆญ ์•ก์„ธ์Šค๊ฐ€ ์ฐจ๋‹จ๋˜์–ด ์žˆ์œผ๋ฉด ์™ธ๋ถ€์—์„œ ๋ฒ„ํ‚ท์— ์žˆ๋Š” ๊ฐ์ฒด์— ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋‹ค.
    • ์ด ์˜ต์…˜์„ ์„ ํƒํ•œ ์ƒํƒœ๋กœ ๋ฒ„ํ‚ท์„ ์ƒ์„ฑํ•œ๋‹ค.
  • ํ™”๋ฉด์„ ์ œ์ผ ํ•˜๋‹จ์œผ๋กœ ๋‚ด๋ ค์„œ [๋ฒ„ํ‚ท ๋งŒ๋“ค๊ธฐ] ๋ฒ„ํŠผ์„ ํด๋ฆญ

์—ฌ๊ธฐ์„œ ํ•ด๋‹น ๋ฒ„ํ‚ท์„ ๋ˆŒ๋Ÿฌ์„œ ๋“ค์–ด๊ฐ€ ๋ณด๋ฉด, ๊ฐ์ข… ํƒญ๊ณผ ๊ฐ์ฒด ๋ชฉ๋ก์ด ๋‚˜์˜จ๋‹ค.

  • ํ˜„์žฌ๋Š” ์•„๋ฌด๋Ÿฐ ๊ฐ์ฒด๋„ ๋“ค์–ด ์žˆ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋น„์–ด ์žˆ๋‹ค.

3. (์‹ค์Šต) S3 ๋ฒ„ํ‚ท์— ํŒŒ์ผ ์—…๋กœ๋“œ

๊ฐ„๋‹จํ•œ ๋‚ด์šฉ์˜ hello.txt ํŒŒ์ผ์„ ์ž‘์„ฑํ•œ๋‹ค.

  • ์ดํ›„ [S3] โ†’ [๋ฒ„ํ‚ท] ํŽ˜์ด์ง€์—์„œ [์—…๋กœ๋“œ] ๋ฒ„ํŠผ์„ ํด๋ฆญ.
  • ๊ทธ๋Ÿฌ๋ฉด ํŒŒ์ผ ์—…๋กœ๋“œ ํ™”๋ฉด์ด ๋‚˜์˜ค๋Š”๋ฐ, [ํŒŒ์ผ ์ถ”๊ฐ€] ๋ฒ„ํŠผ์„ ํด๋ฆญ.
  • ์ž‘์„ฑํ•œ ํŒŒ์ผ์„ ์„ ํƒํ•ด์„œ [์—ด๊ธฐ] ๋ฒ„ํŠผ์„ ํด๋ฆญ.
  • ํ™”๋ฉด ํ•˜๋‹จ์— ์žˆ๋Š” [์—…๋กœ๋“œ] ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ด์„œ ํŒŒ์ผ์„ ์—…๋กœ๋“œํ•œ๋‹ค.

4. (์‹ค์Šต) CloudFront ๋ฐฐํฌ ์ƒ์„ฑ

[CloudFront] ํŽ˜์ด์ง€์—์„œ [Cloud ๋ฐฐํฌ ์ƒ์„ฑ] ๋ฒ„ํŠผ์„ ํด๋ฆญํ•œ๋‹ค.

(๋ฐฐํฌ ์ƒ์„ฑ) ํŽ˜์ด์ง€

  • ์›๋ณธ ๋„๋ฉ”์ธ : ์•ž์—์„œ ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด๋‘” S3 ๋ฒ„ํ‚ท์„ ์„ ํƒ.
  • ์›๋ณธ ์•ก์„ธ์Šค : ์›๋ณธ ์•ก์„ธ์Šค ์ œ์–ด ์„ค์ •(๊ถŒ์žฅ)์— ์ฒดํฌ
    • cf. ์›๋ณธ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ์„ ์„ค์ •ํ•˜๋Š” ๊ฒƒ
    • ๊ทธ๋Ÿผ ์•„๋ž˜ ์˜ต์…˜์ด ๋ฐ”๋€Œ๊ณ , [์ œ์–ด ์„ค์ • ์ƒ์„ฑ] ๋ฒ„ํŠผ์„ ํด๋ฆญ.
    • ์ œ์–ด ์„ค์ •์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค์ด์–ผ๋กœ๊ทธ๊ฐ€ ๋‚˜์˜จ๋‹ค.
    • ์ด๋ฆ„์„ MyOriginAccess๋ผ๊ณ  ๋ณ€๊ฒฝํ•˜๊ณ , ํ•˜๋‹จ์— [์ƒ์„ฑ] ๋ฒ„ํŠผ ํด๋ฆญ
    • Origin access control์— ๋ฐฉ๊ธˆ ๋งŒ๋“  ์ œ์–ด ์„ค์ •์„ ํด๋ฆญํ•œ๋‹ค.
  • ๊ธฐ๋ณธ ์บ์‹œ ๋™์ž‘ : ๊ธฐ๋ณธ๊ฐ’์„ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉ
  • ํ•จ์ˆ˜ ์—ฐ๊ฒฐ ์˜ต์…˜ : ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐฉํ™”๋ฒฝ(WAF) : ๋ณด์•ˆ ๋ณดํ˜ธ ๋น„ํ™œ์„ฑํ™” ์ฒดํฌ
    • cf. ์ด ๋ณด์•ˆ๋ณดํ˜ธ ํ™œ์„ฑํ™”๋ฅผ ํ•˜๋ฉด, ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์ทจ์•ฝ์ ์œผ๋กœ๋ถ€ํ„ฐ ์•ฑ์„ ๋ณดํ˜ธํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ
    • ์œ ๋ฃŒ ๊ธฐ๋Šฅ์ด๊ธฐ ๋•Œ๋ฌธ์—, ๋น„ํ™œ์„ฑํ™”๋ฅผ ์‹œํ‚จ๋‹ค.
  • ์„ค์ • : ๋‹ค๋ฅธ ์„ค์ •์€ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉ, ๊ธฐ๋ณธ๊ฐ’ ๋ฃจํŠธ ๊ฐ์ฒด๋ฅผ ์„ค์ •ํ•œ๋‹ค.
    • ๊ธฐ๋ณธ๊ฐ’ ๋ฃจํŠธ ๊ฐ์ฒด : ๋ฒ„ํ‚ท์˜ ์ตœ์ƒ์œ„ ๊ฒฝ๋กœ์— ์—…๋กœ๋“œํ•œ hello.txt ํŒŒ์ผ ์ด๋ฆ„์„ ์ž…๋ ฅ
    • cf. ์ด๋Š” ํด๋ผ์šฐ๋“œ ํ”„๋ก ํŠธ ๋ฐฐํฌ์˜ URL๋กœ ์ ‘์†ํ•  ๊ฒฝ์šฐ, ๋‚˜์˜ค๊ฒŒ ๋  ๊ฐ์ฒด๋ฅผ ์˜๋ฏธ
  • ์ด์ œ [๋ฐฐํฌ ์ƒ์„ฑ] ๋ฒ„ํŠผ์„ ํด๋ฆญํ•œ๋‹ค.

CloudFront ๋ฐฐํฌ ์ƒ์„ฑ์€ ์‹œ๊ฐ„์ด ์กฐ๊ธˆ ๊ฑธ๋ฆฐ๋‹ค. ์ด์ œ ์ด ์ƒํƒœ์—์„œ ํด๋ผ์šฐ๋“œ ํ”„๋ก ํŠธ๊ฐ€ S3 ๋ฒ„ํ‚ท์œผ๋กœ๋ถ€ํ„ฐ ๊ฐ์ฒด๋“ค์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก S3 ๋ฒ„ํ‚ท์˜ ์ •์ฑ…์„ ์—…๋ฐ์ดํŠธํ•ด์•ผ ํ•œ๋‹ค.

  • [์ •์ฑ… ๋ณต์‚ฌ] ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜์—ฌ ์ •์ฑ…์„ ๋ณต์‚ฌํ•˜๊ณ , S3 ๋ฒ„ํ‚ท ๊ถŒํ•œ์œผ๋กœ ์ด๋™ํ•˜๋Š” ๋งํฌ๋ฅผ ํด๋ฆญ
  • ๋งํฌ๋ฅผ ํด๋ฆญํ•˜๋ฉด S3 ๋ฒ„ํ‚ท [๊ถŒํ•œ] ํƒญ์ด ๋‚˜์˜จ๋‹ค.
  • ํ™”๋ฉด์„ ์•„๋ž˜๋กœ ๋‚ด๋ฆฌ๋ฉด ๋ฒ„ํ‚ท ์ •์ฑ…์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋Š” ์˜ต์…˜์ด ๋‚˜์˜ค๋Š”๋ฐ,
  • ํ™”๋ฉด ํ•˜๋‹จ์— ์žˆ๋Š” [๋ณ€๊ฒฝ ์‚ฌํ•ญ ์ €์žฅ] ๋ฒ„ํŠผ์„ ํด๋ฆญ

์•„๊นŒ ์—…๋กœ๋“œํ•œ hello.txt ํŒŒ์ผ์˜ ์ƒ์„ธ ์ •๋ณด์—์„œ ๊ฐ์ฒด URL์„ ๋ณต์‚ฌํ•ด์„œ ์ ‘์†ํ•ด๋ณด๋ฉด,

  • ์ ‘์†ํ•˜๋ฉด, AccessDenied ์—๋Ÿฌ ๋ฉ”์‹œ์ง€๊ฐ€ ๋‚˜์˜จ๋‹ค.
  • ์ด๋ ‡๊ฒŒ ๋˜๋Š” ์ด์œ ๋Š” ํ˜„์žฌ ์ •์ฑ…์—์„œ๋Š” hello.txt ๊ฐ์ฒด์˜ S3 URL๋กœ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

์ด๋ฒˆ์—๋Š” CloudFront๋ฅผ ํ†ตํ•ด์„œ ์ ‘์†ํ•ด๋ณธ๋‹ค.

  • [CloudFront] โ†’ [๋ฐฐํฌ] ์ƒ์„ธ ํŽ˜์ด์ง€์—์„œ ๋ฐฐํฌ ๋„๋ฉ”์ธ ์ด๋ฆ„์„ ๋ณต์‚ฌ.
  • ๋ฐฐํฌ ๋„๋ฉ”์ธ์„ ๋ณต์‚ฌํ•œ ์ดํ›„์— ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ ‘์†ํ•˜๋ฉด,
    • ๋ฃจํŠธ ๊ฐ์ฒด๋กœ ์ง€์ •ํ•œ hello.txt๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ๋‚˜์˜จ๋‹ค.
  • ๊ทธ ์ƒํƒœ์—์„œ ๋ธŒ๋ผ์šฐ์ € ๊ฐœ๋ฐœ์ž๋„๊ตฌ์˜ Newtwork ํƒญ์—์„œ ๋ฌธ์„œ๋ฅผ ํด๋ฆญํ•œ์ฑ„๋กœ ์ƒˆ๋กœ๊ณ ์นจ.
  • ํด๋ฆญํ•ด์„œ ์ƒ์„ธ ์ •๋ณด๋ฅผ ๋ณด๋ฉด
    • X-Cache : Miss from cloudfront๋ผ๊ณ  ๋˜์–ด ์žˆ๋Š” ์‘๋‹ต์„ ๋ณผ ์ˆ˜์žˆ๋‹ค.
  • cf. ์บ์‹œ์—๋Š” miss์™€ hit๋ผ๋Š” ์šฉ์–ด๊ฐ€ ์žˆ๋Š”๋ฐ,
    • ์บ์‹œ์—์„œ ๊ฐ€์ ธ์˜ฌ ๊ฒฝ์šฐ hit,
    • ์บ์‹œ์— ์—†์„ ๊ฒฝ์šฐ miss๋ผ๊ณ  ํ‘œํ˜„ํ•œ๋‹ค.
  • ๊ทธ๋ž˜์„œ ์ง€๊ธˆ์€ CloudFront์— ์บ์‹ฑ์ด ๋˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— miss๋ผ๊ณ  ๋‚˜์˜ค๋Š” ๊ฒƒ.
  • ์ด ์ƒํƒœ์—์„œ ์„ธ๋กœ๊ณ ์นจ์„ ๊ณ„์†ํ•˜๋‹ค ๋ณด๋ฉด,
    • X-Cache : Hit from cloudfront๋ผ๊ณ  ๋ฐ”๋€๋‹ค.
  • ์ด๋Š” CloudFront๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์—ฃ์ง€ ๋กœ์ผ€์ด์…˜์„ ํ†ตํ•ด ์บ์‹ฑ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜จ ๊ฒƒ์ด๋‹ค.

5. (์‹ค์Šต) CloudFront ๋ฐฐํฌ ์‚ญ์ œ

๋ฐฐํฌ๋ฅผ ์‚ญ์ œํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋จผ์ € ๋น„ํ™œ์„ฑํ™”๋ฅผ ํ•ด์•ผ ํ•œ๋‹ค.

  • [CloudFront] โ†’ [๋ฐฐํฌ]๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  • ์‚ญ์ œํ•  CloudFront ์„ ํƒํ•œ ์ดํ›„์— ๋น„ํ™œ์„ฑํ™” ๋ฒ„ํŠผ์„ ํด๋ฆญ.
  • ๊ทธ๋Ÿผ ํ™•์ธ ๋‹ค์ด์–ผ๋กœ๊ทธ๊ฐ€ ๋œจ๊ณ , [๋น„ํ™œ์„ฑํ™”] ๋ฒ„ํŠผ์„ ํด๋ฆญ.
    • cf. ๋น„ํ™œ์„ฑํ™”๊ฐ€ ์‹œ์ž‘๋˜๋Š”๋ฐ ์ด ์ž‘์—…๋„ ์•ฝ๊ฐ„ ์‹œ๊ฐ„์ด ์†Œ์š”๋จ.
  • ์–ด๋А ์ •๋„ ์‹œ๊ฐ„์ด ์ง€๋‚˜๋ฉด, [๋น„ํ™œ์„ฑํ™”]๊ฐ€ ์™„๋ฃŒ๋˜๊ณ ,
  • ์ด ์ƒํƒœ์—์„œ ๋‹ค์‹œ ์‚ญ์ œํ•  CloudFront ์„ ํƒํ•œ ์ดํ›„ [์‚ญ์ œ] ๋ฒ„ํŠผ์„ ํด๋ฆญ.
    • ๋‹ค์‹œ ํ•œ๋ฒˆ ๊ทธ๋Ÿผ ๋ฐฐํฌ๋ฅผ ์ •๋ง ์‚ญ์ œํ•  ๊ฒƒ์ธ์ง€ ๋ฌป๋Š” ๋‹ค์ด์–ผ๋กœ๊ทธ๊ฐ€ ๋‚˜์˜ค๊ณ ,
    • [์‚ญ์ œ] ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜์—ฌ ์‚ญ์ œํ•œ๋‹ค.
  • ์ด๋ ‡๊ฒŒ ํด๋ผ์šฐ๋“œ ํ”„๋ก ํŠธ ๋ฐฐํฌ๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์‚ญ์ œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.