Caching

2024. 5. 26. 21:30ใ†์นดํ…Œ๊ณ ๋ฆฌ ์—†์Œ

 

๐Ÿ’ป ํ”„๋กœ์ ํŠธ ๊ฐ„๋žต ์†Œ๊ฐœ

'Cafe-On'์€ ์นดํŽ˜ ์Œ๋ฃŒ ์ฃผ๋ฌธ ์„œ๋น„์Šค๋กœ,
๊ณ ๊ฐ๋“ค์ด ๋Œ€๊ธฐ ์‹œ๊ฐ„์œผ๋กœ๋ถ€ํ„ฐ ์ž์œ ๋กญ๊ฒŒ ์นดํŽ˜์˜ ๋‹ค์–‘ํ•œ ์Œ๋ฃŒ๋ฅผ ์ฆ๊ธธ ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค.

 

๐Ÿค”ํŠน์ • ์นดํŽ˜์˜ ์ฟ ํฐ ์ด๋ฒคํŠธ๋กœ ์ธํ•ด ๋ฐ˜๋ณต์ ์ธ ๋ฉ”๋‰ด ์กฐํšŒ ์š”์ฒญ์ด ์˜ˆ์ƒ๋˜๋Š” ๊ฒฝ์šฐ๋ฅผ ๊ณ ๋ คํ•ด๋ณด์ž!


โœ ์นดํŽ˜ ๋ฉ”๋‰ด ์กฐํšŒ ๊ธฐ๋Šฅ์˜ ํŠน์ง•

  • ์นดํ…Œ๊ณ ๋ฆฌ ๋ณ„๋กœ ๋ถ„๋ฅ˜ํ•˜๊ณ  ํ•„ํ„ฐ๋ง์„ ํ†ตํ•ด ์‚ฌ์šฉ์ž๊ฐ€ ์›ํ•˜๋Š” ํ•ญ๋ชฉ์„ ์‰ฝ๊ฒŒ ์ฐพ์„ ์ˆ˜ ์žˆ๋„๋ก ์ œ๊ณต.
  • ๋‹ค์–‘ํ•œ ์ปคํ”ผ, ์Œ๋ฃŒ ๋ฉ”๋‰ด์˜ ๊ฐ€๊ฒฉ, ์„ค๋ช…, ์˜ต์…˜ ๋ฆฌ์ŠคํŠธ ๋“ฑ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํฌํ•จ
  • ๋ฉ”๋‰ด ๋ฐ์ดํ„ฐ๋Š” ๋ณ€๊ฒฝ๋˜๋Š” ๋นˆ๋„๊ฐ€ ๋‚ฎ์Œ
  • ํŠน์ • ๋ฉ”๋‰ด๋‚˜ ์˜ต์…˜์˜ ์žฌ๊ณ  ์ƒํƒœ๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ฐ˜์˜ํ•˜์—ฌ ํ’ˆ์ ˆ๋œ ๋ฉ”๋‰ด๋ฅผ ๋ฏธ๋ฆฌ ์•Œ๋ ค์คŒ.

 

โ˜ ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค๋กœ ์š”์ฒญ์„ ๋ณด๋‚ธ๋‹ค๋ฉด?

๋‹ค์–‘ํ•œ ๋ฉ”๋‰ด ํ•ญ๋ชฉ, ์กฐ๊ฑด์„ ํฌํ•จํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์—ฌ๋Ÿฌ๋ช…์ด ๋™์‹œ์— ์š”์ฒญํ•˜๊ฒŒ ๋˜๋ฉด

  • ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค์— ๋ฐ˜๋ณต์ ์ธ ์š”์ฒญ์ด ๋ฐœ์ƒํ•˜๋ฉฐ ํŠธ๋ž˜ํ”ฝ ์ฆ๊ฐ€
  • ํŽ˜์ด์ง€ ๋กœ๋”ฉ ์†๋„ ์ €ํ•˜ ๋ฐ ์„œ๋ฒ„ ์„ฑ๋Šฅ ์ €ํ•˜
  • ๋” ๋งŽ์€ ๋ฆฌ์†Œ์Šค ํ•„์š”๋กœ ์ธํ•œ ๋น„์šฉ ์ฆ๊ฐ€

 

