Amazon ElastiCache Overview

  • RDS ์™€ ๋™์ผํ•œ ๋ฐฉ์‹์œผ๋กœ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ElastiCache๋Š” Redis ๋˜๋Š” Memcached ์™€ ๊ฐ™์€ ์บ์‹œ ๊ธฐ์ˆ ์„ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์บ์‹œ๋ž€, ๋†’์€ ์„ฑ๋Šฅ๊ณผ ๋‚ฎ์€ ์ง€์—ฐ ์‹œ๊ฐ„์„ ๊ฐ€์ง„ In-Memory DB ์ด๋‹ค.
  • ElastiCache๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด, Read ์ง‘์•ฝ์ ์ธ ์›Œํฌ๋กœ๋“œ์˜ ๋ถ€ํ•˜๋ฅผ ์ค„์ด๋Š”๋ฐ ๋„์›€์ด ๋œ๋‹ค.
  • ์ผ๋ฐ˜์ ์ธ ์ฟผ๋ฆฌ๊ฐ€ ์บ์‹œ ๋˜์–ด DB๊ฐ€ ๋งค๋ฒˆ ์ฟผ๋ฆฌ๋˜์ง€ ์•Š๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.
  • ์บ์‹œ๋Š” ์ด๋Ÿฌํ•œ ์ฟผ๋ฆฌ์˜ ๊ฒฐ๊ณผ๋ฅผ ๊ฒ€์ƒ‰ํ•  ๋•Œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  • App์˜ ์ƒํƒœ๋ฅผ ElastiCache์— ์ €์žฅํ•ด App๋ฅผ ๋ฌด์ƒํƒœ(stateless)๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.
  • RDS ์™€ ๊ฐ™์€ ์žฅ์ ์„ ๊ฐ–๊ธฐ ๋•Œ๋ฌธ์— AWS๋Š” ๋™์ผํ•œ ์œ ์ง€ ๋ณด์ˆ˜๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค.
    • ์šด์˜์ฒด์ œ, ํŒจ์น˜, ์ตœ์ ํ™”, ์„ค์ •, ๊ตฌ์„ฑ, ๋ชจ๋‹ˆํ„ฐ๋ง, ์žฅ์•  ํšŒ๋ณต, ๋ฐฑ์—…์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.
  • ElastiCache๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ App์— ๊ด€ํ•œ ๋ช‡ ๊ฐ€์ง€ ์–ด๋ ค์šด ์ฝ”๋“œ ๋ณ€๊ฒฝ์„ ์š”์ฒญํ•  ์ˆ˜๋„ ์žˆ๋‹ค.
    • ๋‹จ์ˆœํžˆ ํ™œ์„ฑํ™”๋ฅผ ์‹œํ‚ค๋Š”๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ง„์งœ๋กœ ์บ์‹œ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.
    • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ฟผ๋ฆฌ ์ „๊ณผ ํ›„์— ์บ์‹œ๋ฅผ ์ฟผ๋ฆฌํ•˜๋„๋ก App์˜ ์ฝ”๋“œ๋ฅผ ๋ณ€๊ฒฝํ•ด์•ผ ํ•œ๋‹ค.

ElastiCache Solution Architecture - DB Cache

image-20220628014124840

  • ElastiCache, RDS, APP ์ด ์žˆ๋‹ค.
  • App์€ Cache์— Query ํ•œ๋‹ค.
  • query๊ฐ€ ์ด๋ฏธ ์ƒ์„ฑ๋ฌ๋Š”์ง€, ์ด๋ฏธ ์ƒ์„ฑ๋˜์–ด cache์— ์ €์žฅ๋˜์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š”๊ฒƒ์€ Cache Hit ์บ์‹œํžˆํŠธ์ด๋‹ค.
  • ์ด๋Š” cache์—์„œ ๋ฐ”๋กœ ์‘๋‹ต์„ ์–ป์–ด์„œ ์ฟผ๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด DB ๋กœ ์ด๋™ํ•˜๋Š” ์‹œ๊ฐ„์„ ์ค„์—ฌ์ค€๋‹ค.
  • cache miss ์บ์‹œ๋ฏธ์Šค์˜ ๊ฒฝ์šฐ์—๋Š” DB์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์™€์„œ DB์—์„œ ์ฝ์Šต๋‹ˆ๋‹ค.
  • ๋™์ผํ•œ ์ฟผ๋ฆฌ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๋‹ค๋ฅธ App์ด๋‚˜ Instance์—์„œ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ cache์— ๋‹ค์‹œ ๊ธฐ๋กํ•˜์—ฌ
    ๋‹ค์Œ์—๋Š” ๊ฐ™์€ ์ฟผ๋ฆฌ๋กœ Cache Hit ๋ฅผ ์–ป๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.
  • RDS DB์— ๋ถ€ํ•˜๋ฅผ ์ค„์ด๋Š”๋ฐ ๋„์›€์„ ์ค€๋‹ค.
  • ๋ฐ์ดํ„ฐ๋ฅผ ์บ์‹œ์— ์ €์žฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์บ์‹œ ๋ฌดํšจํ™” ์ „๋žต์ด ์žˆ์–ด์•ผ ํ•œ๋‹ค.
  • ๊ฐ€์žฅ ์ตœ๊ทผ ๋ฐ์ดํ„ฐ๋งŒ ์‚ฌ์šฉํ•˜๋Š”์ง€ ํ™•์ธํ•ด์•ผ ํ•œ๋‹ค.
    • ์ด๊ฒƒ์ด ์บ์‹ฑ ๊ธฐ์ˆ  ์‚ฌ์šฉ๊ณผ ์—ฐ๊ด€๋œ ์–ด๋ ค์›€(๋‹จ์ ) ์ด๋‹ค.

