๐Ÿ–ฅ๏ธ ๋‹ค์ค‘ ์„œ๋ฒ„ ํ™˜๊ฒฝ์—์„œ ์„ธ์…˜ ๊ธฐ๋ฐ˜ ์ธ์ฆ ๋ฌธ์ œ์™€ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• ์ด์ •๋ฆฌ

์—…๋ฐ์ดํŠธ:
2 ๋ถ„ ์†Œ์š”

๐Ÿ–ฅ๏ธ ๋‹ค์ค‘ ์„œ๋ฒ„ ํ™˜๊ฒฝ์—์„œ ์„ธ์…˜ ๊ธฐ๋ฐ˜ ์ธ์ฆ ๋ฌธ์ œ์™€ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• ์ด์ •๋ฆฌ


๐Ÿ“Œ ๋ฌธ์ œ ์ƒํ™ฉ: ์„ธ์…˜ ๋ถˆ์ผ์น˜(Session Mismatch)

โ€œ์™œ ๋กœ๊ทธ์ธํ–ˆ๋Š”๋ฐ, ๊ฐ‘์ž๊ธฐ ์ธ์ฆ์ด ํ’€๋ฆฌ์ง€?โ€

๋‹ค์ค‘ ์„œ๋ฒ„ ํ™˜๊ฒฝ(ex: ์„œ๋ฒ„ A, ์„œ๋ฒ„ B)์—์„œ๋Š” ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ๊ฐ€ ์š”์ฒญ์„ ๋ถ„์‚ฐ์‹œํ‚ค๊ธฐ ๋•Œ๋ฌธ์—
์„ธ์…˜ ์ •๋ณด๊ฐ€ ์ €์žฅ๋œ ์„œ๋ฒ„์™€ ๋‹ค๋ฅธ ์„œ๋ฒ„๋กœ ์š”์ฒญ์ด ๊ฐ€๋ฉด,
์„ธ์…˜์„ ๋ชป ์ฐพ๊ณ  ์ธ์ฆ ์‹คํŒจ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

โœ… ์ด๊ฑธ ๋ฐ”๋กœ โ€œ์„ธ์…˜ ๋ถˆ์ผ์น˜ ๋ฌธ์ œโ€œ๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.


๐Ÿงฉ ์„ธ์…˜ ๋ถˆ์ผ์น˜ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• 3๊ฐ€์ง€

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

1๏ธโƒฃ ์Šคํ‹ฐํ‚ค ์„ธ์…˜ (Sticky Session)

๐ŸŒŸ ๊ฐœ๋…

  • ์‚ฌ์šฉ์ž๊ฐ€ ์ฒ˜์Œ ์—ฐ๊ฒฐ๋œ ์„œ๋ฒ„์— ๊ณ ์ •.
  • ์ฟ ํ‚ค๋‚˜ IP๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์„œ๋ฒ„๋ฅผ ๊ณ ์ •ํ•˜๋Š” ๋ฐฉ์‹.

๐ŸŽฏ ์˜ˆ์‹œ

์‚ฌ์šฉ์ž๊ฐ€ A ์„œ๋ฒ„์—์„œ ๋กœ๊ทธ์ธ โ†’ ์ดํ›„ ๋ชจ๋“  ์š”์ฒญ์€ A ์„œ๋ฒ„๋กœ ๊ณ ์ •

โœ… ์žฅ์ 

  • ์ ์šฉ์ด ์‰ฝ๊ณ  ๋น ๋ฅด๋‹ค.
  • ์ฝ”๋“œ ์ˆ˜์ • ์—†์ด ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ ์„ค์ •๋งŒ ๋ณ€๊ฒฝํ•˜๋ฉด ๋œ๋‹ค.

โš ๏ธ ๋‹จ์ 

  • A ์„œ๋ฒ„์— ๊ณ ์ •๋œ ์‚ฌ์šฉ์ž๊ฐ€ ๋ชฐ๋ฆฌ๋ฉด ํŠธ๋ž˜ํ”ฝ ๋ถˆ๊ท ํ˜•.
  • A ์„œ๋ฒ„ ๋‹ค์šด ์‹œ, ํ•ด๋‹น ์‚ฌ์šฉ์ž๋“ค์€ ๋‹ค์‹œ ๋กœ๊ทธ์ธํ•ด์•ผ ํ•จ.

2๏ธโƒฃ ์„ธ์…˜ ํด๋Ÿฌ์Šคํ„ฐ๋ง (Session Replication)

๐ŸŒŸ ๊ฐœ๋…

  • ์„ธ์…˜ ์ƒ์„ฑ ์‹œ, ๋ชจ๋“  ์„œ๋ฒ„์— ์„ธ์…˜ ๋ณต์ œ.
  • ์–ด๋А ์„œ๋ฒ„์— ์š”์ฒญ์ด ๊ฐ€๋„ ์„ธ์…˜์„ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค.

๐ŸŽฏ ์˜ˆ์‹œ

A ์„œ๋ฒ„์—์„œ ๋กœ๊ทธ์ธ โ†’ B, C ์„œ๋ฒ„์—๋„ ๊ฐ™์€ ์„ธ์…˜ ๋ณต์ œ โ†’ ์–ด๋–ค ์„œ๋ฒ„๋กœ ๊ฐ€๋„ ๋กœ๊ทธ์ธ ์ƒํƒœ ์œ ์ง€

