๊ฐœ๋ฐœ ์ง€์‹/WEB ์ง€์‹

๐ŸŒ ์„ธ์…˜(Session) ๋ถˆ์ผ์น˜ ๋ฌธ์ œ ๋ฐ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

์ธํŒŒ_ 2022. 6. 28. 08:28

session-์„ธ์…˜-๋ถˆ์ผ์น˜

์„œ๋ฒ„ ๋‹ค์ค‘ํ™” ํ™˜๊ฒฝ์—์„œ์˜ ์„ธ์…˜ ๋ถˆ์ผ์น˜

๋‹จ์ผ ์„œ๋ฒ„ ํ™˜๊ฒฝ์—์„œ๋Š” session์„ ํ†ตํ•œ ๋กœ๊ทธ์ธ์„ ๊ตฌํ˜„ํ• ๋•Œ session ๋ถˆ์ผ์น˜ ๋ฌธ์ œ๋ฅผ ์‹ ๊ฒฝ์“ธ ํ•„์š”๊ฐ€ ์—†๋‹ค.

ํ•˜์ง€๋งŒ ์„œ๋น„์Šค๊ฐ€ ์ปค์ง์— ๋”ฐ๋ผ ํ•œ๋Œ€์˜ ์„œ๋ฒ„๋กœ ์šด์˜ํ•˜๋Š”๊ฒƒ์ด ๋ถˆ๊ฐ€๋Šฅํ•ด์กŒ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด์ž. ๊ทธ๋ž˜์„œ ์„œ๋ฒ„๋ฅผ ์—…๊ทธ๋ ˆ์ด๋“œ ํ•ด์•ผ๋˜๋Š”๋ฐ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋‘๊ฐ€์ง€ ๋ฐฉ์‹์ด ์กด์žฌํ•œ๋‹ค.

 

์ฒซ๋ฒˆ์งธ ๋ฐฉ๋ฒ•์€ scale-up ๋ฐฉ์‹์ด๋‹ค.

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

 

๋‘๋ฒˆ์งธ ๋ฐฉ๋ฒ•์€ scale-out ๋ฐฉ์‹์ด๋‹ค.

์„œ๋ฒ„๋ฅผ ์—ฌ๋Ÿฌ๋Œ€๋กœ ๋Š˜๋ ค์„œ ๊ฐ ์„œ๋ฒ„์— ๋กœ๋“œ๋ฐธ๋Ÿฐ์‹ฑ์œผ๋กœ ํŠธ๋ž˜ํ”ฝ์„ ๋ถ„์‚ฐํ•˜๊ฒŒ ํ•œ๋‹ค. ๊ทธ๋ž˜์„œ ์„œ๋ฒ„ ํ•œ๋Œ€์— ์žฅ์• ๊ฐ€ ์ƒ๊ฒจ๋„ ๋‹ค๋ฅธ ์„œ๋ฒ„๋Š” ์‚ด์•„์žˆ์œผ๋‹ˆ ์„œ๋น„์Šค ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ์ง€ ์•Š๋Š”๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์ด๋•Œ ์„œ๋น„์Šค ์ด์šฉ์— ๋ฐœ์ƒํ•˜๋Š” ์ปค๋‹ค๋ž€ ๋ฌธ์ œ์ ์ด ์žˆ๋Š”๋ฐ ๋ฐ”๋กœ ๋ฐ์ดํ„ฐ ์ •ํ•ฉ์„ฑ, ์„ธ์…˜ ๋ถˆ์ผ์น˜ ๋ฌธ์ œ๋‹ค. 

์™œ๋ƒํ•˜๋ฉด ์—ฌ๋Ÿฌ ๋Œ€์˜ ์„œ๋ฒ„๊ฐ€ ๊ฐ๊ฐ ์„ธ์…˜ ์ €์žฅ์†Œ๋ฅผ ๋…๋ฆฝ์ ์œผ๋กœ ๊ฐ–๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ ๋ถˆ์ผ์น˜ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

Scale-Up : ์„œ๋ฒ„์˜ ์ŠคํŽ™์„ ๋Š˜๋ฆฌ๋Š” ๋ฐฉ์‹. (์„œ๋ฒ„์˜ ๋ฉ”๋ชจ๋ฆฌ์นด๋“œ๋‚˜ cpu ๋ถ€ํ’ˆ์„ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜์—ฌ ๋ถ€ํ•˜๋ฅผ ์ตœ์†Œํ™”)
Scale-Out : ์„œ๋ฒ„์˜ ๊ฐฏ์ˆ˜๋ฅผ ๋Š˜๋ฆฌ๋Š” ๋ฐฉ์‹. (์—ฌ๋Ÿฌ๋Œ€์˜ ์„œ๋ฒ„๋ฅผ ๋‘์–ด ๋ถ€ํ•˜๋ฅผ ๋ถ„์‚ฐ)
๋กœ๋“œ๋ฐธ๋Ÿฐ์‹ฑ ์ด๋ž€?
์—ฌ๋Ÿฌ ๋Œ€์˜ ์„œ๋ฒ„๋ฅผ ๋‘๊ณ  ํŠธ๋ž˜ํ”ฝ์„ ๋ถ„์‚ฐ์ฒ˜๋ฆฌํ•˜์—ฌ ์„œ๋ฒ„์˜ ๋กœ๋“œ์œจ ์ฆ๊ฐ€, ๋ถ€ํ•˜๋Ÿ‰, ์†๋„์ €ํ•˜ ๋“ฑ์„ ํ•ด๊ฒฐํ•ด์ฃผ๋Š” ์„œ๋น„์Šค.
ํŒ€์˜ ์—…๋ฌด๋ฅผ ํŒ€์žฅ์ด ํŒ€์›๋“ค์—๊ฒŒ ๋ฐฐ๋ถ„ํ•˜๋Š”๊ฒƒ๊ณผ ๊ฐ™์€ ์ด์น˜์ด๋‹ค.

 