โœŒ์ด๋ฅผ ๋Œ€๋น„ํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ด ์žˆ์„๊นŒ?

 

1. ์บ์‹ฑ

์บ์‹œ์˜์—ญ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์™€์„œ ์ ‘๊ทผํ•˜๋Š” ๋ฐฉ์‹

 

์บ์‹œ (Cache) ๋ž€?

์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ํŠน์ • ๊ณต๊ฐ„์— ์ €์žฅํ•ด๋‘์—ˆ๋‹ค๊ฐ€
๊ฐ™์€ ์š”์ฒญ์ด ์˜ค๋ฉด ์„œ๋ฒ„์— ๋‹ค์‹œ ์š”์ฒญํ•˜์ง€์•Š๊ณ  ์ €์žฅํ•ด๋†“์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋น ๋ฅด๊ฒŒ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•œ ์ž„์‹œ ์ €์žฅ์†Œ
์ฃผ๊ธฐ์–ต์žฅ์น˜์™€ CPU ์‚ฌ์ด์— ์œ„์น˜ํ•˜์—ฌ, ๋ฐ์ดํ„ฐ ์ ‘๊ทผ์‹œ๊ฐ„์„ ์ตœ์†Œํ™”ํ•œ๋‹ค.

 

 

๐Ÿš• ํ™œ์šฉ:

  1. ์†๋„ ํ–ฅ์ƒ : ์›๋ณธ ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•˜๋Š”๋ฐ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„ (A)์ด ์บ์‹œ์— ์ ‘๊ทผํ•˜๋Š” ์‹œ๊ฐ„(B)๋ณด๋‹ค ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋Š” ๊ฒฝ์šฐ (A > B)
  2. ๋ฐ˜๋ณต ์š”์ฒญ ์ตœ์ ํ™” : ๋ฐ˜๋ณต์ ์œผ๋กœ ๋™์ผํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋Œ๋ ค์ฃผ๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ๋งŽ๊ฑฐ๋‚˜ ๋งŽ์€ ์—ฐ์‚ฐ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ
  3. ๋ถ€ํ•˜ ๋ถ„์‚ฐ : ์ „์ฒด ํŽ˜์ด์ง€ ๋˜๋Š” ํŽ˜์ด์ง€์˜ ์ผ๋ถ€๋ฅผ ์บ์‹ฑํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ์„œ๋ฒ„ ๋ถ€ํ•˜๋ฅผ ์ค„์ด๋Š” ๊ฒฝ์šฐ

 

2. ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ๊ณผ ์Šค์ผ€์ผ๋ง

 

๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ : ์š”์ฒญ์„ ์—ฌ๋Ÿฌ ์„œ๋ฒ„์— ๋ถ„์‚ฐ์‹œ์ผœ ์„œ๋ฒ„์˜ ๋ถ€ํ•˜๋ฅผ ์ค„์ด๋Š” ๊ธฐ์ˆ 

์Šค์ผ€์ผ๋ง :

  • Scale-out : ์„œ๋ฒ„ ์ธ์Šคํ„ด์Šค๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ์‹œ์Šคํ…œ์˜ ์ฒ˜๋ฆฌ ๋Šฅ๋ ฅ์„ ํ™•์žฅ์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ•
  • Scale-up : ๊ธฐ์กด ์„œ๋ฒ„์˜ ํ•˜๋“œ์›จ์–ด ๋ฆฌ์†Œ์Šค๋ฅผ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜์—ฌ ์ฒ˜๋ฆฌ ๋Šฅ๋ ฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ•

 

