Redis๋ฅผ ์‚ฌ์šฉํ•œ ๋ถ„์‚ฐ ์ž ๊ธˆ

ํ—ค์ด ํ•˜๋ธŒ๋ฅด!

์˜ค๋Š˜ ์šฐ๋ฆฌ๋Š” Redis๋ฅผ ์‚ฌ์šฉํ•œ ๋ถ„์‚ฐ ์ž ๊ธˆ ๊ตฌํ˜„์— ๊ด€ํ•œ ๋ณต์žกํ•œ ๊ธฐ์‚ฌ์˜ ๋ฒˆ์—ญ์„ ์†Œ๊ฐœํ•˜๊ณ  Redis์˜ ์ „๋ง์— ๋Œ€ํ•ด ์ฃผ์ œ๋กœ ์ด์•ผ๊ธฐํ•˜๋„๋ก ์ดˆ๋Œ€ํ•ฉ๋‹ˆ๋‹ค. "๋ผ๋Š” ์ฑ…์˜ ์ €์ž์ธ Martin Kleppmann์ด ๋ฌธ์ œ์˜ Redlock ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋ถ„์„ํ–ˆ์Šต๋‹ˆ๋‹ค.๊ณ ๋ถ€ํ•˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜", ์ฃผ์–ด์ง„ ์—ฌ๊ธฐ์—.

๋ถ„์‚ฐ ์ž ๊ธˆ์€ ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ƒํ˜ธ ๋ฐฐํƒ€์ ์ธ ๋ฐฉ์‹์œผ๋กœ ๊ณต์œ  ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•ด ์ž‘์—…ํ•ด์•ผ ํ•˜๋Š” ๋งŽ์€ ํ™˜๊ฒฝ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๋งค์šฐ ์œ ์šฉํ•œ ๊ธฐ๋ณธ ์š”์†Œ์ž…๋‹ˆ๋‹ค.

Redis๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ DLM(๋ถ„์‚ฐ ์ž ๊ธˆ ๊ด€๋ฆฌ์ž)์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•˜๋Š” ๋งŽ์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ๊ฒŒ์‹œ๋ฌผ์ด ์žˆ์ง€๋งŒ ๊ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์ทจํ•˜๊ณ  ์ œ๊ณตํ•˜๋Š” ๋ณด์žฅ์€ ์•ฝ๊ฐ„ ๋” ์ •๊ตํ•œ ์„ค๊ณ„๋กœ ๋‹ฌ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์— ๋น„ํ•ด ์ƒ๋‹นํžˆ ์•ฝํ•ฉ๋‹ˆ๋‹ค.

์ด ๊ธฐ์‚ฌ์—์„œ๋Š” Redis๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ถ„์‚ฐ ์ž ๊ธˆ์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ์ฃผ๋Š” ์กฐ๊ฑด๋ถ€ ํ‘œ์ค€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์„ค๋ช…ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ ˆ๋“œ๋ฝ, ์ด๋Š” ๋ถ„์‚ฐ ์ž ๊ธˆ ๊ด€๋ฆฌ์ž๋ฅผ ๊ตฌํ˜„ํ•˜๋ฉฐ ์šฐ๋ฆฌ ์˜๊ฒฌ์œผ๋กœ๋Š” ์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์ผ๋ฐ˜์ ์ธ ๋‹จ์ผ ์ธ์Šคํ„ด์Šค ์ ‘๊ทผ ๋ฐฉ์‹๋ณด๋‹ค ์•ˆ์ „ํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ปค๋ฎค๋‹ˆํ‹ฐ๊ฐ€ ์ด๋ฅผ ๋ถ„์„ํ•˜๊ณ , ํ”ผ๋“œ๋ฐฑ์„ ์ œ๊ณตํ•˜๊ณ , ์ด๋ฅผ ๋ณด๋‹ค ๋ณต์žกํ•˜๊ฑฐ๋‚˜ ๋Œ€์•ˆ์ ์ธ ํ”„๋กœ์ ํŠธ์˜ ์ถœ๋ฐœ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

๊ตฌํ˜„

์•Œ๊ณ ๋ฆฌ์ฆ˜ ์„ค๋ช…์œผ๋กœ ๋„˜์–ด๊ฐ€๊ธฐ ์ „์— ์ด๋ฏธ ๋งŒ๋“ค์–ด์ง„ ๊ตฌํ˜„์— ๋Œ€ํ•œ ์—ฌ๋Ÿฌ ๋งํฌ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ฐธ๊ณ ์šฉ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ณด์•ˆ ๋ฐ ๊ฐ€์šฉ์„ฑ ๋ณด์žฅ

์šฐ๋ฆฌ๋Š” ๋ถ„์‚ฐ ์ž ๊ธˆ์„ ํšจ๊ณผ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ์ตœ์†Œํ•œ์˜ ๋ณด์žฅ์„ ์ œ๊ณตํ•œ๋‹ค๊ณ  ์ƒ๊ฐ๋˜๋Š” ์„ธ ๊ฐ€์ง€ ์†์„ฑ๋งŒ์œผ๋กœ ๋””์ž์ธ์„ ๋ชจ๋ธ๋งํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

  1. ๋ณด์•ˆ ์†์„ฑ: ์ƒํ˜ธ ๋ฐฐ์ œ. ์ฃผ์–ด์ง„ ์‹œ๊ฐ„์— ์˜ค์ง ํ•˜๋‚˜์˜ ํด๋ผ์ด์–ธํŠธ๋งŒ์ด ์ž ๊ธˆ์„ ๋ณด์œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  2. ๊ฐ€์šฉ์„ฑ ์†์„ฑ A: ๊ต์ฐฉ ์ƒํƒœ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๋ฆฌ์†Œ์Šค๋ฅผ ์ž ๊ทผ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์‹คํŒจํ•˜๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ๋””์Šคํฌ ์„ธ๊ทธ๋จผํŠธ์— ์žˆ๋Š” ๊ฒฝ์šฐ์—๋„ ๊ฒฐ๊ตญ ์ž ๊ธˆ์„ ํš๋“ํ•˜๋Š” ๊ฒƒ์€ ํ•ญ์ƒ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
  3. ๊ฐ€์šฉ์„ฑ ์†์„ฑ B: ๋‚ด๊ฒฐํ•จ์„ฑ. ๋Œ€๋ถ€๋ถ„์˜ Redis ๋…ธ๋“œ๊ฐ€ ์‹คํ–‰ ์ค‘์ธ ํ•œ ํด๋ผ์ด์–ธํŠธ๋Š” ์ž ๊ธˆ์„ ํš๋“ํ•˜๊ณ  ํ•ด์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๊ฒฝ์šฐ ์žฅ์•  ๋ณต๊ตฌ ๊ธฐ๋ฐ˜ ๊ตฌํ˜„์ด ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์€ ์ด์œ 
๊ฐœ์„ ํ•  ์‚ฌํ•ญ์„ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด Redis๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ๋Œ€๋ถ€๋ถ„์˜ ๋ถ„์‚ฐ ์ž ๊ธˆ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ํ˜„์žฌ ์ƒํƒœ๋ฅผ ๋ถ„์„ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