์ดํ•ดํ•˜๊ธฐ ์‰ฝ๊ฒŒ ๊ทธ๋ฆผ์œผ๋กœ ์˜ˆ์‹œ๋ฅผ ๋“ค์–ด๋ณด์ž.

 

1. ์„œ๋ฒ„๋ฅผ 3๋Œ€๋ฅผ ์ฆ๊ฐ•์‹œํ‚ค๊ณ  ๋กœ๋“œ๋ฐธ๋Ÿฐ์„œ๋กœ ๊ฐ ์„œ๋ฒ„๋กœ ํŠธ๋ž˜ํ”ฝ ๋ถ„์‚ฐ์ด ๋˜๊ฒŒ ์šด์˜์ค‘์ด๋‹ค. 

session-์„ธ์…˜-๋ถˆ์ผ์น˜

 

2. ์ด๋•Œ ์‚ฌ์šฉ์ž๊ฐ€ ์„œ๋ฒ„1์— ์ ‘์†ํ•ด ๋กœ๊ทธ์ธ์„ ์ง„ํ–‰ํ•ด ์„œ๋ฒ„1์— ์„ธ์…˜์ด ์ €์žฅ๋œ๋‹ค

session-์„ธ์…˜-๋ถˆ์ผ์น˜

 

3. ๋กœ๊ทธ์ธ ํ•œํ›„ ๊ฒŒ์‹œํŒ์— ๊ธ€์„ ์“ฐ๊ธฐ ์œ„ํ•ด ์„œ๋ฒ„์— ์š”์ฒญํ–ˆ๋Š”๋ฐ, ๋กœ๋“œ๋ฐธ๋Ÿฐ์‹ฑ ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ์ธํ•ด ์„œ๋ฒ„1์ด ์•„๋‹Œ ์„œ๋ฒ„2๋กœ ์š”์ฒญ๋˜์–ด์ง„๋‹ค.

session-์„ธ์…˜-๋ถˆ์ผ์น˜

 

4. ํ•˜์ง€๋งŒ ์„œ๋ฒ„2์—๋Š” ์‚ฌ์šฉ์ž์˜ ๋กœ๊ทธ์ธ ์„ธ์…˜์ด ์—†๊ธฐ๋•Œ๋ฌธ์— ๋˜ ๋กœ๊ทธ์ธํ•˜๋ผ๋Š” ์‘๋‹ต์„ ๋ณด๋‚ด๊ฒŒ ๋œ๋‹ค. (๋ฐฉ๊ธˆ ๋กœ๊ทธ์ธ ํ–ˆ๋Š”๋ฐ?)

session-์„ธ์…˜-๋ถˆ์ผ์น˜

 

์ด ์ฒ˜๋Ÿผ, ์„œ๋น„์Šค ์•ˆ์ •์„ ์œ„ํ•ด ์„œ๋ฒ„๋ฅผ ๋Š˜๋ ค๋†จ๋”๋‹ˆ ์„œ๋น„์Šค ํ’ˆ์งˆ ์ž์ฒด๊ฐ€ ๋–จ์–ด์ง€๋Š” ๊ฒฐ๊ณผ๋ฅผ ๋งž์ดํ•ด ๋ฒ„๋ ธ๋‹ค.

์ด๋Ÿฌํ•œ ์„ธ์…˜์˜ ๋ฐ์ดํ„ฐ ์ •ํ•ฉ์„ฑ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•์—๋Š” ๋ฌด์—‡์ด ์žˆ๋Š”์ง€ ์‚ดํŽด๋ณด์ž.

๋ฐ์ดํ„ฐ ์ •ํ•ฉ์„ฑ (data consistency) ์ด๋ž€?
์–ด๋–ค ๋ฐ์ดํ„ฐ๋“ค์˜ ๊ฐ’์ด ์„œ๋กœ ์ผ์น˜ํ•จ
์„ธ์…˜ ๊ฐ์ฒด๋Š” ์–ด๋–ค ํ˜•ํƒœ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์„๊นŒ ?
์„ธ์…˜ ๊ฐ์ฒด๋Š” Key์— ํ•ด๋‹นํ•˜๋Š” SESSION ID์™€ ์ด์— ๋Œ€์‘ํ•˜๋Š” Value๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค.
Value์—๋Š” ์„ธ์…˜ ์ƒ์„ฑ ์‹œ๊ฐ„, ๋งˆ์ง€๋ง‰ ์ ‘๊ทผ ์‹œ๊ฐ„ ๋ฐ User๊ฐ€ ์ €์žฅํ•œ ์†์„ฑ ๋“ฑ ์ด Map ํ˜•ํƒœ๋กœ ์ €์žฅ๋œ๋‹ค.
์„ธ์…˜ ๊ฐ์ฒด

์„ธ์…˜์˜ ๋ถˆ์ผ์น˜ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

 

Sticky Session ๋ฐฉ์‹