๐Ÿš• ํ™œ์šฉ:

  1. ์„ฑ๋Šฅ ์š”๊ตฌ ํ™˜๊ฒฝ : ์„ฑ๋Šฅ์ด ์š”๊ตฌ๋˜๋Š” ํ™˜๊ฒฝ์ด๋‚˜ ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๊ฐ€ ์š”๊ตฌ๋˜๋Š” ํ™˜๊ฒฝ์—์„œ ํ•„์š”๋กœ ํ•จ 
  2. ํ™•์žฅ์„ฑ ํ–ฅ์ƒ : ์‹œ์Šคํ…œ์˜ ๋ณต์žก์„ฑ์€ ์ฆ๊ฐ€๋˜์ง€๋งŒ, ํ™•์žฅ์„ฑ๊ณผ ์„ฑ๋Šฅ์„ ํฌ๊ฒŒ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Œ

 

3. ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ ๋ฐ ํ

 

์ž‘์—…์˜ ์ฒ˜๋ฆฌ ์‹œ๊ฐ„์„ ๊ธฐ์ค€์œผ๋กœ ์ž‘์—…์„ ๋ถ„๋ฆฌํ•˜๊ณ ,

์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋Š” ์ž‘์—…์„ ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ์ฒ˜๋ฆฌํ•˜๋Š” ๋™์‹œ์— ๋‹ค๋ฅธ ์ž‘์—…์„ ๋น„๋™๊ธฐ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜์—ฌ

์‹œ์Šคํ…œ ์ „์ฒด ์‘๋‹ต์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚จ๋‹ค.

 

์ด ๊ณผ์ •์—์„œ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•ด ๋ฉ”์‹œ์ง€ ํ๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๋ฐ,

๋ฉ”์‹œ์ง€ ํ๋Š” FIFO ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๋ฉฐ, ๋“ค์–ด์˜จ ์š”์ฒญ์„ ์ž„์‹œ๋กœ ์Œ“์•„ ๋‘๊ณ  ์ˆœ์ฐจ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.

 

๐Ÿš• ํ™œ์šฉ:

  1. ์ž‘์—… ๋ถ„๋ฆฌ : ์‹œ๊ฐ„์ด ๋งŽ์ด ๊ฑธ๋ฆฌ๋Š” ์ž‘์—…๊ณผ ๋น ๋ฅด๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์ž‘์—…์„ ๋ถ„๋ฆฌํ•˜์—ฌ ํšจ์œจ์„ฑ์„ ๋†’์ž„
  2. ํŠธ๋ž˜ํ”ฝ ๊ด€๋ฆฌ :  ๋†’์€ ํŠธ๋ž˜ํ”ฝ ์ƒํ™ฉ์—์„œ๋„ ์•ˆ์ •์„ฑ์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์Œ
  3. ๋ฆฌ์†Œ์Šค ์ตœ์ ํ™” : ๋ฆฌ์†Œ์Šค ์‚ฌ์šฉ์„ ์ตœ์ ํ™”ํ•˜๊ณ , ์‹œ์Šคํ…œ ๋ถ€ํ•˜๋ฅผ ๋ถ„์‚ฐ์‹œํ‚ด

 

๐Ÿ‘์บ์‹œ๋ฅผ ์„ ํƒํ•˜๊ฒŒ ๋œ ์ด์œ 

 

* ๋น„์šฉ ํšจ์œจ์„ฑ 

- ์„œ๋ฒ„ ์ธ์Šคํ„ด์Šค ์ถ”๊ฐ€๋‚˜ ํ•˜๋“œ์›จ์–ด ์—…๊ทธ๋ ˆ์ด๋“œ๊ฐ€ ์ด๋ฃจ์–ด์งˆ ๋•Œ์™€ ๋น„๊ตํ•˜์—ฌ ๋น„์šฉ ๋Œ€๋น„ ํšจ๊ณผ๊ฐ€ ํฌ๋‹ค.

 