โœ… ์žฅ์ 

  • ์„œ๋ฒ„ ์žฅ์• ์—๋„ ์„ธ์…˜ ์œ ์ง€ ๊ฐ€๋Šฅ.
  • ์Šคํ‹ฐํ‚ค ์„ธ์…˜์ฒ˜๋Ÿผ ํŠธ๋ž˜ํ”ฝ ์ ๋ฆผ ์—†์Œ.

โš ๏ธ ๋‹จ์ 

  • ์„œ๋ฒ„ ๊ฐ„ ๋ณต์ œ ํŠธ๋ž˜ํ”ฝ ๋ฐœ์ƒ โ†’ ์„ฑ๋Šฅ ์ €ํ•˜ ๊ฐ€๋Šฅ.
  • ๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„ (์„œ๋ฒ„๋งˆ๋‹ค ๊ฐ™์€ ์„ธ์…˜ ์ €์žฅ).
  • ๋ณต์ œ ์ง€์—ฐ ์‹œ ์ผ์‹œ์  ์„ธ์…˜ ์œ ์‹ค ๊ฐ€๋Šฅ.

3๏ธโƒฃ ์Šคํ† ๋ฆฌ์ง€ ๋ถ„๋ฆฌ (External Storage)

๐ŸŒŸ ๊ฐœ๋…

  • ์„ธ์…˜ ์ •๋ณด๋ฅผ ์„œ๋ฒ„ ๋ฐ–(DB, Redis ๋“ฑ)์— ์ €์žฅ.
  • ์„œ๋ฒ„๋Š” ์„ธ์…˜ ์ €์žฅ์„ ์ง์ ‘ ๋‹ด๋‹นํ•˜์ง€ ์•Š์Œ.

๐ŸŽฏ ์˜ˆ์‹œ

Redis์— ์„ธ์…˜ ์ €์žฅ โ†’ A, B, C ์„œ๋ฒ„ ๋ชจ๋‘ Redis์—์„œ ์„ธ์…˜ ์กฐํšŒ

โœ… ์žฅ์ 

  • ์„œ๋ฒ„ ๊ฐ„ ์„ธ์…˜ ์ผ๊ด€์„ฑ 100% ๋ณด์žฅ.
  • ์„œ๋ฒ„ ์ˆ˜ํ‰ ํ™•์žฅ(Scale-out) ๋งค์šฐ ์œ ๋ฆฌ.

โš ๏ธ ๋‹จ์ 

  • ์Šคํ† ๋ฆฌ์ง€ ์žฅ์• (SPOF: Single Point of Failure) ์œ„ํ—˜ ์กด์žฌ.
  • ๋ณ„๋„ ์Šคํ† ๋ฆฌ์ง€ ๊ด€๋ฆฌ, HA ๊ตฌ์„ฑ ํ•„์š”.

๐Ÿš€ ์ •๋ฆฌ: ์‹ค๋ฌด ์ถ”์ฒœ

์ƒํ™ฉ ์ถ”์ฒœ ๋ฐฉ๋ฒ•
์†Œ๊ทœ๋ชจ ์„œ๋น„์Šค (2~3๋Œ€ ์„œ๋ฒ„) ์Šคํ‹ฐํ‚ค ์„ธ์…˜
์ค‘๊ทœ๋ชจ ์ด์ƒ ์„œ๋น„์Šค (5๋Œ€ ์ด์ƒ ์„œ๋ฒ„) ์™ธ๋ถ€ ์Šคํ† ๋ฆฌ์ง€ (ex: Redis)
์—„์ฒญ ๋น ๋ฅธ ๋ฐ์ดํ„ฐ ์ „ํŒŒ๊ฐ€ ํ•„์š” ์„ธ์…˜ ํด๋Ÿฌ์Šคํ„ฐ๋ง (๋‹จ, ์ฃผ์˜!)

๐Ÿง  ๋น ๋ฅด๊ฒŒ ๊ธฐ์–ตํ•˜๋Š” ๋ฒ•

์„ธ์…˜ ๋ถˆ์ผ์น˜ โ†’ ์Šค-ํด-์Šค๋กœ ๊ธฐ์–ตํ•˜์ž!

  • ์Šคํ‹ฐํ‚ค ์„ธ์…˜ โ†’ โ€œ์„œ๋ฒ„์— ๊ณ ์ •โ€
  • ํด๋Ÿฌ์Šคํ„ฐ๋ง โ†’ โ€œ์„œ๋ฒ„๋ผ๋ฆฌ ๋ณต์ œโ€
  • ์Šคํ† ๋ฆฌ์ง€ ๋ถ„๋ฆฌ โ†’ โ€œ์„œ๋ฒ„ ๋ฐ–์œผ๋กœ ๋นผ๊ธฐโ€

์Šค-ํด-์Šค๋งŒ ๊ธฐ์–ตํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.


๐Ÿ“š ๋งˆ๋ฌด๋ฆฌ

์„ธ์…˜ ๊ด€๋ฆฌ ์ „๋žต์€ ์„œ๋น„์Šค ๊ทœ๋ชจ์™€ ์š”๊ตฌ ์„ฑ๋Šฅ์— ๋”ฐ๋ผ ๋‹ค๋ฅด๊ฒŒ ์„ ํƒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

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

๋ฌธ์ œ๋Š” ํ•œ ๋ฒˆ ๊ฒฝํ—˜ํ•˜๊ณ  ๋‚˜์•ผ ์ง„์งœ ๊ธฐ์–ต์— ๋‚จ๋Š”๋‹ค!

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