ElastiCache Solution Architecture - User Session Store

image-20220628022747719

  • ์‚ฌ์šฉ์ž ์„ธ์…˜์„ ์ €์žฅํ•ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ฌด์ƒํƒœ๋กœ ๋งŒ๋“œ๋Š” ๊ฒƒ
  • ์‚ฌ์šฉ์ž๊ฐ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ชจ๋“  ๊ณ„์ •์— ๋กœ๊ทธ์ธํ•˜๋ฉด App์ด Cache์— ์„ธ์…˜๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋ก
  • ์‚ฌ์šฉ์ž๊ฐ€ App์˜ ๋‹ค๋ฅธ Instance๋กœ ๋ฆฌ๋‹ค์ด๋ ‰์…˜๋˜๋ฉด App์€ cache์—์„œ ์ง์ ‘ ์„ธ์…˜ ์บ์‹œ ๊ฒ€์ƒ‰
  • ๊ทธ๋ž˜์„œ ์‚ฌ์šฉ์ž๋Š” ๊ณ„์† ๋กœ๊ทธ์ธํ•œ ์ƒํƒœ๋กœ ํ•œ ๋ฒˆ ๋” ๋กœ๊ทธ์ธ ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค.
  • ์‚ฌ์šฉ์ž์˜ ์„ธ์…˜ ๋ฐ์ดํ„ฐ๋ฅผ cache์— ๊ธฐ๋กํ•ด์„œ App์„ ๋ฌด์ƒํƒœ(stateless)๋กœ ๋งŒ๋“œ๋Š” ๊ฒƒ

ElastiCache - Redis vs Memcached

๋ ˆ๋””์Šค์™€ ๋ฉค์บ์‹œ๋“œ ์ฐจ์ด ๋น„๊ต

image-20220628022846974

  • ๋ ˆ๋””์Šค
    • ์ž๋™ ์žฅ์•  ์กฐ์น˜ ๋‹ค์ค‘ AZ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ธฐ์ˆ 
    • ์ฝ๊ธฐ ์ „์šฉ Replica๋Š” ์ฝ๊ธฐ ์Šค์ผ€์ผ๋ง์— ์‚ฌ์šฉ๋˜๋ฉฐ, ๊ณ ๊ฐ€์šฉ์„ฑ์„ ๊ฐ€์ง„๋‹ค.
    • ์ง€์†์„ฑ์œผ๋กœ ์ธํ•ด ๋ฐ์ดํ„ฐ ๋‚ด๊ตฌ์„ฑ๋„ ์žˆ๋‹ค.
    • ๋ฐฑ์—…๊ณผ ๊ธฐ๋Šฅ๋ณต์›๋„ ์žˆ๋‹ค.
    • RDS์™€ ๋งŽ์ด ์œ ์‚ฌํ•˜๋‹ค.
  • ๋ฉค์บ์‹œ๋“œ
    • ๋ฐ์ดํ„ฐ ๋ถ„ํ• ์— ๋‹ค์ค‘๋…ธ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์ด๋ฅผ ์ƒค๋”ฉ(sharding) ์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
    • ๊ฐ€์šฉ์„ฑ์ด ๋†’์ง€์•Š๊ณ , ๋ณต์ œ๋„ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค.
    • ์ง€์†์ ์ธ ์บ์‹œ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.
    • ๋ฐฑ์—…๊ณผ, ๊ธฐ๋Šฅ๋ณต์›๋„ ์—†๋‹ค.
    • ๋‹ค์ค‘ ์Šค๋ ˆ๋“œ ์•„ํ‚คํ…์ฒ˜๋กœ, ๋ช‡๋ช‡ ์ƒค๋”ฉ๊ณผ ํ•จ๊ป˜ ์บ์‹œ์—์„œ ํ•จ๊ป˜ ์‹คํ–‰๋˜๋Š” ์—ฌ๋Ÿฌ ์ธ์Šคํ„ด์Šค๊ฐ€ ์žˆ๋‹ค.
  • ์ •๋ฆฌ
    • ๋ ˆ๋””์Šค๋Š” ๊ณ ๊ฐ€์šฉ์„ฑ, ๋ฐฑ์—…, ์ฝ๊ธฐ์ „์šฉ Replica๊ฐ€ ์žˆ๋‹ค.
    • ๋ฉค์บ์‹œ๋“œ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์†์‹คํ•  ์ˆ˜ ์—†๋Š” ๋‹จ์ˆœํ•œ ๋ถ„์‚ฐ ์บ์‹œ์ด๋‹ค.
    • ๊ฐ€์šฉ์„ฑ์ด ๋†’์ง€ ์•Š๊ณ , ๋ฐฑ์—…๊ณผ ๊ธฐ๋Šฅ๋ณต์›๋„ ์—†๋‹ค.

์ด๊ฒƒ์ด ๋ฐ”๋กœ ๋‘ ๊ธฐ์ˆ ์˜ ๊ฐ€์žฅ ํฐ ์ฐจ์ด์ ์ด๋‹ค.

๋Œ“๊ธ€๋‚จ๊ธฐ๊ธฐ