๊ฐ„๋‹จํ•˜๊ฒŒ ์ƒ๊ฐํ•ด๋ณด๋ฉด ๋กœ๋“œ๋ฐธ๋Ÿฐ์„œ๊ฐ€ ๋žœ๋ค์œผ๋กœ ์•„๋ฌด ์„œ๋ฒ„์—๊ฒŒ ์š”์ฒญ์„ ๋ณด๋‚ด์„œ ๋ฐœ์ƒ๋œ ๋ฌธ์ œ์ด๋‹ˆ๊นŒ, ๋งŒ์ผ ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์ด ์–ด๋Š ํ•œ ์„œ๋ฒ„์— ๋„๋‹ฌํ•ด ์„ธ์…˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์ƒ๊ฒผ๋‹ค๋ฉด, ์•ž์œผ๋กœ ์ด ์„œ๋ฒ„๋Š” ํ•ด๋‹น ํด๋ผ์ด์–ธํŠธ๋งŒ์˜ ์š”์ฒญ/์‘๋‹ต๋งŒ ์ฒ˜๋ฆฌํ•˜๋„๋ก ๊ณ ์ •ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

Sticky Session

Sticky Session์ด๋ž€ ๋ง ๊ทธ๋Œ€๋กœ ๊ณ ์ •๋œ ์„ธ์…˜์„ ์˜๋ฏธํ•œ๋‹ค.

Sticky๋ž€ ๋ฒˆ์—ญํ•˜๋ฉด ๋ˆ์ ์ž„, ๊ปŒ๋”ฑ์ง€ ๋ผ๋Š” ๋œป์ด๋‹ค. ์‰ฝ๊ฒŒ ๋งํ•ด์„œ ํ•ด๋‹น ์„œ๋ฒ„์— ๊ปŒ๋”ฑ์ง€์ฒ˜๋Ÿผ ๋ถ™์–ด์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.

 

๋‹ค์Œ์€ sticky session ๋ฐฉ์‹์œผ๋กœ ์–ด๋–ป๊ฒŒ ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ๊ฐ€ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„์˜ ์—ฐ๊ฒฐ์„ ์ง€์†์‹œํ‚ฌ์ˆ˜ ์žˆ๋Š”์ง€์˜ ๊ณผ์ •์ด๋‹ค.

Sticky Session

  1. ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„์—๊ฒŒ ์ฒ˜์Œ ์š”์ฒญ์„ ์ „๋‹ฌํ•œ๋‹ค.
    ๊ทธ๋Ÿฌ๋ฉด ๋กœ๋“œ๋ฐธ๋Ÿฐ์„œ๋Š” ์„œ๋ฒ„๋“ค ์ค‘ ํ•˜๋‚˜์—๊ฒŒ ์š”์ฒญ์„ ๋ณด๋‚ด ์ฒ˜๋ฆฌํ•œ๋‹ค.
  2. ์„œ๋ฒ„์—์„œ ํด๋ผ์ด์–ธํŠธ์— ์‘๋‹ต์„ ๋ณด๋‚ผ ๋•Œ, Set Cookie : SERVERID=์„œ๋ฒ„1 ์ด๋Ÿฐ ํ˜•ํƒœ๋กœ ์ •๋ณด๋ฅผ ์ฟ ํ‚ค์— ๋‹ด์•„ ๋ณด๋‚ธ๋‹ค.
    ์‰ฝ๊ฒŒ ๋งํ•ด ๋„ˆ๋ฅผ ๋‹ด๋‹นํ•œ ์„œ๋ฒ„ ์ •๋ณด๋ฅผ ํด๋ผ์ด์–ธํŠธ์˜ ์ฟ ํ‚ค์— ์ €์žฅํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
  3. ์ดํ›„, ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋‹ค์‹œ ์„œ๋ฒ„์— ์š”์ฒญ์„ ๋ณด๋‚ผ๋•Œ Cookie : SERVERID=์„œ๋ฒ„1 ์„ ํ•จ๊ป˜ ๋ณด๋‚ธ๋‹ค
    ๊ทธ๋Ÿฌ๋ฉด ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ๊ฐ€ ์šฐ์„ ์ ์œผ๋กœ ์š”์ฒญ์— ์ฟ ํ‚ค ์ •๋ณด๊ฐ€ ์žˆ๋Š”์ง€ ๋ถ€ํ„ฐ ํ™•์ธํ•˜๊ณ , ์ฟ ํ‚ค์˜ ์ •๋ณด๋ฅผ ํ™•์ธํ–ˆ๋‹ค๋ฉด ํ•ด๋‹น ์š”์ฒญ์€ ํ•ด๋‹น ์ฟ ํ‚ค๊ฐ€ ์ƒ์„ฑ๋˜์–ด ์žˆ๋Š” ์„œ๋ฒ„๋กœ ๋ณด๋‚ด์ง€๊ฒŒ ๋œ๋‹ค.
  4. ๋งŒ์•ฝ ์กด์žฌํ•˜์ง€ ์•Š๋Š” ์ฟ ํ‚ค๋ผ๋ฉด, ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ์˜ํ•ด ์„ ์ •๋œ ๋‹ค๋ฅธ ์„œ๋ฒ„์— ์ฟ ํ‚ค๊ฐ€ ์ƒ์„ฑ๋˜์–ด ๋‹ค์Œ์— ๋˜‘๊ฐ™์€ ์š”์ฒญ์ด ์˜ค๋ฉด ๊ฐ™์€ ๊ฒฝ๋กœ๋กœ ๋งตํ•‘์‹œ์ผœ ์ค„ ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.

 

์ด๋ ‡๊ฒŒ ๋™์ผํ•œ ์‚ฌ์šฉ์ž๊ฐ€ ์„ธ์…˜์ด ์žˆ๋Š” ํ•ด๋‹น ์„œ๋ฒ„์— ๊ณ„์† ์š”์ฒญ์„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋„๋ก, ์ง€์†์ ์œผ๋กœ ์„œ๋ฒ„ ์ •๋ณด๊ฐ€ ์ฟ ํ‚ค๋ฅผ ํ†ตํ•ด ์‘๋‹ต์— ์‚ฝ์ž…๋˜์–ด ๋ณด๋‚ด์ง€๊ฒŒ ๋˜์–ด, ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๊ฐ€ ์„œ๋กœ ์—ฐ๊ฒฐ์„ ์œ ์ง€ํ• ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค.