* ์‹ ์†ํ•œ ๊ตฌํ˜„๊ณผ ์ฆ‰๊ฐ์ ์ธ ์„ฑ๋Šฅ ๊ฐœ์„  

- ์บ์‹œ๋ฅผ ์„ค์ •ํ•˜๊ณ  ์ธํ”„๋ผ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๊ณผ์ •์ด ๊ฐ„ํŽธํ•˜๊ณ , ์ ์šฉ ํ›„ ์ฆ‰๊ฐ์ ์œผ๋กœ ์„ฑ๋Šฅ์„ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

* ๋น ๋ฅธ ์‘๋‹ต์„ฑ

- ๋ฉ”๋‰ด ์กฐํšŒ๋Š” ์‹ค์‹œ๊ฐ„ ๋น ๋ฅธ ์‘๋‹ต์ด ํ•„์š”ํ•œ๋ฐ, 

๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ์€ ์„œ๋ฒ„ ๋ถ€ํ•˜๋ฅผ ์ค„์ด๋Š” ๋ฐ๋Š” ํšจ๊ณผ์ ์ด๊ณ , ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ๋Š” ๊ธด ์ฒ˜๋ฆฌ ์‹œ๊ฐ„์„ ํ•„์š”๋กœ ํ•˜๋Š” ์ž‘์—…์—๋Š” ํšจ์œจ์ ์ด์ง€๋งŒ

๊ฐœ๋ณ„ ์‘๋‹ต ์†๋„๋ฅผ ์ง์ ‘์ ์œผ๋กœ ๊ฐœ์„ ํ•˜์ง€๋Š” ์•Š์œผ๋ฏ€๋กœ ์‹ค์‹œ๊ฐ„ ๋น ๋ฅธ ์‘๋‹ต์„ ์ œ๊ณตํ•˜๋Š” ์บ์‹œ๊ฐ€ ์ ํ•ฉํ•˜๋‹ค.

 

 

* ์บ์‹œ ์ „๋žต

1. Cache-Aside

๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•  ๋•Œ ์บ์‹œ์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๋Š”์ง€ ์šฐ์„ ์ ์œผ๋กœ ํ™•์ธํ•˜๋Š” ์ „๋žต (Cache hit)

์—†์„ ๊ฒฝ์šฐ DB์—์„œ ๋ฐ์ดํ„ฐ ์กฐํšŒํ•œ๋‹ค. (Cache miss)

 

๋ฐ˜๋ณต์ ์ธ ์ฝ๊ธฐ๊ฐ€ ๋งŽ์€ ๊ฒฝ์šฐ ์ ํ•ฉ

์บ์‹œ์™€ DB๊ฐ€ ๋ถ„๋ฆฌ๋˜์–ด์žˆ๊ธฐ๋•Œ๋ฌธ์— ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋งŒ ์บ์‹œ์— ์ €์žฅ ๊ฐ€๋Šฅ

 

2. Read-Through

 

1. Write-Through

2. Write-Around

3. Write-Behind

 

* ๋งŒ๋ฃŒ( Expiration )๊ธฐํ•œ ์ „๋žต 

๊ฐ ๋ฐ์ดํ„ฐ์— Time-To-Live๋ฅผ ์„ค์ •ํ•˜์—ฌ ์บ์‹œ์˜ ์ˆ˜๋ช…์„ ๊ฒฐ์ •ํ•œ๋‹ค.

๋งŒ๋ฃŒ ์‹œ๊ฐ„์„ ์„ค์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ์‚ญ์ œํ•˜์ง€ ์•Š๋Š” ํ•œ ์˜์›ํžˆ ์ €์žฅ๋œ๋‹ค.

์˜ค๋ž˜๋œ? / ๋นˆ๋„์ˆ˜?

 

 

 

 

 

----------------------------------------------------------------------------------------------------------------