๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ‘จ‍๐Ÿ’ปDevOps/AWS

CloudFront, Error Cache ์‚ฝ์งˆ๊ธฐ

by YangsDev 2020. 1. 6.

์ตœ๊ทผ์— ๋‚˜์—๊ฒŒ ์žˆ์—ˆ๋˜ ์‚ฝ์งˆ๊ธฐ๋ฅผ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์€ ๊ฒช์ง€ ์•Š๊ธฐ๋ฅผ ๋ฐ”๋ผ๋ฉฐ ๊ธ€์„ ์ ์–ด๋ณธ๋‹ค.

๋‚ด๊ฐ€ ๋‹ค๋‹ˆ๊ณ  ์žˆ๋Š” ํšŒ์‚ฌ์—์„œ ์‹ ๊ทœ API์„œ๋ฒ„๋ฅผ ์˜คํ”ˆํ•˜์˜€๋Š”๋ฐ, AWS CloudFront(์ดํ•˜CF)๋ฅผ ๋ถ™์—ฌ์„œ ์„œ๋น„์Šค๋ฅผ ์˜คํ”ˆํ•˜์˜€๋‹ค.

์ด API ์„œ๋ฒ„๋Š” ๊ฒฐ๊ณผ๊ฐ€ ์žˆ๋‹ค๋ฉด 200 OKAY ์—†์œผ๋ฉด 404๋ฅผ ์ฃผ๋Š” ๋งค์šฐ ๊ฐ„๋‹จํ•œ ์„œ๋ฒ„์˜€๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์„œ๋น„์Šค๋ฅผ ๋ฐฐํฌํ•˜๊ณ  ์‹ค์„œ๋ฒ„์—์„œ ์ตœ์ข… ํ…Œ์ŠคํŠธ๋ฅผ ํ•ด๋ณด๊ณ  ์žˆ๋Š”๋ฐ, ํ…Œ์ŠคํŠธ ์„œ๋ฒ„์—์„œ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š” ๋ฌธ์ œ๊ฐ€ AWS CloudFront์˜ ์„ค์ • ๋ฏธ์Šค๋กœ ์ธํ•˜์—ฌ, ์‹ค ์„œ๋ฒ„์—์„œ ๋ฐœ์ƒํ•˜๋Š”๊ฒƒ์ด์—ˆ๋‹ค.

์ด ๊ธ€์€ ๊ทธ ์ด์Šˆ๋ฅผ ํ•ด๊ฒฐ ํ•œ ์ด์•ผ๊ธฐ์ด๋‹ค.

๊ฒฐ๊ณผ๊ฐ€ ๋””๋น„์— ์žˆ๋Š”๋ฐ ์™œ ์‹ค์„œ๋ฒ„๋Š” ๊ฒฐ๊ณผ๋ฅผ ์•ˆ์ฃผ์ง€?

QA์กฐ์ง์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์˜ฌ๋ ธ์œผ๋‚˜, ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ค์ง€ ์•Š๋Š”๋‹ค ๋ผ๋Š” ์ด์•ผ๊ธฐ๋ฅผ ๋“ฃ๊ณ  ํ™•์ธ์„ ํ•ด๋ณด์•˜๋‹ค.

๋ถ„๋ช… DB์—๋Š” ์žˆ๋‹ค.. ์ง„์งœ ์žˆ๋‹ค.. ์ •๋ง ์žˆ๋Š”๋ฐ, ์‹ค์ œ ์„œ๋ฒ„์—์„œ ์‘๋‹ต์ด ์•ˆ์˜ค๋Š”๊ฒƒ์ด์—†๋‹ค.

๋ฌด์Šจ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ฒผ๋Š”๊ฐ€ ํ•˜๊ณ  ๋กœ์ปฌ์— ๋”๋ฏธ ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ์–ด์„œ ํ…Œ์ŠคํŠธ๋„ ํ•ด๋ณด๊ณ  ๋‹ค ํ•ด๋ณด์•˜์ง€๋งŒ.. ํ…Œ์ŠคํŠธ ์„œ๋ฒ„์˜ ๊ฒฐ๊ณผ์—์„œ๋Š” 200 OKAY์˜€์ง€๋งŒ, ์‹ค ์„œ๋ฒ„์—์„œ๋งŒ 404๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ค๊ณ  ์žˆ๋Š”๊ฒƒ์ด์—ˆ๋‹ค.