์ด๋Ÿฌํ•œ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋ฉด ์œ ์ €๋Š” ์„ธ์…˜์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ ๋ถˆ์ผ์น˜ ๋ฌธ์ œ์—์„œ ์ž์œ ๋กœ์›Œ์งˆ ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

๋Œ€ํ‘œ์ ์œผ๋กœ AWS ELB(Elastic Load Balancer)๋Š” Sticky session์„ ํ™œ์šฉํ•œ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•œ๋‹ค.

Sticky Session ๋ฌธ์ œ์ 

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

  • ์„ธ์…˜ ์ •๋ณด์˜ ์œ ์‹ค
    ์„œ๋น„์Šค ์ค‘์— ๋งŒ์ผ ํ•˜๋‚˜์˜ ์„œ๋ฒ„์— ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ•˜๊ฒŒ ๋˜๋ฉด ํ•ด๋‹น ์„œ๋ฒ„๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ์šฉ์ž๋“ค์€ ์„ธ์…˜ ์ •๋ณด๋ฅผ ๋ชจ๋‘ ์žƒ๊ฒŒ ๋œ๋‹ค.
    ์ด๋ ‡๊ฒŒ ๋˜๋ฉด ๋‹ค๋ฅธ ์„œ๋ฒ„์—์„œ ์„ธ์…˜ ์ธ์ฆ์„ ๋‹ค์‹œ ํ•ด์•ผ ํ•˜๋Š” ๋ฌธ์ œ
    ๊ฐ€ ์ƒ๊ธฐ๊ฒŒ๋œ๋‹ค.

์ด์ฒ˜๋Ÿผ Sticky session์—์„œ๋Š” ์‚ฌ์šฉ์ž์™€ ์„ธ์…˜ ์ •๋ณด๋ฅผ ๊ฐ–๊ณ  ์žˆ๋Š” ์„œ๋ฒ„๋ฅผ 1:1๋กœ ๋งคํ•‘ํ•ด์ฃผ์–ด ์„ธ์…˜ ๋ถˆ์ผ์น˜๋ฅผ ํ•ด๊ฒฐํ•ด์ง€๋งŒ, ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด Scale out์˜ ์žฅ์ ์ธ ํŠธ๋ž˜ํ”ฝ ๋ถ„์‚ฐ๊ณผ ๊ฐ€์šฉ์„ฑ์„ ์ œ๋Œ€๋กœ ํ™œ์šฉํ•˜์ง€ ๋ชปํ•˜๊ฒŒ ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.


Session Clustering ๋ฐฉ์‹

์•ž์„œ sticky ์„ธ์…˜์€ ๊ฐ ์„œ๋ฒ„์— ์„ธ์…˜์„ ์ €์žฅํ•ด๋†“์•˜๋”๋‹ˆ ์„ธ์…˜ ๋ถˆ์ผ์น˜๋Š” ํ•ด๊ฒฐ๋˜์—ˆ์ง€๋งŒ ๋„๋ฆฌ์–ด ์„ฑ๋Šฅ์ด ์•ˆ์ข‹์•„์ง„๋‹ค๋Š” ๊ฒฐ๊ณผ๋ฅผ ๋‚ณ์•˜๋‹ค.

๊ทธ๋Ÿฌ๋ฉด ์„ธ์…˜ ์ •๋ณด๋ฅผ ๊ฐ ์„œ๋ฒ„๋งˆ๋‹ค ์ €์žฅํ•˜๋Š”๊ฒŒ ์•„๋‹Œ ์„ธ์…˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต์‚ฌํ•ด ์„œ๋ฒ„๋“ค์—๊ฒŒ ์ „ํŒŒํ•ด ๊ฐ€์ ธ๋‹ค ์“ธ์ˆ˜ ์žˆ์œผ๋ฉด ๋˜์ง€ ์•Š์„๊นŒ?

Session Clustering

์„ธ์…˜ ํด๋Ÿฌ์Šคํ„ฐ๋ง์€ ์„œ๋ฒ„๋“ค์„ ํ•˜๋‚˜์˜ ํด๋Ÿฌ์Šคํ„ฐ๋กœ ๋ฌถ์–ด ๊ด€๋ฆฌํ•˜๊ณ , ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด์˜ ์„œ๋ฒ„๋“ค์ด ์„ธ์…˜์„ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. 

์˜ˆ๋ฅผ๋“ค์–ด ์„œ๋ฒ„1์—์„œ login session์ด ์ €์žฅ๋˜์—ˆ๋‹ค๋ฉด, ์„œ๋ฒ„2์™€ ์„œ๋ฒ„3์—๋„ ์„œ๋ฒ„1์— ์ €์žฅ๋˜์–ด์žˆ๋Š” ์„ธ์…˜์„ ์ „ํŒŒ(๋ณต์‚ฌ)ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. 

 

WAS๋งˆ๋‹ค session clustering์„ ์ง€์›ํ•˜๋Š” ๋ฐฉ์‹์ด ์กฐ๊ธˆ์”ฉ ๋‹ค๋ฅธ๋ฐ,

๊ทธ์ค‘ ๊ฐ€์žฅ ๋Œ€ํ‘œ์  WAS์ธ ํ†ฐ์บฃ(Tomcat) ์—์„œ๋Š” ์–ด๋–ป๊ฒŒ Session Clustering์„ ๊ตฌํ˜„ํ•˜๊ณ  ์žˆ๋Š”์ง€ ์•Œ์•„๋ณด์ž.


