ElastiCache - Cache Security

์บ์‹œ ๋ณด์•ˆ์„ ์•Œ์•„๋ณด์ž

image-20220629014159919

  • ElastiCache ์˜ ๋ชจ๋“  ์บ์‹œ๋“ค (redis, memcached)
    • IAM ์ธ์ฆ์„ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค.
    • ์บ์‹œ์—์„œ IAM ์ •์ฑ…์€ AWS API ์ˆ˜์ค€ ๋ณด์•ˆ์—๋งŒ ์‚ฌ์šฉ๋œ๋‹ค.
  • Redis Auth
    • ๋ ˆ๋””์Šค ์ธ์ฆ์„ ํ•˜๋ ค๋ฉด Redis Auth๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.
    • Redis Cluster ๋ฅผ ์ƒ์„ฑํ• ๋•Œ, password ๋˜๋Š” token ์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ์บ์‹œ์— ๋“ค์–ด๊ฐˆ ๋•Œ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.
    • ์บ์‹œ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ณด์•ˆ๊ทธ๋ฃน์— ๋Œ€ํ•œ ์ถ”๊ฐ€์ ์ธ ์ˆ˜์ค€์˜ ๋ณด์•ˆ์ด๋‹ค.
    • ์ „์†ก ์ค‘ ์•”ํ˜ธํ™”๋ฅผ ์œ„ํ•ด SSL ๋ณด์•ˆ์„ ์ง€์›ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • Memcached
    • SASL ๊ธฐ๋ฐ˜์˜ ์ธ์ฆ์„ ์ง€์›ํ•œ๋‹ค. (์ข€๋” ๋†’์€ ๋ณด์•ˆ์ˆ˜์ค€)
      • ๊ณ ๊ธ‰ ์ข…๋ฅ˜์˜ ์ธ์ฆ ๋งค์ปค๋‹ˆ์ฆ˜

EC2 Instance ์ž์ฒด ๋ณด์•ˆ๊ทธ๋ฃน(SG)๋„ Redis์— Accesํ•  ์ˆ˜ ์žˆ๋Š” ์ž์ฒด ๋ณด์•ˆ ๊ทธ๋ฃน์ด ์žˆ๋‹ค.
๊ทธ๋ž˜์„œ ์ผ๋ผ์Šคํ‹ฑ ์บ์‹œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ณด์•ˆ๊ทธ๋ฃน ์ˆ˜์ค€์˜ ๋ณด์•ˆ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.
๋˜ํ•œ ์ธ์ฆ์„ ์œ„ํ•ด Cache์—์„œ Redis ์ข…๋ฅ˜์˜ ์บ์‹œ๋ฅผ ์‚ฌ์šฉํ• ๋•Œ Redis Auth๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค.

Patterns for ElastiCache

์ผ๋ผ์Šคํ‹ฑ ์บ์‹œ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๋Š” ํŒจํ„ด 3๊ฐ€์ง€๋ฅผ ์•Œ์•„๋ณด์ž

image-20220629014213313

  • Lazy Loading
    • ๋ชจ๋“  ์ฝ๊ธฐ ๋ฐ์ดํ„ฐ๋Š” ์บ์‹œ๋˜๊ณ , ๋ฐ์ดํ„ฐ๊ฐ€ ์บ์‹œ์—์„œ ๋ถ€์‹คํ•ด์งˆ ์ˆ˜ ์žˆ๋‹ค.
    • Cache์— ์บ์‹œ๊ฐ€ ํžˆํŠธํ•˜๋ฉด App์ด Cache๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›๋Š”๋‹ค.
    • ๋งŒ์ผ Cache ๋ฏธ์Šค๊ฐ€ ์žˆ์œผ๋ฉด DB์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ณ  Cache์— ์ €์žฅ์‹œํ‚จ๋‹ค.
    • ์บ์‹œ ํžˆํŠธ๊ฐ€ ์—†์„๋•Œ๋งŒ ๋ฐœ์ƒํ•˜๊ธฐ ๋•Œ๋ฌธ์— Lazy Loading ์ด๋ผ๊ณ  ํ•œ๋‹ค.
  • Write Through
    • DB์— Write ํ• ๋•Œ ์บ์‹œ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์—…๋ฐ์ดํŠธ ํ•˜๋Š” ๊ฒƒ
  • Session Store
    • ์บ์‹œ๋ฅผ ์„ธ์…˜์ €์žฅ์†Œ๋กœ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•˜๋‹ค. (TTL ์†์„ฑ์œผ๋กœ ์„ธ์…˜์„ ๋งŒ๋ฃŒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.)
    • TTL (Time to Live)

ElastiCache - Redis Use Case

Redis ์‚ฌ์šฉ์‚ฌ๋ก€

image-20220629014939481

  • ๊ฒŒ์ž„ ๋ฆฌ๋”๋ณด๋“œ ์ƒ์„ฑ์— ๋Œ€ํ•œ ๊ฒƒ
    • ๊ฒŒ์ž„ ์–ด๋Š ์‹œ์ ์— ๋ˆ„๊ฐ€ 1์œ„๊ณ  2์œ„๊ณ  3์œ„์ธ์ง€ ๊ฐ€๋ ค๋‚ด๋Š” ๊ฐœ๋…
    • ์ผ์ข…์˜ Ranking ์‹œ์Šคํ…œ
  • ๋ ˆ๋””์Šค ์ž๋ฃŒ๊ตฌ์กฐ์ค‘ ๊ณ ์œ ์„ฑ๊ณผ ์š”์†Œ ์ˆœ์„œ๋ฅผ ๋ชจ๋‘ ๋ณด์žฅํ•˜๋Š” Sorted Set ์ž๋ฃŒํ˜•์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ๋‹ค.
  • ์š”์†Œ๊ฐ€ ์ถ”๊ฐ€๋  ๋•Œ๋งˆ๋‹ค ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ˆœ์œ„๊ฐ€ ๋งค๊ฒจ์ง„ ๋‹ค์Œ ์˜ฌ๋ฐ”๋ฅธ ์ˆœ์„œ๋กœ ์ถ”๊ฐ€๋œ๋‹ค.
    • Redis Cluster ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ์‹ค์‹œ๊ฐ„์œผ๋กœ 1์œ„, 2์œ„, 3์œ„ ํ”Œ๋ ˆ์ด์–ด๊ฐ€ ์žˆ๋Š” ์‹ค์‹œ๊ฐ„ ๋ฆฌ๋”๋ณด๋“œ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค๋Š” ๊ฐœ๋…
    • ๋ชจ๋“  Redis Cache๋Š” ๋™์ผํ•œ ๋ฆฌ๋”๋ณด๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ์ฆ‰ Redis๋กœ Amazon ElastiCache ์™€ ํ†ต์‹ ํ•  ๋•Œ ํด๋ผ์ด์–ธํŠธ๋Š” ์‹ค์‹œ๊ฐ„ ๋ฆฌ๋”๋ณด๋“œ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๊ณ 
      App์ธก์—์„œ๋Š” ์ด ๊ธฐ๋Šฅ์„ ํ”„๋กœ๊ทธ๋ž˜๋ฐํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค.
    • ์‹ค์‹œ๊ฐ„ ๋ฆฌ๋”๋ณด๋“œ์— ์•ก์„ธ์Šค ํ•˜๊ธฐ ์œ„ํ•ด Redis์˜ Sorted Set ์ž๋ฃŒํ˜•์„ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.

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