Redis๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฆฌ์†Œ์Šค๋ฅผ ์ž ๊ทธ๋Š” ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•์€ ์ธ์Šคํ„ด์Šค์— ํ‚ค๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ํ‚ค๋Š” ์ œํ•œ๋œ ์ˆ˜๋ช…์œผ๋กœ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” Redis์—์„œ ์ œ๊ณต๋˜๋Š” ๋งŒ๋ฃŒ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ฌ์„ฑ๋˜๋ฏ€๋กœ ์กฐ๋งŒ๊ฐ„ ์ด ํ‚ค๊ฐ€ ํ•ด์ œ๋ฉ๋‹ˆ๋‹ค(๋ชฉ๋ก์˜ ์†์„ฑ 2). ํด๋ผ์ด์–ธํŠธ๋Š” ๋ฆฌ์†Œ์Šค๋ฅผ ํ•ด์ œํ•ด์•ผ ํ•  ๊ฒฝ์šฐ ํ‚ค๋ฅผ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.

์–ธ๋œป ๋ณด๊ธฐ์— ์ด ์†”๋ฃจ์…˜์€ ๊ฝค ์ž˜ ์ž‘๋™ํ•˜์ง€๋งŒ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ์šฐ๋ฆฌ์˜ ์•„ํ‚คํ…์ฒ˜๋Š” ๋‹จ์ผ ์‹คํŒจ ์ง€์ ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ํ˜ธ์ŠคํŠธ Redis ์ธ์Šคํ„ด์Šค๊ฐ€ ์‹คํŒจํ•˜๋ฉด ์–ด๋–ป๊ฒŒ ๋˜๋‚˜์š”? ๊ทธ๋Ÿผ ์Šฌ๋ ˆ์ด๋ธŒ๋ฅผ ์ถ”๊ฐ€ํ•˜์ž! ๋ฐœํ‘œ์ž๊ฐ€ ๋ถ€์žฌ์ค‘์ผ ๊ฒฝ์šฐ์—๋„ ์‚ฌ์šฉํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ถˆํ–‰ํ•˜๊ฒŒ๋„ ์ด ์˜ต์…˜์€ ์‹คํ–‰ ๊ฐ€๋Šฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด Redis์˜ ๋ณต์ œ๊ฐ€ ๋น„๋™๊ธฐ์‹์ด๋ฏ€๋กœ ๋ณด์•ˆ์„ ๋ณด์žฅํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ์ƒํ˜ธ ๋ฐฐ์ œ ์†์„ฑ์„ ์ œ๋Œ€๋กœ ๊ตฌํ˜„ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๋ถ„๋ช…ํžˆ ์ด๋Ÿฌํ•œ ๋ชจ๋ธ์—์„œ๋Š” ๊ฒฝ์Ÿ ์กฐ๊ฑด์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

  1. ํด๋ผ์ด์–ธํŠธ A๋Š” ๋งˆ์Šคํ„ฐ์— ๋Œ€ํ•œ ์ž ๊ธˆ์„ ํš๋“ํ•ฉ๋‹ˆ๋‹ค.
  2. ํ‚ค ํ•ญ๋ชฉ์ด ์Šฌ๋ ˆ์ด๋ธŒ๋กœ ์ „์†ก๋˜๊ธฐ ์ „์— ๋งˆ์Šคํ„ฐ๊ฐ€ ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค.
  3. ์ถ”์ข…์ž๊ฐ€ ๋ฆฌ๋”๋กœ ์Šน์ง„ํ•ฉ๋‹ˆ๋‹ค.
  4. ํด๋ผ์ด์–ธํŠธ B๋Š” A๊ฐ€ ์ด๋ฏธ ์ž ๊ทผ ๋™์ผํ•œ ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ์ž ๊ธˆ์„ ํš๋“ํ•ฉ๋‹ˆ๋‹ค. ๋ณด์•ˆ ์œ„๋ฐ˜!

๋•Œ๋กœ๋Š” ์‹คํŒจ์™€ ๊ฐ™์€ ํŠน๋ณ„ํ•œ ์ƒํ™ฉ์—์„œ ๋งŽ์€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋™์‹œ์— ์ž ๊ธˆ์„ ๋ณด์œ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด ์™„์ „ํžˆ ์ •์ƒ์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ฒฝ์šฐ ๋ณต์ œ ๊ธฐ๋ฐ˜ ์†”๋ฃจ์…˜์„ ์ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ์—๋Š” ์ด ๋ฌธ์„œ์— ์„ค๋ช…๋œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

๋‹จ์ผ ์ธ์Šคํ„ด์Šค๋กœ ์˜ฌ๋ฐ”๋ฅธ ๊ตฌํ˜„

์œ„์—์„œ ์„ค๋ช…ํ•œ ๋‹จ์ผ ์ธ์Šคํ„ด์Šค ๊ตฌ์„ฑ์˜ ๋‹จ์ ์„ ๊ทน๋ณตํ•˜๊ธฐ ์ „์— ์ด ๊ฐ„๋‹จํ•œ ์‚ฌ๋ก€๋ฅผ ์ ์ ˆํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ดํ•ดํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด ์†”๋ฃจ์…˜์€ ๋•Œ๋•Œ๋กœ ๊ฒฝ์Ÿ ์กฐ๊ฑด์ด ํ—ˆ์šฉ๋˜๋Š” ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์—์„œ ์‹ค์ œ๋กœ ์œ ํšจํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋‹จ์ผ ์ธ์Šคํ„ด์Šค๋Š” ์—ฌ๊ธฐ์— ์„ค๋ช…๋œ ๋ถ„์‚ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ์‚ฌ์šฉ๋˜๋Š” ๊ธฐ๋ฐ˜์œผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

์ž ๊ธˆ์„ ์–ป์œผ๋ ค๋ฉด ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•˜์‹ญ์‹œ์˜ค.

SET resource_name my_random_value NX PX 30000

์ด ๋ช…๋ น์€ ํ‚ค๊ฐ€ ์•„์ง ์—†๋Š” ๊ฒฝ์šฐ์—๋งŒ(NX ์˜ต์…˜) ํ‚ค๋ฅผ ์„ค์น˜ํ•˜๋ฉฐ ์œ ํšจ ๊ธฐ๊ฐ„์€ 30000๋ฐ€๋ฆฌ์ดˆ(PX ์˜ต์…˜)์ž…๋‹ˆ๋‹ค. ํ‚ค๋Š” "๋กœ ์„ค์ •๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.myrandomvalue" ์ด ๊ฐ’์€ ๋ชจ๋“  ํด๋ผ์ด์–ธํŠธ์™€ ๋ชจ๋“  ์ž ๊ธˆ ์š”์ฒญ์—์„œ ๊ณ ์œ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
๊ธฐ๋ณธ์ ์œผ๋กœ ์ž„์˜์˜ ๊ฐ’์€ Redis์—๊ฒŒ ํ‚ค๊ฐ€ ์กด์žฌํ•˜๊ณ  ํ‚ค์— ์ €์žฅ๋œ ๊ฐ’์ด ์ •ํ™•ํžˆ ์˜ˆ์ƒํ•œ ๊ฐ’์ธ ๊ฒฝ์šฐ์—๋งŒ ํ‚ค๋ฅผ ์ œ๊ฑฐํ•˜๋ผ๋Š” ์Šคํฌ๋ฆฝํŠธ์™€ ํ•จ๊ป˜ ์ž ๊ธˆ์„ ์•ˆ์ „ํ•˜๊ฒŒ ํ•ด์ œํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋‹ค์Œ Lua ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.