Tomcat Session Clustering

Tomcat์—์„œ๋Š” ํฌ๊ฒŒ ๋‘ ๊ฐ€์ง€ ๋ฐฉ์‹์œผ๋กœ Session Clustering์„ ๊ตฌํ˜„ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค.

 

1. All-to-All Session Replication

Session Clustering

All-to-All ๋ฐฉ์‹์€ ํ•˜๋‚˜์˜ ์„ธ์…˜ ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด์—์„œ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ€๊ฒฝ๋˜๋ฉด ๋ณ€๊ฒฝ๋œ ์‚ฌํ•ญ์ด ๋‹ค๋ฅธ ๋ชจ๋“  ์„œ๋ฒ„๋กœ ๋ณต์ œ ๋˜๋Š” ๋ฐฉ์‹์œผ๋กœ, ํ†ฐ์บฃ์—์„œ ์ œ๊ณตํ•˜๋Š” DeltaManager ํด๋ž˜์Šค๋ฅผ ํ†ตํ•ด ๊ตฌํ˜„๋œ๋‹ค.

 

ํŠน์ • ์„œ๋ฒ„์— ์ƒ์„ฑ๋œ ์„ธ์…˜์„ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์ด๋ฃจ๋Š” ๋ชจ๋“  ์„œ๋ฒ„์— ์„ธ์…˜์„ ๋ณต์ œํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์„ ํ•œ ๊ณณ์œผ๋กœ ์ง€์ •ํ•˜์ง€ ์•Š์•„๋„ ๋˜๊ณ  ๋‹ค๋ฅธ ์„œ๋ฒ„๋กœ ์š”์ฒญ์„ ๋ณด๋‚ด๋”๋ผ๋„ ๊ฐ™์€ ์„ธ์…˜์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค. 

๋งŒ์ผ ์ด์šฉํ•˜๊ณ  ์žˆ๋Š” ์„œ๋ฒ„์— ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ•ด๋„ ๋‹ค๋ฅธ ์„œ๋ฒ„์—์„œ ์„ธ์…˜์„ ์œ ์ง€ํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํด๋ผ์ด์–ธํŠธ๋Š” ๋™์ผํ•œ ์„œ๋น„์Šค ํ™˜๊ฒฝ์„ ์ œ๊ณต๋ฐ›์„ ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

 

ํ•˜์ง€๋งŒ All-to-All ๋ฐฉ์‹์—์„œ๋Š” ๋ชจ๋“  ์„œ๋ฒ„๊ฐ€ ์ „์ฒด ์„ธ์…˜ ๋ฐ์ดํ„ฐ๋ฅผ ์œ ์ง€ํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ๋‹ค๋ฅธ ์„œ๋ฒ„์—์„œ ์„ธ์…˜์„ ์ฐพ๊ธฐ ์œ„ํ•œ ์ถ”๊ฐ€์ ์ธ ๋„คํŠธ์›ŒํŠธ I/O๊ฐ€ ๋ฐœ์ƒํ•˜์ง„ ์•Š์ง€๋งŒ, ๊ทธ๋งŒํผ ๋งŽ์€ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ํ•„์š”ํ•˜๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์„ธ์…˜์„ ์ €์žฅํ•  ๋•Œ ์„œ๋ฒ„ ์ˆ˜ ๋งŒํผ ๋ณต์ œํ•˜๊ณ  ๊ฐ ์„œ๋ฒ„์— ์ „๋‹ฌ, ์ €์žฅํ•ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋ฒ„ ์ˆ˜์— ๋น„๋ก€ํ•˜์—ฌ ๋„คํŠธ์›Œํฌ ํŠธ๋ž˜ํ”ฝ์ด ์ฆ๊ฐ€ํ•˜๊ฒŒ ๋˜๊ธฐ๋„ ํ•œ๋‹ค.

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

ํ†ฐ์บฃ ๊ณต์‹ ๋ฌธ์„œ์—์„œ๋„ All-to-All ๋ฐฉ์‹์€ ์†Œ๊ทœ๋ชจ ํด๋Ÿฌ์Šคํ„ฐ ํ™˜๊ฒฝ(๋…ธ๋“œ๊ฐ€ 4๊ฐœ ๋ฏธ๋งŒ)์—์„œ ์ข‹๊ณ , ์ด๋ณด๋‹ค ํฐ ํด๋Ÿฌ์Šคํ„ฐ ํ™˜๊ฒฝ์—์„œ๋Š” ์ถ”์ฒœํ•˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ํ•œ๋‹ค.
๊ทธ๋ฆฌ๊ณ  DeltaManager๋ฅผ ์‚ฌ์šฉํ•œ ๋ฐฉ์‹์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋ฐฐํฌ๋˜์ง€ ์•Š์€ ๋…ธ๋“œ์—๋„ ๋ณต์ œ๋ฅผ ์‹œ๋„ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ถˆํ•„์š”ํ•œ ํŠธ๋ž˜ํ”ฝ์„ ์„œ๋ฒ„์— ๋ฐœ์ƒ์‹œํ‚ค๋Š” ๋ฌธ์ œ๋„ ์กด์žฌํ•œ๋‹ค.
Tomcat์—์„œ๋Š” ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์Œ์œผ๋กœ ์†Œ๊ฐœํ•  BackupManager๋ฅผ ์ด์šฉํ•œ ๋ฐฉ๋ฒ•๋„ ์ œ๊ณตํ•ด์ค€๋‹ค.

 

2. Primary-Secondary Session Replication

Session Clustering