์—„์ฒญ๋‚œ ๋ฉ˜ํƒˆ๋ถ•๊ดด๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ์ด ์‹œ์ ์— ๋ฌธ๋“ ๋จธ๋ฆฌ์†์—์„œ Invalidation์„ ํ•œ๋ฒˆ ํ•ด๋ด์•ผ๊ฒ ๋‹ค. ๋ผ๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค.

Invalidation์„ ๋‚ ๋ฆฌ๊ณ , ๋‹ค์‹œ ํ™•์ธ์„ ํ•ด๋ณด๋‹ˆ ๋†€๋ž๊ฒŒ๋„ ๊ฒฐ๊ณผ๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ๋‚ด๋ ค์˜ค๋Š”๊ฒƒ์ด์—ˆ๋‹ค.

AWS CloudFront๊ฐ€ Cache ํ•˜๋Š” ๋ฐฉ๋ฒ•

์ฒ˜์Œ์— ๋‚ด๊ฐ€ ์ƒ๊ฐํ–ˆ๋˜ Cache ์ „๋žต์€ 100 ~ 3xx (HTTP ์„ฑ๊ณต)์— ๋Œ€ํ•œ ๊ฒฐ๊ณผ๋งŒ Cache ํ• ๊ฒƒ์ด๋ผ๊ณ  ๋ฌด์˜์‹์ ์œผ๋กœ ์ƒ๊ฐ ํ•˜๊ณ  ์žˆ์—ˆ๋‹ค.

ํ•˜์ง€๋งŒ, ๋‚ด๊ฐ€ ์ƒ๊ฐํ–ˆ๋˜ ๋ฐฉ์‹๊ณผ ๋‹ฌ๋ž๋˜๊ฒƒ์ด ์ด ๋ฌธ์ œ์˜ ์‹œ๋ฐœ์ ์ด์—ˆ๋‹ค.

์ผ๋‹จ ๊ธฐ๋ณธ์ ์œผ๋กœ ์•„๋งˆ์กด์€ Origin ์„œ๋ฒ„์—์„œ ์‘๋‹ต์„ ๋ชจ๋‘ Cache ํ•˜๊ฒŒ ๋œ๋‹ค.

์ด๋œป์€ ๊ฒฐ๋ก ์ ์œผ๋กœ 400 ~ 5xx (์˜ค๋ฅ˜ or ์‹คํŒจ) ์—ญ์‹œ Cache ๋˜์–ด๋ฒ„๋ฆฐ๋‹ค๋Š” ๋œป์ด๋‹ค.

์œ„์—์„œ ์ด์•ผ๊ธฐ ํ–ˆ๋˜๊ฒƒ์ฒ˜๋Ÿผ, ๋‚ด๊ฐ€ ๋งŒ๋“  API์„œ๋ฒ„๋Š” ์ฒ˜์Œ์—๋Š” 404์˜ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ค๋‹ค๊ฐ€ ๋ฐ์ดํ„ฐ๊ฐ€ ๋“ค์–ด์˜ค๋ฉด 200์œผ๋กœ ๋ฐ”๋€Œ๋Š” ์„œ๋ฒ„๋‹ค.

๋‹น์—ฐํžˆ, ์ฒ˜์Œ ์š”์ฒญํ–ˆ์„๋•Œ 404๋ฅผ CloudFront๊ฐ€ Cacheํ•˜๊ธฐ ๋•Œ๋ฌธ์— MAX TTL ์‹œ๊ฐ„์ด ์ง€๋‚ ๋•Œ๊นŒ์ง€ ๊ฒฐ๊ณผ๋Š” 404๋กœ Cache๋˜๊ฒŒ ๋˜๋Š”๊ฒƒ์ด๋‹ค.

AWS CloudFront์—์„œ Error Status Code์— ๋Œ€ํ•œ Cache์ „๋žต ๋ณ€๊ฒฝ ๋ฐฉ๋ฒ•