if redis.call("get",KEYS[1]) == ARGV[1] then
    return redis.call("del",KEYS[1])
else
    return 0
end

์ด๋Š” ๋‹ค๋ฅธ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ณด์œ ํ•œ ์ž ๊ธˆ์ด ์ œ๊ฑฐ๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๋Š” ๋ฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ํด๋ผ์ด์–ธํŠธ๋Š” ์ž ๊ธˆ์„ ํš๋“ํ•œ ๋‹ค์Œ ์ฒซ ๋ฒˆ์งธ ์ž ๊ธˆ๋ณด๋‹ค ์˜ค๋ž˜ ์ง€์†๋˜๋Š” ์ผ๋ถ€ ์ž‘์—…์—์„œ ์ž ๊ธฐ๊ณ (ํ‚ค๊ฐ€ ๋งŒ๋ฃŒ๋  ์‹œ๊ฐ„์„ ๊ฐ–๊ธฐ ์œ„ํ•ด) ๋‚˜์ค‘์— ๋‹ค๋ฅธ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„ค์ •ํ•œ ์ž ๊ธˆ์„ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋‹จ์ˆœ DEL์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋‹ค๋ฅธ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ณด์œ ํ•œ ์ž ๊ธˆ์„ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์•ˆ์ „ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋Œ€์กฐ์ ์œผ๋กœ, ์œ„ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ๊ฐ ์ž ๊ธˆ์€ ์ž„์˜์˜ ๋ฌธ์ž์—ด๋กœ "์„œ๋ช…"๋˜๋ฏ€๋กœ ์ด์ „์— ์ž ๊ธˆ์„ ์„ค์ •ํ•œ ํด๋ผ์ด์–ธํŠธ๋งŒ ์ด๋ฅผ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ์ž„์˜์˜ ๋ฌธ์ž์—ด์€ ๋ฌด์—‡์ด์–ด์•ผ ํ•ฉ๋‹ˆ๊นŒ? ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด /dev/urandom์—์„œ 20๋ฐ”์ดํŠธ์—ฌ์•ผ ํ•œ๋‹ค๊ณ  ์ถ”์ธกํ•˜์ง€๋งŒ, ๊ท€ํ•˜์˜ ๋ชฉ์ ์— ๋งž๊ฒŒ ๋ฌธ์ž์—ด์„ ๊ณ ์œ ํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๋ณด๋‹ค ์ €๋ ดํ•œ ๋ฐฉ๋ฒ•์„ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด RC4์— /dev/urandom์„ ์‹œ๋“œํ•œ ๋‹ค์Œ ์—ฌ๊ธฐ์—์„œ ์˜์‚ฌ ๋ฌด์ž‘์œ„ ์ŠคํŠธ๋ฆผ์„ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๋” ๊ฐ„๋‹จํ•œ ์†”๋ฃจ์…˜์—๋Š” ๋งˆ์ดํฌ๋กœ์ดˆ ํ•ด์ƒ๋„์˜ Unix ์‹œ๊ฐ„๊ณผ ํด๋ผ์ด์–ธํŠธ ID์˜ ์กฐํ•ฉ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ์•ˆ์ „ํ•˜์ง€๋Š” ์•Š์ง€๋งŒ ๋Œ€๋ถ€๋ถ„์˜ ์ƒํ™ฉ์—์„œ ์ž‘์—…์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ‚ค์˜ ์ˆ˜๋ช…์„ ์ธก์ •ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•˜๋Š” ์‹œ๊ฐ„์„ "์ž ๊ธˆ ์ˆ˜๋ช…"์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฐ’์€ ์ž ๊ธˆ์ด ์ž๋™์œผ๋กœ ํ•ด์ œ๋˜๊ธฐ ์ „๊นŒ์ง€์˜ ์‹œ๊ฐ„๊ณผ ์‹ค์ œ๋กœ ์ƒํ˜ธ ๋ฐฐ์ œ ๋ณด์žฅ์„ ์œ„๋ฐ˜ํ•˜์ง€ ์•Š๊ณ  ๋‹ค๋ฅธ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ํ•ด๋‹น ๋ฆฌ์†Œ์Šค๋ฅผ ์ž ๊ทธ๊ธฐ ์ „์— ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ž‘์—…์„ ์™„๋ฃŒํ•ด์•ผ ํ•˜๋Š” ์‹œ๊ฐ„์ž…๋‹ˆ๋‹ค. ์ด ๋ณด์ฆ์€ ์ž๋ฌผ์‡ ๋ฅผ ๊ตฌ์ž…ํ•œ ์ˆœ๊ฐ„๋ถ€ํ„ฐ ์‹œ์ž‘๋˜๋Š” ํŠน์ • ๊ธฐ๊ฐ„์œผ๋กœ๋งŒ ์ œํ•œ๋ฉ๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ์šฐ๋ฆฌ๋Š” ์ž ๊ธˆ์„ ํš๋“ํ•˜๊ณ  ํ•ด์ œํ•˜๋Š” ์ข‹์€ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ๋…ผ์˜ํ–ˆ์Šต๋‹ˆ๋‹ค. ์‹œ์Šคํ…œ(ํ•ญ์ƒ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋‹จ์ผ ์ธ์Šคํ„ด์Šค๋กœ ๊ตฌ์„ฑ๋œ ๋น„๋ถ„์‚ฐ ์‹œ์Šคํ…œ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๋Š” ๊ฒฝ์šฐ)์€ ์•ˆ์ „ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฐœ๋…์„ ๊ทธ๋Ÿฌํ•œ ๋ณด์žฅ์ด ์—†๋Š” ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์œผ๋กœ ํ™•์žฅํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

๋ ˆ๋“œ๋ฝ ์•Œ๊ณ ๋ฆฌ์ฆ˜