Primay-Secondary ๋ฐฉ์‹์€ Primary ์„œ๋ฒ„์˜ ์„ธ์…˜ ๋ฐ์ดํ„ฐ๋ฅผ Secondary(Backup) ์„œ๋ฒ„์—๋งŒ ์ „์ฒด ๋ณต์ œํ•˜์—ฌ ์ €์žฅํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ, BackupManager ํด๋ž˜์Šค๋ฅผ ํ†ตํ•ด ์ด ๋ฐฉ์‹์„ ์ œ๊ณตํ•˜๊ณ  ์žˆ๋‹ค.


All-to-All Session Replication ๋ฐฉ์‹์€ ๊ทธ๋ƒฅ ๋ฌด์‹ํ•˜๊ฒŒ ๋ชจ๋“  ์„œ๋ฒ„์— ๋ณต์ œํ•˜๊ณ  ์ €์žฅํ•˜๋Š” ๊ฒƒ๊ณผ ๋‹ฌ๋ฆฌ, Primary ์„œ๋ฒ„์™€ Secondary(Backup) ์„œ๋ฒ„์—๋งŒ ์ „์ฒด ์„ธ์…˜์„ ๋ณต์ œํ•˜์—ฌ ์ €์žฅํ•˜๋˜, ๋‚˜๋จธ์ง€ ์ด์™ธ์˜ ์„œ๋ฒ„๋“ค์—๋Š” ์„ธ์…˜์˜ Key์— ํ•ด๋‹นํ•˜๋Š” JSESSIONID๋งŒ ๋ณต์ œ, ์ €์žฅํ•จ์œผ๋กœ์จ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ ˆ์•ฝํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ์‹์ด๋‹ค.


ํ•˜์ง€๋งŒ ๋งŒ์ผ Primary, Secondary ์„œ๋ฒ„๋ฅผ ์ œ์™ธํ•œ ๋‹ค๋ฅธ ์„œ๋ฒ„์— ์„ธ์…˜ ์ •๋ณด๋ฅผ ์š”์ฒญํ•  ๊ฒฝ์šฐ ๋‹ค์‹œ ์˜จ์ „ํ•œ ์„ธ์…˜ ์ •๋ณด๋ฅผ ์–ป๊ธฐ ์œ„ํ•ด์„œ๋Š” Primary, Secondary์— ๋‹ค์‹œ ์š”์ฒญ์„ ๋ณด๋‚ด์•ผํ•œ๋‹ค๋Š”, ์„ธ์…˜ ๋ณต์ œ๋ฅผ ์œ„ํ•œ ๊ณผ์ •์ด ์ˆ˜ํ–‰๋˜๋Š” ๋ฌธ์ œ์ ์ด ์กด์žฌํ•œ๋‹ค.

Primary-Secondary Session Replication ๋ฐฉ์‹์€ ๋น„๊ต์  ๋Œ€๊ทœ๋ชจ ํด๋Ÿฌ์Šคํ„ฐ ํ™˜๊ฒฝ์—์„œ ์ ํ•ฉํ•œ ๋ฐฉ์‹์ด๋ผ๊ณ  ํ•œ๋‹ค.

Session Clustering ๋ฌธ์ œ์ 

์œ„์—์„œ ํ†ฐ์บฃ ์„ธ์…˜ ํด๋Ÿฌ์Šคํ„ฐ๋ง์„ ์„ค๋ช…ํ•˜๋ฉด์„œ ๊ฐ„๊ฐ„ํžˆ ๋ฌธ์ œ์ ์— ๋Œ€ํ•ด ์–ธ๊ธ‰ํ–ˆ์ง€๋งŒ ์ทจํ•ฉํ•˜์—ฌ ์ •๋ฆฌํ•˜์ž๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  • ์„œ๋ฒ„ ์„ธํŒ…์˜ ์–ด๋ ค์›€
    ์ด ๋ฐฉ์‹์€ scale out ๊ด€์ ์—์„œ ์ƒˆ๋กœ์šด ์„œ๋ฒ„๊ฐ€ ํ•˜๋‚˜ ๋œฐ ๋•Œ๋งˆ๋‹ค ๊ธฐ์กด์— ์กด์žฌํ•˜๋˜ WAS์— ์ƒˆ๋กœ์šด ์„œ๋ฒ„์˜ IP/Port๋ฅผ ์ž…๋ ฅํ•ด์„œ ํด๋Ÿฌ์Šคํ„ฐ๋ง ํ•ด์ค˜์•ผ ํ•˜๋Š” ๋ถˆํŽธํ•จ์ด ์žˆ๋‹ค.

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

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

  • ์‹œ์ฐจ๋กœ ์ธํ•œ ์„ธ์…˜ ๋ถˆ์ผ์น˜ ๋ฐœ์ƒ
    ์„ธ์…˜ ์ „ํŒŒ ์ž‘์—… ์ค‘ ๋ชจ๋“  ์„œ๋ฒ„์— ์„ธ์…˜์ด ์ „ํŒŒ๋˜๊ธฐ๊นŒ์ง€์˜ ์‹œ๊ฐ„์ฐจ๋กœ ์ธํ•œ ์„ธ์…˜ ๋ถˆ์ผ์น˜ ๋ฌธ์ œ์™€ ๊ฐ™์€ ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์กด์žฌํ•œ๋‹ค.

 