How CloudFront Processes and Caches HTTP 4xx and 5xx Status Codes from Your Origin - Amazon…
Describes how CloudFront processes and caches HTTP status codes for when errors occur.docs.aws.amazon.com

ํ•ด๋‹น ์ด์Šˆ๋ฅผ ํ•ด๊ฒฐ ํ•˜๊ธฐ ์œ„ํ•˜์—ฌ, ๊ตฌ๊ธ€์„ ํ†ตํ•ด ๊ฒ€์ƒ‰์„ ํ•ด๋ณธ ๊ฒฐ๊ณผ ์—ญ์‹œ๋‚˜ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ๋‚˜์™€ ๋น„์Šทํ•œ ์ด์Šˆ๋กœ ์‚ฝ์งˆ์„ ํ•˜๊ณ  ์žˆ์—ˆ๋‹ค.

์ด์ œ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐ ํ•  ๋ฐฉ๋ฒ•์„ ์ •๋ฆฌ ํ•ด๋ณด๋ฉด, ์šฐ์„  CF์„ค์ •์œผ๋กœ ๋“ค์–ด๊ฐ„๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ƒ๋‹จ ํƒญ์ค‘ “Error Pages” ํƒญ์„ ์„ ํƒํ•˜๊ณ  Create Custom Error Response๋ฅผ ํด๋ฆญํ•œ๋‹ค.

๊ทธ๋Ÿผ, ์ •์ฑ…์„ ๋ณ€๊ฒฝํ•  Error Status Code์™€ Cache TTL์„ ์ง€์ •ํ• ์ˆ˜์žˆ๊ฒŒ ๋œ๋‹ค.

์ด๋ ‡๊ฒŒ ๋˜๋ฉด Error๋ฅผ Cache ํ•˜๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐ ํ•  ์ˆ˜ ์žˆ๋‹ค.

๋งˆ์น˜๋ฉฐ

์‚ฌ์‹ค ์ฒ˜์Œ์— ๋˜๊ฒŒ ๋‹นํ™ฉ์Šค๋Ÿฌ์šด ์ด์Šˆ์˜€๋‹ค. ๋ถ„๋ช… ๋””๋น„์— ๊ฒฐ๊ณผ๊ฐ€ ์žˆ๋Š”๋ฐ ๊ฒฐ๊ณผ๊ฐ€ ์—†๋‹ค๊ณ  ํ•˜๋Š” ๋ฉ”์„ธ์ง€๊ฐ€ ๋‚˜์˜ค๊ณ  ์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

ํ•˜์ง€๋งŒ, ์ฒ˜์Œ์— ์„œ๋ฒ„์˜ ์•„ํ‚คํ…์ฒ˜๋ฅผ ์„ค๊ณ„ ํ–ˆ์„๋•Œ, CF์— ๋Œ€ํ•ด ์กฐ๊ธˆ๋งŒ ๋” ๊นŠ๊ฒŒ ์•Œ์•„๋ดค์œผ๋ฉด ์ด๋Ÿฐ ์ด์Šˆ๋Š” ์—†์—ˆ์„๊ฒƒ๊ฐ™์€๋ฐ, ์ด ๋ถ€๋ถ„์— ๋Œ€ํ•ด์„œ๋Š” ์•ž์œผ๋กœ ์กฐ๊ธˆ ๋” ์กฐ์‹ฌํ•ด์•ผ ํ•  ๋ถ€๋ถ„์ด๋ผ๊ณ  ์ƒ๊ฐ๋œ๋‹ค.

์–ด์จŒ๋“ , ๋‚˜์™€ ๊ฐ™์€ ์ด์Šˆ๋ฅผ ๊ฒช๋Š” ์‚ฌ๋žŒ์ด ์ด ๊ธ€์„ ๋ณด๊ณ  ๋ช…์พŒํ•˜๊ฒŒ ํ•ด๊ฒฐ ํ–ˆ์œผ๋ฉด ํ•˜๋Š” ๋ฐ”๋žจ๊ณผ ํ•จ๊ป˜ ์ด ๊ธ€์„ ๋งˆ์น˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๋Œ“๊ธ€