์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๋ถ„์‚ฐ ๋ฒ„์ „์—์„œ๋Š” N๊ฐœ์˜ Redis ๋งˆ์Šคํ„ฐ๊ฐ€ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋…ธ๋“œ๋Š” ์„œ๋กœ ์™„์ „ํžˆ ๋…๋ฆฝ์ ์ด๋ฏ€๋กœ ๋ณต์ œ ๋˜๋Š” ๊ธฐํƒ€ ์•”์‹œ์  ์กฐ์ • ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋‹จ์ผ ์ธ์Šคํ„ด์Šค์— ๋Œ€ํ•œ ์ž ๊ธˆ์„ ์•ˆ์ „ํ•˜๊ฒŒ ํš๋“ํ•˜๊ณ  ํ•ด์ œํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ด๋ฏธ ๋‹ค๋ฃจ์—ˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋‹จ์ผ ์ธ์Šคํ„ด์Šค๋กœ ์ž‘์—…ํ•  ๋•Œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์ •ํ™•ํžˆ ์ด ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๋‹น์—ฐํ•˜๊ฒŒ ์—ฌ๊น๋‹ˆ๋‹ค. ์ด ์˜ˆ์—์„œ๋Š” N์„ ํ•ฉ๋ฆฌ์ ์ธ ๊ฐ’์ธ 5๋กœ ์„ค์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์„œ๋กœ ๋…๋ฆฝ์ ์œผ๋กœ ์ž‘๋™ํ•˜๋„๋ก ์„œ๋กœ ๋‹ค๋ฅธ ์ปดํ“จํ„ฐ ๋˜๋Š” ๊ฐ€์ƒ ๋จธ์‹ ์—์„œ 5๊ฐœ์˜ Redis ๋งˆ์Šคํ„ฐ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ž ๊ธˆ์„ ํš๋“ํ•˜๊ธฐ ์œ„ํ•ด ํด๋ผ์ด์–ธํŠธ๋Š” ๋‹ค์Œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

  1. ํ˜„์žฌ ์‹œ๊ฐ„์„ ๋ฐ€๋ฆฌ์ดˆ ๋‹จ์œ„๋กœ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
  2. ๋ชจ๋“  ๊ฒฝ์šฐ์— ๋™์ผํ•œ ํ‚ค ์ด๋ฆ„๊ณผ ์ž„์˜์˜ ๊ฐ’์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋“  N ์ธ์Šคํ„ด์Šค์— ๋Œ€ํ•ด ์ˆœ์ฐจ์ ์œผ๋กœ ์ž ๊ธˆ์„ ์–ป์œผ๋ ค๊ณ  ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค. 2๋‹จ๊ณ„์—์„œ๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ธ์Šคํ„ด์Šค๋ณ„๋กœ ์ž ๊ธˆ์„ ์„ค์ •ํ•  ๋•Œ ํด๋ผ์ด์–ธํŠธ๋Š” ์ž ๊ธˆ์ด ์ž๋™์œผ๋กœ ํ•ด์ œ๋œ ํ›„์˜ ์‹œ๊ฐ„์— ๋น„ํ•ด ์ถฉ๋ถ„ํžˆ ์งง์€ ์ง€์—ฐ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ž ๊ธˆ์„ ํš๋“ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ฐจ๋‹จ ๊ธฐ๊ฐ„์ด 10์ดˆ์ธ ๊ฒฝ์šฐ ์ง€์—ฐ ์‹œ๊ฐ„์€ ~5~50๋ฐ€๋ฆฌ์ดˆ ๋ฒ”์œ„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์‹คํŒจํ•œ Redis ๋…ธ๋“œ์— ๋„๋‹ฌํ•˜๋ ค๊ณ  ์˜ค๋žซ๋™์•ˆ ์ฐจ๋‹จ๋  ์ˆ˜ ์žˆ๋Š” ์ƒํ™ฉ์ด ์ œ๊ฑฐ๋ฉ๋‹ˆ๋‹ค. ์ธ์Šคํ„ด์Šค๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ ๊ฐ€๋Šฅํ•œ ํ•œ ๋นจ๋ฆฌ ๋‹ค๋ฅธ ์ธ์Šคํ„ด์Šค์— ์—ฐ๊ฒฐํ•˜๋ ค๊ณ  ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค.
  3. ์ž ๊ธˆ์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ํด๋ผ์ด์–ธํŠธ๋Š” ๊ฒฝ๊ณผ๋œ ์‹œ๊ฐ„์„ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ์‹ค์ œ ์‹œ๊ฐ„ ๊ฐ’์—์„œ 1๋‹จ๊ณ„์—์„œ ์–ป์€ ํƒ€์ž„์Šคํƒฌํ”„๋ฅผ ๋บ๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋Œ€๋ถ€๋ถ„์˜ ์ธ์Šคํ„ด์Šค(์ตœ์†Œ 3๊ฐœ)์— ๋Œ€ํ•œ ์ž ๊ธˆ์„ ์–ป์„ ์ˆ˜ ์žˆ์—ˆ๋˜ ๊ฒฝ์šฐ์—๋งŒ ํ•ด๋‹น๋˜๋ฉฐ, ์†Œ์š”๋œ ์ด ์‹œ๊ฐ„์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ž ๊ธˆ์„ ํš๋“ํ•˜๊ณ  ์ž ๊ธˆ ๊ธฐ๊ฐ„๋ณด๋‹ค ์งง์€ ๊ฒฝ์šฐ ์ž ๊ธˆ์„ ํš๋“ํ•œ ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผ๋ฉ๋‹ˆ๋‹ค.
  4. ์ž ๊ธˆ์ด ํš๋“๋œ ๊ฒฝ์šฐ ์ž ๊ธˆ ๊ธฐ๊ฐ„์€ ์›๋ž˜ ์ž ๊ธˆ ๊ธฐ๊ฐ„์—์„œ 3๋‹จ๊ณ„์—์„œ ๊ณ„์‚ฐ๋œ ๊ฒฝ๊ณผ ์‹œ๊ฐ„์„ ๋บ€ ๊ฐ’์œผ๋กœ ๊ฐ„์ฃผ๋ฉ๋‹ˆ๋‹ค.
  5. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์–ด๋–ค ์ด์œ ๋กœ ์ž ๊ธˆ์„ ํš๋“ํ•˜์ง€ ๋ชปํ•œ ๊ฒฝ์šฐ(N/2+1 ์ธ์Šคํ„ด์Šค๋ฅผ ์ž ๊ธ€ ์ˆ˜ ์—†๊ฑฐ๋‚˜ ์ž ๊ธˆ ๊ธฐ๊ฐ„์ด ์Œ์ˆ˜์ธ ๊ฒฝ์šฐ) ๋ชจ๋“  ์ธ์Šคํ„ด์Šค ์ž ๊ธˆ์„ ํ•ด์ œํ•˜๋ ค๊ณ  ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค(์ฐจ๋‹จํ•  ์ˆ˜ ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•œ ์ธ์Šคํ„ด์Šค๋„ ํฌํ•จ). ).

์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ๋น„๋™๊ธฐ์‹์ธ๊ฐ€์š”?