์ด์ฒ˜๋Ÿผ ์„ธ์…˜ ํด๋Ÿฌ์Šคํ„ฐ๋ง์€ sticky ์„ธ์…˜์˜ ๋ฌธ์ œ์ ์ธ ํŠน์ • ์„œ๋ฒ„์—๋งŒ ํŠธ๋ž˜ํ”ฝ์ด ๋ชฐ๋ฆฌ๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์„ธ์…˜ ํด๋Ÿฌ์Šคํ„ฐ๋ง์ด๋‚˜ sticky ์„ธ์…˜์ด๋‚˜ ์„œ๋ฒ„๊ฐ€ ์„ธ์…˜์ด๋ผ๋Š” ์ƒํƒœ(๋ฐ์ดํ„ฐ)๋ฅผ ๊ฐ€์ง„๋‹ค๋Š” ๊ฒƒ์€ ๋ณ€ํ•จ์ด ์—†๋‹ค๋Š” ํŠน์ง•์ด ์žˆ๋‹ค

 "์„œ๋ฒ„๊ฐ€ ์ƒํƒœ(๋ฐ์ดํ„ฐ)๋ฅผ ๊ฐ€์ง„๋‹ค"๋ผ๋Š” ์˜๋ฏธ๋Š” Scale out ๋ฐฉ์‹์œผ๋กœ ํ™•์žฅ์„ ํ–ˆ์„ ๋•Œ ์„œ๋ฒ„๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ํ™•์žฅํ•˜๋Š” ์„œ๋ฒ„์—๋„ ๋˜‘๊ฐ™์ด ๋งž์ถฐ์ค˜์•ผ ํ•œ๋‹ค๋Š” ๋œป์ด๋‹ค. ์ด๋Š” ๊ณง ์˜ค๋ฒ„ํ—ค๋“œ๋กœ ์ด์–ด์ง„๋‹ค.

 

์ •๋ฆฌํ•˜๋ฉด, ์„ธ์…˜ ํด๋Ÿฌ์Šคํ„ฐ๋ง์€ ์ •ํ•ฉ์„ฑ ์ด์Šˆ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ์„ฑ๋Šฅ์ ์ธ ํ•œ๊ณ„๊ฐ€ ์กด์žฌํ•œ๋‹ค๊ณ  ๋ง ํ•  ์ˆ˜ ์žˆ๋‹ค.


Session Storage ๋ฐฉ์‹

๊ทธ๋ ‡๋‹ค๋ฉด ์œ„์˜ ๋‘ ๋ฐฉ์‹์˜ ๋‹จ์ ์„ ๋ณด์™„ํ•˜์—ฌ ๋‹ค์ค‘ ์„œ๋ฒ„์—์„œ ์„ธ์…˜์„ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์—†์„๊นŒ?

๋ชจ๋“  ์„œ๋ฒ„์— ์ผ์ผํžˆ ์„ธ์…˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋ณต์ œ/์ €์žฅํ•˜๋Š” ๊ฒƒ์ด ๋‚ญ๋น„๋ผ๋ฉด, ๊ทธ๋Ÿผ ๋ณ„๋„์˜ ์„ธ์…˜ ์ €์žฅ์†Œ๋ฅผ ์™ธ๋ถ€์—์„œ ์ƒ์„ฑํ•˜๊ณ  ๊ฐ ์„œ๋ฒ„๋“ค์ด ๊ฐ€์ ธ์™€ ์‚ฌ์šฉํ•˜๋ฉด ๋˜์ง€ ์•Š์„๊นŒ?

Session Storage

 

์„ธ์…˜ ์Šคํ† ๋ฆฌ์ง€๋Š” ๊ธฐ์กด์˜ ์„œ๋ฒ„ ๋‚ด ์„ธ์…˜ ์ €์žฅ์†Œ๋ฅผ ์ด์šฉํ•˜์ง€ ์•Š๊ณ , ๋กœ์ปฌ ์„œ๋ฒ„์—์„œ ๋ถ„๋ฆฌํ•ด ๋ณ„๋„์˜ ์„ธ์…˜ ์ €์žฅ์†Œ๋ฅผ ๋‘๊ณ  ์„œ๋ฒ„๋“ค์ด ์ด๋ฅผ ๊ณต์œ ํ•จ์œผ๋กœ์จ ์„ธ์…˜ ๋ถˆ์ผ์น˜๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

 

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

๊ทธ๋ž˜์„œ ์„ธ์…˜์„ ์ €์žฅํ•  ๋•Œ ์„ธ์…˜์„ ๋ณต์ œํ•ด ๋‹ค๋ฅธ ์„œ๋ฒ„๋“ค์— ๋ณด๋‚ผ ํ•„์š”๊ฐ€ ์—†์–ด WAS๋“ค๋ผ๋ฆฌ ๋ถˆํ•„์š”ํ•œ ๋„คํŠธ์›Œํฌ ํ†ต์‹  ๊ณผ์ •์„ ์ง„ํ–‰ํ•˜์ง€ ์•Š์•„๋„ ๋˜์–ด ์„ฑ๋Šฅ๋ฉด์—์„œ๋„ ์œ ๋ฆฌํ•˜๋‹ค.

๋˜ํ•œ, ํ•œ ์„œ๋ฒ„์— ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ•˜๋”๋ผ๋„ ์„ธ์…˜์€ ์ด์™€ ๋…๋ฆฝ๋˜์–ด ๋ณ„๋„๋กœ ์กด์žฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์„ธ์…˜์„ ํ™œ์šฉํ•œ ์„œ๋น„์Šค์— ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š๋Š”๋‹ค.


Session Storage ์ข…๋ฅ˜

์„ธ์…˜ Storage์˜ ์ข…๋ฅ˜์—๋Š” ๋‘๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค.

๋จผ์ € ์ฒซ๋ฒˆ์งธ๋กœ Disk๋ฐฉ์‹์œผ๋กœ ๋˜์—ˆ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์žˆ๊ณ  ๋‘๋ฒˆ์งธ๋กœ In-Memory ๊ธฐ๋ฐ˜์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์žˆ๋‹ค.

