๐Ÿ“‚ AWS/AWS Developer - Associate

[AWS] Developer Associate #5 ElastiCache

dhyuck 2024. 5. 24. 19:13
๋ฐ˜์‘ํ˜•

Cache์™€ Caching

  • ์ปดํ“จํ„ฐ ๊ณผํ•™์—์„œ ์บ์‹œ(Cache)๋Š” ์ผ์‹œ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๊ณ ์† ๋ฐ์ดํ„ฐ ์Šคํ† ๋ฆฌ์ง€ ๊ณ„์ธต์ž…๋‹ˆ๋‹ค.
  • ์บ์‹ฑ(Caching)์€ ์บ์‹œ ๋˜๋Š” ์ž„์‹œ ์ €์žฅ ์œ„์น˜์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜์—ฌ ๋ณด๋‹ค ๋น ๋ฅด๊ฒŒ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ํ”„๋กœ์„ธ์Šค์ž…๋‹ˆ๋‹ค.
  • ์บ์‹œ์™€ ์บ์‹ฑ์˜ ์ฃผ์š” ๋ชฉ์ ์€ ๋” ๋Š๋ฆฐ ์Šคํ† ๋ฆฌ์ง€์— ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์„ ์ค„์ž„์œผ๋กœ์จ ์„ฑ๋Šฅ์„ ๋†’์ด๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
  • ์บ์‹ฑ์„ ์‚ฌ์šฉํ•˜๋ฉด ์ด์ „์— ๊ฒ€์ƒ‰ํ•˜๊ฑฐ๋‚˜ ๊ณ„์‚ฐํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์†๋„๋ฅผ ์œ„ํ•ด ์šฉ๋Ÿ‰์„ ์ ˆ์ถฉํ•˜๋Š” ์บ์‹œ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์ „์ฒด ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜์ง€ ์•Š๊ณ  ๋ฐ์ดํ„ฐ์˜ ์ผ๋ถ€๋ถ„๋งŒ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
  • ์บ์‹œ๋Š” OS, CDN, DNS, ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋“ฑ ๋‹ค์–‘ํ•œ ๊ณณ์—์„œ ํ™œ์šฉ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์บ์‹œ์˜ ๋ฐ์ดํ„ฐ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ RAM(Random Access Memory)๊ณผ ๊ฐ™์ด ๋น ๋ฅด๊ฒŒ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋Š” ํ•˜๋“œ์›จ์–ด์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.
  • ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์บ์‹œ์— ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ๋ฅผ ์บ์‹œ ์ ์ค‘(cache hit)์ด๋ผ๊ณ  ํ•˜๋ฉฐ, ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์บ์‹œ์— ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๋ฅผ ์บ์‹œ ๋น„์ ์ค‘(cache miss)์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
  • ์บ์‹œ ์ ์ค‘๋ฅ (hit rate)๋ฅผ ๋†’์ด๊ธฐ ์œ„ํ•ด์„œ๋Š” TTL(Time to Live)๊ณผ ์บ์‹œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ ์ ˆํžˆ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.
  • AWS๋Š” In-memory cache ์„œ๋น„์Šค๋กœ ElastiCache์™€ In-memory database๋กœ MemoryDB๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

Caching Best Practices

  • ๋ฐ์ดํ„ฐ๊ฐ€ ์บ์‹ฑ์— ์ ํ•ฉํ•œ์ง€ ํ™•์ธํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๊ฐ€ ์ž์ฃผ ๋ณ€๊ฒฝ๋˜๊ฑฐ๋‚˜ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์— ๋”ฐ๋ผ ์บ์‹ฑ์ด ์ ์ ˆํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • Lazy caching ๋˜๋Š” lazy population, cache-aside๋ผ๊ณ  ํ•˜๋Š” ์บ์‹ฑ ๋””์ž์ธ ํŒจํ„ด์€ ๊ฐ€์žฅ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ์บ์‹ฑ ํ˜•ํƒœ์ž…๋‹ˆ๋‹ค.
  • Lazy caching์€ ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์บ์‹œ์— ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ๋ฐ์ดํ„ฐ๊ฐ€ ์—†๋‹ค๋ฉด origin์— ์ฟผ๋ฆฌํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ํ™•์ธํ•˜๊ณ  ์บ์‹œ์— ์ €์žฅํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

  • Write-through๋Š” origin์— ๋ฐ์ดํ„ฐ๊ฐ€ ์—…๋ฐ์ดํŠธ๋  ๋•Œ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์บ์‹œ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋Š” ์ „๋žต์ž…๋‹ˆ๋‹ค.

  • Write-through๋กœ ๊ฐฑ์‹ ๋˜๋Š” cache ์™ธ์— ๋ชจ๋“  ์บ์‹œ์— TTL(Time to Live)๋ฅผ ์ ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