์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ž‘๋™ํ•˜๋Š” ๋™๊ธฐํ™”๋œ ์‹œ๊ณ„๋Š” ์—†์ง€๋งŒ ๊ฐ ํ”„๋กœ์„ธ์Šค์˜ ๋กœ์ปฌ ์‹œ๊ฐ„์€ ์—ฌ์ „ํžˆ โ€‹โ€‹๋Œ€๋žต ๋™์ผํ•œ ์†๋„๋กœ ํ๋ฅด๊ณ  ์ž ๊ธˆ์ด ํ•ด์ œ๋œ ํ›„์˜ ์ „์ฒด ์‹œ๊ฐ„์— ๋น„ํ•ด ์˜ค๋ฅ˜๊ฐ€ ์ž‘๋‹ค๋Š” ๊ฐ€์ •์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค. ์ž๋™์œผ๋กœ ํ•ด์ œ๋ฉ๋‹ˆ๋‹ค. ์ด ๊ฐ€์ •์€ ์ผ๋ฐ˜ ์ปดํ“จํ„ฐ์˜ ์ผ๋ฐ˜์ ์ธ ์ƒํ™ฉ๊ณผ ๋งค์šฐ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ์ปดํ“จํ„ฐ์—๋Š” ๋กœ์ปฌ ์‹œ๊ณ„๊ฐ€ ์žˆ์œผ๋ฉฐ ์ผ๋ฐ˜์ ์œผ๋กœ ์„œ๋กœ ๋‹ค๋ฅธ ์ปดํ“จํ„ฐ ๊ฐ„์˜ ์‹œ๊ฐ„ ์ฐจ์ด๊ฐ€ ์ž‘๋‹ค๋Š” ์‚ฌ์‹ค์„ ๋ฏฟ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ์‹œ์ ์—์„œ ์šฐ๋ฆฌ๋Š” ์ƒํ˜ธ ๋ฐฐ์ œ ๊ทœ์น™์„ ๋ณด๋‹ค ์‹ ์ค‘ํ•˜๊ฒŒ ๊ณต์‹ํ™”ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ƒํ˜ธ ๋ฐฐ์ œ๋Š” ์ž ๊ธˆ์„ ๋ณด์œ ํ•œ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ž ๊ธˆ์ด ์œ ํšจํ•œ ์‹œ๊ฐ„(3๋‹จ๊ณ„์—์„œ ์–ป์€ ์ด ๊ฐ’) ๋™์•ˆ ์ข…๋ฃŒํ•˜๋Š” ๊ฒฝ์šฐ์—๋งŒ ๋” ๋งŽ์€ ์‹œ๊ฐ„(์ด ๋ช‡ ์‹œ๊ฐ„)์„ ๋บ€ ๊ฒฝ์šฐ์—๋งŒ ๋ณด์žฅ๋ฉ๋‹ˆ๋‹ค. ํ”„๋กœ์„ธ์Šค ๊ฐ„์˜ ์‹œ๊ฐ„ ์ฐจ์ด๋ฅผ ๋ณด์ƒํ•˜๊ธฐ ์œ„ํ•ด ๋ฐ€๋ฆฌ์ดˆ).

๋‹ค์Œ ํฅ๋ฏธ๋กœ์šด ๊ธฐ์‚ฌ์—์„œ๋Š” ์‹œ๊ฐ„ ๊ฐ„๊ฒฉ ์กฐ์ •์ด ํ•„์š”ํ•œ ์‹œ์Šคํ…œ์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ์ž„๋Œ€: ๋ถ„์‚ฐ ํŒŒ์ผ ์บ์‹œ ์ผ๊ด€์„ฑ์„ ์œ„ํ•œ ํšจ์œจ์ ์ธ ๋‚ด๊ฒฐํ•จ์„ฑ ๋ฉ”์ปค๋‹ˆ์ฆ˜.

์‹คํŒจ ์‹œ ์žฌ์‹œ๋„

ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ž ๊ธˆ ํš๋“์— ์‹คํŒจํ•˜๋ฉด ์ž„์˜์˜ ์ง€์—ฐ ํ›„์— ๋‹ค์‹œ ์‹œ๋„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋™์ผํ•œ ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ์ž ๊ธˆ์„ ๋™์‹œ์— ํš๋“ํ•˜๋ ค๋Š” ์—ฌ๋Ÿฌ ํด๋ผ์ด์–ธํŠธ๋ฅผ ๋น„๋™๊ธฐํ™”ํ•˜๊ธฐ ์œ„ํ•ด ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค(์Šน์ž๊ฐ€ ์—†๋Š” "๋ถ„ํ•  ๋ธŒ๋ ˆ์ธ" ์ƒํ™ฉ์œผ๋กœ ์ด์–ด์งˆ ์ˆ˜ ์žˆ์Œ). ๋˜ํ•œ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋Œ€๋ถ€๋ถ„์˜ Redis ์ธ์Šคํ„ด์Šค์— ๋Œ€ํ•œ ์ž ๊ธˆ ํš๋“์„ ๋” ๋นจ๋ฆฌ ์‹œ๋„ํ• ์ˆ˜๋ก ๋ถ„ํ•  ๋ธŒ๋ ˆ์ธ ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๊ฐ„์€ ๋” ์ข์•„์ง‘๋‹ˆ๋‹ค(๊ทธ๋ฆฌ๊ณ  ์žฌ์‹œ๋„ ํ•„์š”์„ฑ๋„ ์ค„์–ด๋“ญ๋‹ˆ๋‹ค). ๋”ฐ๋ผ์„œ ์ด์ƒ์ ์œผ๋กœ ํด๋ผ์ด์–ธํŠธ๋Š” ๋ฉ€ํ‹ฐํ”Œ๋ ‰์‹ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋™์‹œ์— N ์ธ์Šคํ„ด์Šค์— SET ๋ช…๋ น์„ ๋ณด๋‚ด๋ ค๊ณ  ์‹œ๋„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์„œ๋Š” ๋Œ€๋ถ€๋ถ„์˜ ์ž ๊ธˆ์„ ํš๋“ํ•˜์ง€ ๋ชปํ•œ ํด๋ผ์ด์–ธํŠธ๊ฐ€ (๋ถ€๋ถ„์ ์œผ๋กœ) ํš๋“ํ•œ ์ž ๊ธˆ์„ ํ•ด์ œํ•˜์—ฌ ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ์ž ๊ธˆ์„ ๋‹ค์‹œ ํš๋“ํ•˜๊ธฐ ์ „์— ํ‚ค๊ฐ€ ๋งŒ๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆด ํ•„์š”๊ฐ€ ์—†๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด ์–ผ๋งˆ๋‚˜ ์ค‘์š”ํ•œ์ง€ ๊ฐ•์กฐํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. (๋„คํŠธ์›Œํฌ ์กฐ๊ฐํ™”๊ฐ€ ๋ฐœ์ƒํ•˜๊ณ  ํด๋ผ์ด์–ธํŠธ๊ฐ€ Redis ์ธ์Šคํ„ด์Šค์™€์˜ ์—ฐ๊ฒฐ์ด ๋Š์–ด์ง€๋ฉด ํ‚ค๊ฐ€ ๋งŒ๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๋™์•ˆ ๊ฐ€์šฉ์„ฑ ํŽ˜๋„ํ‹ฐ๋ฅผ ์ง€๋ถˆํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค).

์ž ๊ธˆ์„ ํ•ด์ œํ•˜์„ธ์š”

์ž ๊ธˆ ํ•ด์ œ๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ ํŠน์ • ์ธ์Šคํ„ด์Šค๋ฅผ ์„ฑ๊ณต์ ์œผ๋กœ ์ž ๊ทผ ๊ฒƒ์œผ๋กœ ๋ณด์ด๋Š”์ง€ ์—ฌ๋ถ€์— ๊ด€๊ณ„์—†์ด ๋ชจ๋“  ์ธ์Šคํ„ด์Šค๋ฅผ ์ž ๊ธˆ ํ•ด์ œํ•˜๋ฉด ๋˜๋Š” ๊ฐ„๋‹จํ•œ ์ž‘์—…์ž…๋‹ˆ๋‹ค.

๋ณด์•ˆ ๊ณ ๋ ค ์‚ฌํ•ญ