ํ•ด๋‹น ๋ฐฉ๋ฒ•์œผ๋กœ ์„ธ์…˜์˜ ์ •ํ•ฉ์„ฑ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ• ๋•Œ ์„ธ์…˜ ์ €์žฅ์†Œ๋กœ ์–ด๋–ค๊ฒƒ์„ ์‚ฌ์šฉํ• ์ง€ ๊ณ ๋ฏผํ•ด๋ณด๊ณ , ๊ทธ์— ๋”ฐ๋ฅธ ํƒ€๋‹นํ•œ ์ด์œ ๊ฐ€ ๋’ท๋ฐ›์นจ ๋˜์–ด์•ผ ํ•œ๋‹ค.

 

1. Disk Database (MySql, Oracle)

๋ง ๊ทธ๋Œ€๋กœ ์„ธ์…˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋””์Šคํฌ์— ์ €์žฅํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

๋”ฐ๋ผ์„œ ์ „์›์ด ๊ณต๊ธ‰์ด ์•ˆ๋˜๋„ ๋””์Šคํฌ์—๋Š” ์ •๋ณด๋ฅผ ์žƒ์ง€ ์•Š๊ณ  ์ž˜ ์œ ์ง€ํ•œ๋‹ค.

ํ•˜์ง€๋งŒ ํฐ ๋‹จ์ ์ด ํ•˜๋‚˜ ์žˆ๋Š”๋ฐ ์†๋„๊ฐ€ ๋„ˆ๋ฌด ๋Š๋ฆฌ๋‹ค๋Š” ๊ฒƒ์ด ๋งน์ ์ด๋‹ค.

Disk Database

 

2. In-Memory (Redis / Memchached)

In-Memory๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅํ•˜๋Š” ๋ฐฉ์‹๋‹ค.

๊ทธ๋ž˜์„œ I/O์†๋„๊ฐ€ ๋””์Šคํฌ์™€ ๋น„๊ตํ•ด์„œ ๋งค์šฐ ๋น ๋ฅด๋‹ค.

ํ•˜์ง€๋งŒ ์ด๊ฒƒ๋˜ํ•œ ๋‹จ์ ์ด ์žˆ๋Š”๋ฐ ์ „์›์ด ๊ณต๊ธ‰๋˜์ง€ ์•Š์œผ๋ฉด ๊ธฐ์–ตํ•˜๊ณ  ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ๋‘ ์žƒ์–ด๋ฒ„๋ฆฌ๊ฒŒ ๋œ๋‹ค.

In-Memory

 

๋‘๊ฐ€์ง€ ๋ฐฉ์‹์ค‘์— ์„ธ์…˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•œ๋‹ค๋Š” ๊ด€์ ์—์„œ ์–ด๋Š๊ฒƒ์ด ์ข‹์„๊นŒ?

์ƒ๊ฐํ•ด๋ณด๋ฉด Session์€ ์˜๊ตฌ์ ์ธ ์ €์žฅ์ด ํ•„์š”ํ•˜์ง€ ์•Š๋Š”๋‹ค.

์˜ˆ๋กœ, ๊ฐœ์ธ์ •๋ณด๊ฐ€ ๋” ์ค‘์š”ํ•œ ์š”์ฆ˜์€ ์ง€์ •ํ•œ ์‹œ๊ฐ„์„ ๋„˜๊ธฐ๋ฉด ์ž๋™์œผ๋กœ ๋กœ๊ทธ์•„์›ƒ๋˜๊ฒŒ ์ฒ˜๋ฆฌ ๋˜์–ด ์žˆ๋‹ค.

๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์„ธ์…˜ ์ •๋ณด๋Š” ์˜๊ตฌ์ ์ธ ์ •๋ณด ์ €์žฅ์„ ์•ฝ์†ํ•œ๋‹ค๋Š” ๋””์Šคํฌ ๋ฐฉ์‹์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ๋งค๋ ฅ์ ์ด์ง€ ๋ชปํ•˜๋‹ค๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

๋Œ€์‹ ์— ๋””์Šคํฌ์— ๋น„ํ•ด ์••๋„์ ์„ ์ž…์ถœ๋ ฅ ์†๋„๊ฐ€ ๋น ๋ฅธ In-Memory ๋ฐฉ์‹์ด ๋” ์ ํ•ฉํ•˜๋‹ค.


Session Storage ๋ฌธ์ œ์ 

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

  • ์„ฑ๋Šฅ์ ์ธ ๋งˆ์ด๋„ˆ์Šค
    ๋ณ„๋„์˜ Session storage๋กœ๋ถ€ํ„ฐ ์„ธ์…˜์„ ๋ถˆ๋Ÿฌ์™€์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ถ”๊ฐ€์ ์ธ ๋„คํŠธ์›ŒํŠธ I/O๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค๋Š” ์ ์ด๋‹ค.
    ์„ธ์…˜์„ ์™ธ๋ถ€์—์„œ ๊ฐ€์ ธ์™€ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋กœ์ปฌ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅํ•ด ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ์„ฑ๋Šฅ์ ์ธ ๋ฉด์—์„œ ๋–จ์–ด์งˆ ์ˆ˜ ๋ฐ–์— ์—†๋‹ค.

# ์ฐธ๊ณ ์ž๋ฃŒ

https://liasn.tistory.com/3

https://1-7171771.tistory.com/126

https://d2.naver.com/helloworld/284659?source=post_page-----f1fd4ceecbc7---------------------- 

https://hyuntaeknote.tistory.com/6