ElastiCache

  • ElastiCache๋Š” Redis์™€ Memcached์™€ ์™„๋ฒฝํ•˜๊ฒŒ ํ˜ธํ™˜๋˜๋Š” ์™„์ „ ๊ด€๋ฆฌํ˜• In-memory cache ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค.
  • ElastiCache๋Š” ์ฝ๊ธฐ ์†๋„๊ฐ€ ๋Š๋ฆฐ ๋””์Šคํฌ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๋Š” ๋Œ€์‹  ์ฝ๊ธฐ ์†๋„๊ฐ€ ๋น ๋ฅธ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๋„๋ก ํ•˜์—ฌ ์ฝ๊ธฐ ์ž‘์—…์ด ๋งŽ์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค.
  • ElastiCache๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ์บ์‹œ๋กœ ์‚ฌ์šฉ๋˜๊ฑฐ๋‚˜ ์„ธ์…˜ ์ €์žฅ์†Œ, ๊ฒŒ์ž„ ์ˆœ์œ„ ๋Œ€์‹œ๋ณด๋“œ, ์• ๋„๋ฆฌํ‹ฑ์Šค ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ ๋“ฑ์˜ ์ž„์‹œ ๋ฐ์ดํ„ฐ ์Šคํ† ์–ด๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
  • ElastiCache๋Š” CloudWatch ๋ชจ๋‹ˆํ„ฐ๋ง์™€ ํ†ตํ•ฉ๋˜์–ด ์บ์‹œ ๋ฆฌ์†Œ์Šค์™€ ๊ด€๋ จ๋œ ์ฃผ์š” ์„ฑ๋Šฅ ์ง€ํ‘œ์— ๋Œ€ํ•œ ํ–ฅ์ƒ๋œ ๊ฐ€์‹œ์„ฑ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • ElastiCache๋Š” ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ๊ธ‰ ๋ณด์•ˆ ๋ฐ ์‹ ๋ขฐ์„ฑ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

ElastiCache Serverless

  • ElastiCache Serveless๋Š” ์ธํ”„๋ผ ํ”„๋กœ๋น„์ €๋‹์ด๋‚˜ ์šฉ๋Ÿ‰ ๊ณ„ํš(capacity planning) ์—†์ด ElastiCache๋ฅผ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๋Š” ์˜ต์…˜์œผ๋กœ 2023๋…„ re:Invent์—์„œ ๊ณต๊ฐœ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ๋ฉ”๋ชจ๋ฆฌ ๋ฐ ๋„คํŠธ์›Œํฌ ์‚ฌ์šฉ๋ฅ ์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜์—ฌ ์ ์ ˆํ•œ ์šฉ๋Ÿ‰ ๊ณ„ํš์„ ์„ธ์šฐ๋Š” ๊ณผ์ • ์—†์ด๋„ ๊ฐ€์žฅ ๊นŒ๋‹ค๋กœ์šด ์›Œํฌ๋กœ๋“œ์— ๋Œ€ํ•ด ์บ์‹œ๋ฅผ ์šด์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ElastiCache Serverless๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์šฉ ์˜์—ญ์— ๊ฑธ์ณ ๋ฐ์ดํ„ฐ๋ฅผ ์ž๋™์œผ๋กœ ๋ณต์ œํ•˜๊ณ  ๊ฐ ์บ์‹œ์— ๋Œ€ํ•ด 99.99% ๊ฐ€์šฉ์„ฑ ์„œ๋น„์Šค ์ˆ˜์ค€ ๊ณ„์•ฝ(SLA)์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • ElastiCache๋Š” ์„ ๊ฒฐ์ œ ๋น„์šฉ์ด ์—†๊ณ  ์‚ฌ์šฉํ•œ ๋ฆฌ์†Œ์Šค ๋งŒํผ์˜ ๋น„์šฉ๋งŒ ์ง€๋ถˆํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๋น„์šฉ์€ ๋ฐ์ดํ„ฐ ์Šคํ† ๋ฆฌ์ง€์™€ ElastiCache Processing Units(ECPUs)์œผ๋กœ ์‚ฐ์ •๋ฉ๋‹ˆ๋‹ค.

ElastiCache Redis์™€ Memcached

  • Redis ์—”์ง„์€ backup๊ณผ restore, fail-over์„ ์ง€์›ํ•˜์ง€๋งŒ Memcached ์—”์ง„์€ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • Redis ์—”์ง„์€ replication์„ ํ†ตํ•ด ์—ฌ๋Ÿฌ๊ฐœ์˜ ๋ณต์ œ๋ณธ์œผ๋กœ ์ฝ๊ธฐ๋ฅผ ํ™•์žฅํ•  ์ˆ˜ ์žˆ์œผ๋‚˜ Memcached ์—”์ง„์€ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • Redis ์—”์ง„์€ ์‹ฑ๊ธ€ ์Šค๋ ˆ๋“œ์ด์ง€๋งŒ Memcached ์—”์ง„์€ ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
  • Redis ์—”์ง„์€ Memcached ์—”์ง„์— ๋น„ํ•ด list, set, sorted set, hyperloglogs ๋“ฑ ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
  • Redis ์—”์ง„์€ Lua ์Šคํฌ๋ฆฝํŒ…, Geospatial ๋ฐ์ดํ„ฐ, Pub/Sub ๋ฉ”์‹œ์ง•์„ ์ง€์›ํ•˜์ง€๋งŒ Memcached ์—”์ง„์€ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

ElastiCache Redis์™€ MemoryDB Redis

  • ElastiCache Redis๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฐ ๋ฐ์ดํ„ฐ ์Šคํ† ์–ด์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์บ์‹œํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค. ์›Œํฌ๋กœ๋“œ๋ฅผ ์บ์‹ฑํ•˜์—ฌ ๋ฐ์ดํ„ฐ ์ฝ๊ธฐ ์†๋„๋ฅผ ๊ฐ€์†ํ™”ํ•˜๋ ค๋ฉด ElastiCache Redis๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • MemoryDB Redis๋Š” ๋‚ด๊ตฌ์„ฑ์ด ๋›ฐ์–ด๋‚œ in-memory ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ ์ดˆ๊ณ ์† ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋‚ด๊ตฌ์„ฑ๊ณผ ์„ฑ๋Šฅ์„ ์œ„ํ•ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์บ์‹œ๋กœ ๋Œ€์ฒดํ•˜๊ณ ์ž ํ•œ๋‹ค๋ฉด MemoryDB๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
๋ฐ˜์‘ํ˜•