์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์•ˆ์ „ํ•œ๊ฐ€์š”? ๋‹ค์–‘ํ•œ ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๋Š”์ง€ ์ƒ์ƒํ•ด ๋ด…์‹œ๋‹ค.

์šฐ์„  ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋Œ€๋ถ€๋ถ„์˜ ์ธ์Šคํ„ด์Šค์— ๋Œ€ํ•œ ์ž ๊ธˆ์„ ์–ป์„ ์ˆ˜ ์žˆ์—ˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ฐ ์ธ์Šคํ„ด์Šค์—๋Š” ๋ชจ๋‘์— ๋Œ€ํ•ด ๋™์ผํ•œ ์ˆ˜๋ช…์„ ๊ฐ–๋Š” ํ‚ค๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๋Ÿฌํ•œ ํ‚ค๋Š” ๊ฐ๊ฐ ์„œ๋กœ ๋‹ค๋ฅธ ์‹œ๊ฐ„์— ์„ค์น˜๋˜์—ˆ์œผ๋ฏ€๋กœ ์„œ๋กœ ๋‹ค๋ฅธ ์‹œ๊ฐ„์— ๋งŒ๋ฃŒ๋ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ฒซ ๋ฒˆ์งธ ํ‚ค๊ฐ€ T1(์ฒซ ๋ฒˆ์งธ ์„œ๋ฒ„์— ์—ฐ๊ฒฐํ•˜๊ธฐ ์ „์— ์„ ํƒํ•œ ์‹œ๊ฐ„)๋ณด๋‹ค ๋‚˜์˜์ง€ ์•Š์€ ์‹œ๊ฐ„์— ์„ค์น˜๋˜๊ณ  ๋งˆ์ง€๋ง‰ ํ‚ค๊ฐ€ T2(์‘๋‹ต์„ ๋ฐ›์€ ์‹œ๊ฐ„)๋ณด๋‹ค ๋‚˜์˜์ง€ ์•Š์€ ์‹œ๊ฐ„์— ์„ค์น˜๋œ ๊ฒฝ์šฐ ๋งˆ์ง€๋ง‰ ์„œ๋ฒ„์—์„œ), ๋งŒ๋ฃŒ๋˜๋Š” ์„ธํŠธ์˜ ์ฒซ ๋ฒˆ์งธ ํ‚ค๊ฐ€ ์ ์–ด๋„ ์‚ด์•„๋‚จ์„ ๊ฒƒ์ด๋ผ๊ณ  ํ™•์‹ ํ•ฉ๋‹ˆ๋‹ค. MIN_VALIDITY=TTL-(T2-T1)-CLOCK_DRIFT. ๋‹ค๋ฅธ ๋ชจ๋“  ํ‚ค๋Š” ๋‚˜์ค‘์— ๋งŒ๋ฃŒ๋˜๋ฏ€๋กœ ์ ์–ด๋„ ์ด ์‹œ๊ฐ„ ๋™์•ˆ ๋ชจ๋“  ํ‚ค๊ฐ€ ๋™์‹œ์— ์œ ํšจํ•˜๋‹ค๋Š” ๊ฒƒ์„ ํ™•์‹ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋Œ€๋ถ€๋ถ„์˜ ํ‚ค๊ฐ€ ์œ ํšจํ•œ ๋™์•ˆ์—๋Š” N/2+1 ํ‚ค๊ฐ€ ์ด๋ฏธ ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ N/2+1 SET NX ์ž‘์—…์ด ์„ฑ๊ณตํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ๋‹ค๋ฅธ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ž ๊ธˆ์„ ํš๋“ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ž ๊ธˆ์„ ํ•œ ๋ฒˆ ํš๋“ํ•˜๋ฉด ๋™์‹œ์— ๋‹ค์‹œ ํš๋“ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค(์ด๋Š” ์ƒํ˜ธ ๋ฐฐ์ œ ์†์„ฑ์„ ์œ„๋ฐ˜ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค).
๊ทธ๋Ÿฌ๋‚˜ ์šฐ๋ฆฌ๋Š” ๋™์‹œ์— ์ž ๊ธˆ์„ ํš๋“ํ•˜๋ ค๋Š” ์—ฌ๋Ÿฌ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋™์‹œ์— ์„ฑ๊ณตํ•  ์ˆ˜ ์—†๋„๋ก ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ตœ๋Œ€ ์ž ๊ธˆ ๊ธฐ๊ฐ„ ์ด์ƒ ๋™์•ˆ ๋Œ€๋ถ€๋ถ„์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์ž ๊ทผ ๊ฒฝ์šฐ ์ž ๊ธˆ์ด ์œ ํšจํ•˜์ง€ ์•Š์€ ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผํ•˜๊ณ  ์ธ์Šคํ„ด์Šค๋ฅผ ์ž ๊ธˆ ํ•ด์ œํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋งŒ๋ฃŒ ๋‚ ์งœ๋ณด๋‹ค ์งง์€ ์‹œ๊ฐ„ ๋‚ด์— ๋Œ€๋ถ€๋ถ„์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์ฐจ๋‹จํ•œ ๊ฒฝ์šฐ๋งŒ ๊ณ ๋ คํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ์œ„์˜ ์ฃผ์žฅ์— ๋Œ€ํ•˜์—ฌ ๊ทธ ๊ธฐ๊ฐ„ ๋™์•ˆ MIN_VALIDITY ์–ด๋–ค ํด๋ผ์ด์–ธํŠธ๋„ ์ž ๊ธˆ์„ ๋‹ค์‹œ ํš๋“ํ•  ์ˆ˜ ์—†์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋งŽ์€ ํด๋ผ์ด์–ธํŠธ๋Š” ๋Œ€๋‹ค์ˆ˜๋ฅผ ์ž ๊ทธ๋Š” ์‹œ๊ฐ„์ด TTL ์‹œ๊ฐ„๋ณด๋‹ค ๊ธธ์–ด์„œ ์ž ๊ธˆ์ด ๋ฌดํšจํ™”๋˜๋Š” ๊ฒฝ์šฐ์—๋งŒ N/2+1 ์ธ์Šคํ„ด์Šค๋ฅผ ๋™์‹œ์— ์ž ๊ธ€ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(2๋‹จ๊ณ„ ๋์—์„œ ๋๋‚จ).

๊ณต์‹์ ์ธ ๋ณด์•ˆ ์ฆ๋ช…์„ ์ œ๊ณตํ•˜๊ฑฐ๋‚˜, ๊ธฐ์กด์˜ ์œ ์‚ฌํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ‘œ์‹œํ•˜๊ฑฐ๋‚˜, ์œ„์—์„œ ๋ฒ„๊ทธ๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์ ‘๊ทผ์„ฑ ๊ณ ๋ ค ์‚ฌํ•ญ

์‹œ์Šคํ…œ ๊ฐ€์šฉ์„ฑ์€ ์„ธ ๊ฐ€์ง€ ์ฃผ์š” ํŠน์„ฑ์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค.

  1. ์ž๋™์œผ๋กœ ์ž ๊ธˆ ํ•ด์ œ(ํ‚ค๊ฐ€ ๋งŒ๋ฃŒ๋˜๋ฉด): ๊ฒฐ๊ตญ ํ‚ค๋Š” ๋‹ค์‹œ ์ž ๊ธˆ์— ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
  2. ํด๋ผ์ด์–ธํŠธ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์›ํ•˜๋Š” ์ž ๊ธˆ์„ ํš๋“ํ•˜์ง€ ๋ชปํ–ˆ๊ฑฐ๋‚˜ ํš๋“ํ–ˆ์ง€๋งŒ ์ž‘์—…์ด ์™„๋ฃŒ๋˜์—ˆ์„ ๋•Œ ์ž ๊ธˆ์„ ์ œ๊ฑฐํ•˜์—ฌ ์„œ๋กœ๋ฅผ ๋•๋Š”๋‹ค๋Š” ์‚ฌ์‹ค ๋”ฐ๋ผ์„œ ์ž ๊ธˆ์„ ๋‹ค์‹œ ํš๋“ํ•˜๊ธฐ ์œ„ํ•ด ํ‚ค๊ฐ€ ๋งŒ๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆด ํ•„์š”๊ฐ€ ์—†์„ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค.
  3. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ž ๊ธˆ์„ ํš๋“ํ•˜๊ธฐ ์œ„ํ•ด ์žฌ์‹œ๋„ํ•ด์•ผ ํ•  ๋•Œ ๋Œ€๋ถ€๋ถ„์˜ ์ž ๊ธˆ ํš๋“์— ํ•„์š”ํ•œ ์‹œ๊ฐ„๋ณด๋‹ค ๋น„๊ต์  ์˜ค๋žœ ์‹œ๊ฐ„์„ ๊ธฐ๋‹ค๋ฆฐ๋‹ค๋Š” ์‚ฌ์‹ค์ž…๋‹ˆ๋‹ค. ์ด๋Š” ์ž์› ๊ฒฝ์Ÿ ์‹œ ๋‘๋‡Œ ๋ถ„ํ•  ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•  ๊ฐ€๋Šฅ์„ฑ์„ ์ค„์—ฌ์ค๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๋„คํŠธ์›Œํฌ ์„ธ๊ทธ๋จผํŠธ์˜ TTL๊ณผ ๋™์ผํ•œ ๊ฐ€์šฉ์„ฑ ํŽ˜๋„ํ‹ฐ๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ ์—ฐ์†๋œ ์„ธ๊ทธ๋จผํŠธ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ํŽ˜๋„ํ‹ฐ๋Š” ๋ฌดํ•œ์ •์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ž ๊ธˆ์„ ํš๋“ํ•œ ๋‹ค์Œ ์ž ๊ธˆ์„ ํ•ด์ œํ•˜๊ธฐ ์ „์— ๋‹ค๋ฅธ ์„ธ๊ทธ๋จผํŠธ๋กœ ์ถ”์ถœํ•  ๋•Œ๋งˆ๋‹ค ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

์›์น™์ ์œผ๋กœ ๋ฌดํ•œํ•œ ์—ฐ์† ๋„คํŠธ์›Œํฌ ์„ธ๊ทธ๋จผํŠธ๊ฐ€ ์ฃผ์–ด์ง€๋ฉด ์‹œ์Šคํ…œ์€ ๋ฌดํ•œํ•œ ์‹œ๊ฐ„ ๋™์•ˆ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ์ƒํƒœ๋กœ ๋‚จ์•„ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์„ฑ๋Šฅ, ์žฅ์•  ์กฐ์น˜ ๋ฐ fsync

๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ์ž ๊ธˆ์„ ํš๋“ํ•˜๊ณ  ํ•ด์ œํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋Œ€๊ธฐ ์‹œ๊ฐ„๊ณผ ์ดˆ๋‹น ์™„๋ฃŒํ•  ์ˆ˜ ์žˆ๋Š” ํš๋“/ํ•ด์ œ ํšŸ์ˆ˜ ์ธก๋ฉด์—์„œ ๋†’์€ ์ž ๊ธˆ ์„œ๋ฒ„ ์„ฑ๋Šฅ์ด ํ•„์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— Redis๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์š”๊ตฌ ์‚ฌํ•ญ์„ ์ถฉ์กฑํ•˜๊ธฐ ์œ„ํ•ด N Redis ์„œ๋ฒ„์™€ ํ†ต์‹ ํ•˜์—ฌ ๋Œ€๊ธฐ ์‹œ๊ฐ„์„ ์ค„์ด๋Š” ์ „๋žต์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋ฉ€ํ‹ฐํ”Œ๋ ‰์‹ฑ ์ „๋žต(๋˜๋Š” ํด๋ผ์ด์–ธํŠธ์™€ ๊ฐ ์ธ์Šคํ„ด์Šค ๊ฐ„์˜ ์™•๋ณต ์‹œ๊ฐ„์ด ๋น„์Šทํ•˜๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์—ฌ ์†Œ์ผ“์„ ๋น„์ฐจ๋‹จ ๋ชจ๋“œ๋กœ ์„ค์ •ํ•˜๊ณ  ๋ชจ๋“  ๋ช…๋ น์„ ๋ณด๋‚ธ ๋‹ค์Œ ๋‚˜์ค‘์— ๋ช…๋ น์„ ์ฝ๋Š” "๊ฐ€๋‚œํ•œ ์‚ฌ๋žŒ์˜ ๋ฉ€ํ‹ฐํ”Œ๋ ‰์‹ฑ")์ž…๋‹ˆ๋‹ค. .

๊ทธ๋Ÿฌ๋‚˜ ์žฅ์• ๋กœ๋ถ€ํ„ฐ ์•ˆ์ •์ ์ธ ๋ณต๊ตฌ๊ฐ€ ๊ฐ€๋Šฅํ•œ ๋ชจ๋ธ์„ ๋งŒ๋“ค๋ ค๋ฉด ์žฅ๊ธฐ ๋ฐ์ดํ„ฐ ์ €์žฅ๊ณผ ๊ด€๋ จ๋œ ๊ณ ๋ ค ์‚ฌํ•ญ๋„ ๊ณ ๋ คํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ๋ณธ์ ์œผ๋กœ ๋ฌธ์ œ๋ฅผ ๋ช…ํ™•ํžˆ ํ•˜๊ธฐ ์œ„ํ•ด ์žฅ๊ธฐ ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ๊ฐ€ ์ „ํ˜€ ์—†๋Š” Redis๋ฅผ ๊ตฌ์„ฑํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๋Š” ์ธ์Šคํ„ด์Šค 3๊ฐœ ์ค‘ 5๊ฐœ๋ฅผ ์ฐจ๋‹จํ–ˆ์Šต๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ฐจ๋‹จํ•œ ์ธ์Šคํ„ด์Šค ์ค‘ ํ•˜๋‚˜๊ฐ€ ๋‹ค์‹œ ์‹œ์ž‘๋˜๊ณ , ํ˜„์žฌ ๋™์ผํ•œ ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•ด 3๊ฐœ์˜ ์ธ์Šคํ„ด์Šค๊ฐ€ ๋‹ค์‹œ ๋ฐœ์ƒํ•˜์—ฌ ์šฐ๋ฆฌ๊ฐ€ ์ฐจ๋‹จํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋‹ค๋ฅธ ํด๋ผ์ด์–ธํŠธ๋Š” ๋‹ค์‹œ ์‹œ์ž‘๋œ ์ธ์Šคํ„ด์Šค๋ฅผ ์ฐจ๋‹จํ•˜์—ฌ ๋ณด์•ˆ ์†์„ฑ์„ ์œ„๋ฐ˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž ๊ธˆ์˜ ๋…์ ์„ฑ์„ ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.

AOF(Data Ahead)๋ฅผ ํ™œ์„ฑํ™”ํ•˜๋ฉด ์ƒํ™ฉ์ด ์•ฝ๊ฐ„ ๊ฐœ์„ ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด SHUTDOWN ๋ช…๋ น์„ ๋ณด๋‚ด๊ณ  ๋‹ค์‹œ ์‹œ์ž‘ํ•˜์—ฌ ์„œ๋ฒ„๋ฅผ ์Šน๊ฒฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Redis์˜ ๋งŒ๋ฃŒ ์ž‘์—…์€ ์„œ๋ฒ„๊ฐ€ ๊บผ์ง„ ๊ฒฝ์šฐ์—๋„ ์‹œ๊ฐ„์ด ๊ณ„์† ํ๋ฅด๋„๋ก ์˜๋ฏธ๋ก ์ ์œผ๋กœ ๊ตฌํ˜„๋˜๋ฏ€๋กœ ๋ชจ๋“  ์š”๊ตฌ ์‚ฌํ•ญ์€ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค. ์ •์ƒ์ ์ธ ์ข…๋ฃŒ๊ฐ€ ๋ณด์žฅ๋˜๋Š” ํ•œ ์ด๋Š” ์ •์ƒ์ ์ธ ํ˜„์ƒ์ž…๋‹ˆ๋‹ค. ์ •์ „์ด ๋ฐœ์ƒํ•˜๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ•˜๋‚˜์š”? Redis๊ฐ€ ๊ธฐ๋ณธ์ ์œผ๋กœ fsync๊ฐ€ ๋งค์ดˆ๋งˆ๋‹ค ๋””์Šคํฌ์—์„œ ๋™๊ธฐํ™”๋˜๋„๋ก ๊ตฌ์„ฑ๋œ ๊ฒฝ์šฐ ๋‹ค์‹œ ์‹œ์ž‘ํ•œ ํ›„ ํ‚ค๊ฐ€ ์—†์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ก ์ ์œผ๋กœ ์ธ์Šคํ„ด์Šค๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๋Š” ๋™์•ˆ ์ž ๊ธˆ ๋ณด์•ˆ์„ ๋ณด์žฅํ•˜๋ ค๋ฉด ๋‹ค์Œ์„ ํ™œ์„ฑํ™”ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. fsync=always ๋ฐ์ดํ„ฐ ์žฅ๊ธฐ ์ €์žฅ ์„ค์ •์—์„œ ์ด๋Š” ๋ถ„์‚ฐ ์ž ๊ธˆ์„ ์•ˆ์ „ํ•˜๊ฒŒ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐ ์ „ํ†ต์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” CP ์‹œ์Šคํ…œ ์ˆ˜์ค€๊นŒ์ง€ ์„ฑ๋Šฅ์„ ์™„์ „ํžˆ ์ €ํ•˜์‹œํ‚ต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์ƒํ™ฉ์€ ์–ธ๋œป ๋ณด์ด๋Š” ๊ฒƒ๋ณด๋‹ค ๋‚ซ์Šต๋‹ˆ๋‹ค. ์›์น™์ ์œผ๋กœ ์ธ์Šคํ„ด์Šค๊ฐ€ ์‹คํŒจ ํ›„ ๋‹ค์‹œ ์‹œ์ž‘๋˜๋ฉด ํ˜„์žฌ ํ™œ์„ฑํ™”๋œ ์ž ๊ธˆ์— ๋” ์ด์ƒ ์ฐธ์—ฌํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๋ณด์•ˆ์ด ์œ ์ง€๋ฉ๋‹ˆ๋‹ค.

์ด๋ฅผ ๋ณด์žฅํ•˜๋ ค๋ฉด ์žฅ์•  ํ›„ ์šฐ๋ฆฌ๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ์ตœ๋Œ€ TTL์„ ์•ฝ๊ฐ„ ์ดˆ๊ณผํ•˜๋Š” ๊ธฐ๊ฐ„ ๋™์•ˆ ์ธ์Šคํ„ด์Šค๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ์ƒํƒœ๋กœ ์œ ์ง€ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์˜ค๋ฅ˜ ๋ฐœ์ƒ ์‹œ ํ™œ์„ฑํ™”๋œ ๋ชจ๋“  ํ‚ค์˜ ๋งŒ๋ฃŒ ๋‚ ์งœ์™€ ์ž๋™ ํ•ด์ œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค.

์ง€์—ฐ๋œ ์žฌ์‹œ์ž‘์„ ์‚ฌ์šฉํ•˜๋ฉด ์›์น™์ ์œผ๋กœ Redis์— ์žฅ๊ธฐ๊ฐ„ ์ง€์†์„ฑ์ด ์—†๋”๋ผ๋„ ๋ณด์•ˆ์„ ๋‹ฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋งŒ, ์ ‘๊ทผ์„ฑ ์œ„๋ฐ˜์œผ๋กœ ์ธํ•ด ๋ฒŒ๊ธˆ์ด ๋ถ€๊ณผ๋  ์ˆ˜ ์žˆ์œผ๋‹ˆ ์ฃผ์˜ํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋Œ€๋ถ€๋ถ„์˜ ์ธ์Šคํ„ด์Šค๊ฐ€ ์‹คํŒจํ•˜๋ฉด ์‹œ์Šคํ…œ์€ TTL ๋™์•ˆ ์ „์—ญ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ฒŒ ๋ฉ๋‹ˆ๋‹ค(์ด ์‹œ๊ฐ„ ๋™์•ˆ ์–ด๋–ค ๋ฆฌ์†Œ์Šค๋„ ์ฐจ๋‹จ๋  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค).

์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๊ฐ€์šฉ์„ฑ์„ ๋†’์ž…๋‹ˆ๋‹ค. ์ฐจ๋‹จ ๊ธฐ๋Šฅ์„ ํ™•์žฅํ•ฉ๋‹ˆ๋‹ค.

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

ํด๋ผ์ด์–ธํŠธ๋Š” ์œ ํšจ ๊ธฐ๊ฐ„ ๋‚ด์— ๋Œ€๋ถ€๋ถ„์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์ž ๊ทผ ๊ฒฝ์šฐ์—๋งŒ ์ž ๊ธˆ์„ ๋‹ค์‹œ ํš๋“ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ์‹ค, ๊ธฐ์ˆ ์ ์œผ๋กœ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์ž ๊ธˆ์„ ํš๋“ํ•˜๋ ค๋Š” ์ตœ๋Œ€ ๋ฐ˜๋ณต ์‹œ๋„ ํšŸ์ˆ˜๋Š” ์ œํ•œ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์ ‘๊ทผ์„ฑ ์†์„ฑ์ด ์œ„๋ฐ˜๋ฉ๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€