๐Ÿงท CS-Network ์Šคํ„ฐ๋””

์ฝ”๋“œ์Šค์ฟผ๋“œ ๊ณผ์ •์„ ๋งˆ์น˜๊ณ  ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž๋กœ์„œ ์•Œ์•„์•ผ๋  ๋„คํŠธ์›Œํฌ ์ง€์‹์„ ์ฑ„์šฐ๊ธฐ ์œ„ํ•ด ์‹œ์ž‘ํ•œ CS ์Šคํ„ฐ๋””!
Tech-Interview-Network๋ฅผ ์ฐธ๊ณ ํ•˜์—ฌ ์Šคํ„ฐ๋””๋ฅผ ์ง„ํ–‰ํ•˜๊ธฐ๋กœ ํ–ˆ๋‹ค.

1. ์ฟ ํ‚ค์™€ ์„ธ์…˜์˜ ์ฐจ์ด์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

๋จผ์ € ์ฟ ํ‚ค์™€ ์„ธ์…˜์€ ๋ชจ๋‘ HTTP์˜ connectionless, stateless๋ฅผ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด ๋“ฑ์žฅํ•œ ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค.

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

์šฉ๋Ÿ‰, ์„œ๋ฒ„ ๋ถ€ํ•˜, ๋ณด์•ˆ ๋“ฑ์˜ ์ฐจ์ด๊ฐ€ ์žˆ์ง€๋งŒ ๋ผ์ดํ”„ ์‚ฌ์ดํด์— ๋Œ€ํ•œ ๋Œ€๋‹ต์„ ํ•˜๋Š” ๊ฒŒ ๊ฐ€์žฅ ์ข‹๋‹ค๊ณ  ํ•œ๋‹ค!
์„ธ์…˜ ์ฟ ํ‚ค: ์„œ๋ฒ„์—์„œ ์ฟ ํ‚ค๋ฅผ ๋งŒ๋“ค ๋•Œ, ์œ ํšจ์‹œ๊ฐ„์„ ์ง€์ •ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ๋กœ ๋ธŒ๋ผ์šฐ์ €๋ฅผ ๋‹ซ์œผ๋ฉด ์‚ญ์ œ๋œ๋‹ค.

1. ์„ธ์…˜ ๋ฐฉ์‹์˜ ๋กœ๊ทธ์ธ ๊ณผ์ •์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

๋จผ์ € ์„ธ์…˜์€ ์œ ์ €๊ฐ€ ์›น์„œ๋ฒ„์— ์ ‘์†ํ•ด ์žˆ๋Š” ์ƒํƒœ๋ฅผ ํ•˜๋‚˜์˜ ๋‹จ์œ„๋กœ ํ•œ ๊ฐœ๋…์ž…๋‹ˆ๋‹ค. ์ด ๋•Œ, ๊ฐ ๋‹จ์œ„์ธ ์„ธ์…˜์— ๋Œ€ํ•ด id๋ฅผ ๋ถ€์—ฌํ•œ ๊ฒƒ์ด ์„ธ์…˜ id๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

  • ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋กœ๊ทธ์ธ ์ •๋ณด(์œ ์ €id, ์•”ํ˜ธ ๋“ฑ)์™€ ํ•จ๊ป˜ ์„œ๋ฒ„์— ๋กœ๊ทธ์ธ ์š”์ฒญ์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค.
  • ์„œ๋ฒ„๋Š” ๋กœ๊ทธ์ธ ์ธ์ฆ์„ ํ•˜๊ณ  ํ•ด๋‹น ์ •๋ณด๊ฐ€ ์œ ํšจํ•˜๋ฉด ์„ธ์…˜ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ํ•ด๋‹น ์„ธ์…˜์— ๋Œ€ํ•œ id๋ฅผ ์‘๋‹ต ํ—ค๋”์˜ Set-cookie๋ฅผ ํ†ตํ•ด ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.
  • ํด๋ผ์ด์–ธํŠธ๋Š” ์‘๋‹ต ํ—ค๋”์˜ Set-cookie์— ๋”ฐ๋ผ ์ฟ ํ‚ค ์ €์žฅ์†Œ์— ์„ธ์…˜ id๋ฅผ ์ €์žฅํ•˜๊ฒŒ ๋˜๊ณ  ์ดํ›„ ์š”์ฒญ ์‹œ, ์„ธ์…˜ id๋ฅผ ํ—ค๋”์— ๋‹ด์•„ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.
  • ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์š”์ฒญ๊ณผ ํ•จ๊ป˜ ๋ณด๋‚ธ ์„ธ์…˜ id๋ฅผ ํ†ตํ•ด ๊ด€๋ฆฌ ์ค‘์ธ ์„ธ์…˜์—์„œ ์ •๋ณด๋ฅผ ์ฐพ์•„ ์‘๋‹ตํ•ฉ๋‹ˆ๋‹ค.

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

2. HTTP์˜ ํŠน์„ฑ์ธ Stateless์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

์ƒํƒœ๋ฅผ ๊ฐ–๊ณ  ์žˆ์ง€ ์•Š๋‹ค๋Š” ์˜๋ฏธ๋กœ ์ฃผ๋กœ ์„œ๋ฒ„์—์„œ ๊ธฐ์–ต๋˜์–ด์ง€๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์—†์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์š”์ฒญ์„ ํ•  ๋•Œ๋งˆ๋‹ค ์‘๋‹ต์— ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋งค๋ฒˆ ๋ณด๋‚ด์•ผํ•ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ ์ด์ „ ์š”์ฒญ์—์„œ ์ „๋‹ฌ๋ฐ›์€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ทธ ๋‹ค์Œ ์š”์ฒญ์— ์‘๋‹ต์„ ํ•œ๋‹ค๋ฉด ์ด๋Š” ์„œ๋ฒ„์—์„œ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๊ณ  ์žˆ๋Š” ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ statelessํ•˜๊ฒŒ ์œ ์ง€ํ•˜๋ฉด ์–ธ์ œ๋“  ์„œ๋ฒ„๋ฅผ ๋Œ€์ฒดํ•  ์ˆ˜ ์žˆ๊ณ  ์‰ฝ๊ฒŒ ํ™•์žฅํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

3. Stateless์˜ ์˜๋ฏธ๋ฅผ ์‚ดํŽด๋ณด๋ฉด, ์„ธ์…˜์€ ์ ์ ˆํ•˜์ง€ ์•Š์€ ์ธ์ฆ ๋ฐฉ๋ฒ• ์•„๋‹Œ๊ฐ€์š”?

stateless์˜ ์˜๋ฏธ๋งŒ์„ ์‚ดํŽด๋ณด๋ฉด ์„ธ์…˜์€ statelessํ•˜์ง€ ์•Š๊ธฐ์— ์ ์ ˆํ•˜์ง€ ์•Š๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์˜ˆ๋ฅผ ๋“ค์–ด ๋กœ๊ทธ์ธ ํ›„ ํšŒ์›์˜ ๋กœ๊ทธ์ธ ์œ ๋ฌด๋ฅผ ์œ ์ง€ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•  ๋•Œ, HTTP์˜ statelessํ•œ ์„ฑ์งˆ์„ ์œ ์ง€ํ•˜๋ฉด์„œ ๋งค ์š”์ฒญ๋งˆ๋‹ค ํšŒ์›์˜ ๋กœ๊ทธ์ธ ์ •๋ณด๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ์€ ํšจ์œจ์ ์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ๊ทน๋ณตํ•˜๊ธฐ ์œ„ํ•ด ์„ธ์…˜๊ณผ ๊ฐ™์€ state๋ฅผ ๋ถ€์—ฌํ•œ ๊ฒƒ์ด๋ฏ€๋กœ ๊ธฐ๋Šฅ์˜ ํšจ์œจ๋ฉด์—์„œ๋Š” ์ ์ ˆํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

4. ๊ทœ๋ชจ๊ฐ€ ์ปค์ ธ ์„œ๋ฒ„๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ๊ฐ€ ๋œ๋‹ค๋ฉด, ์„ธ์…˜์„ ์–ด๋–ป๊ฒŒ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์„๊นŒ์š”?

ํŠน์ • ์œ ์ €์— ๋Œ€ํ•ด์„œ๋Š” ๊ณ ์ •๋œ ์„œ๋ฒ„๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ๋”ํ•˜๋Š” Sticky Session ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ๋Š” ์š”์ฒญ ํ—ค๋”์˜ ์ฟ ํ‚ค๋ฅผ ํ™•์ธํ•˜๊ณ  ์ฟ ํ‚ค๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฉด ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ํ•ด๋‹น ์š”์ฒญ์— ๋Œ€ํ•œ ์„œ๋ฒ„๋ฅผ ๋ถ€์—ฌํ•˜๊ณ  ์ฟ ํ‚ค๊ฐ€ ์กด์žฌํ•˜๋ฉด ์ด์ „์— ํ†ต์‹ ํ–ˆ๋˜ ์„œ๋ฒ„๋กœ ์š”์ฒญ์„ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด ๋ฐฉ๋ฒ• ๋˜ํ•œ ์„œ๋ฒ„ ํ•˜๋‚˜๊ฐ€ ์ฃฝ์œผ๋ฉด ์œ ์ €๊ฐ€ ์žฌ์š”์ฒญํ•ด์•ผํ•˜๊ณ  ์šฐ์—ฐํžˆ ํŠน์ • ์„œ๋ฒ„๋กœ ํŠธ๋ž˜ํ”ฝ์ด ๋ชฐ๋ฆฌ๋Š” ๊ฒฝ์šฐ๊ฐ€ ์ƒ๊ธธ ์ˆ˜ ์žˆ๋Š” ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
๊ฐ€์žฅ ์ด์ƒ์ ์œผ๋กœ ์ƒ๊ฐํ•ด๋ณด๋ฉด ๋ชจ๋“  ์„œ๋ฒ„๋ฅผ ํ•˜๋‚˜์˜ ์„œ๋ฒ„์ฒ˜๋Ÿผ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋‹ค๋ฉด ์œ„์™€ ๊ฐ™์€ ๋ฌธ์ œ๋“ค์„ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ์—ฌ๋Ÿฌ ๋Œ€์˜ ์ปดํ“จํ„ฐ๋“ค์ด ํ•˜๋‚˜์˜ ์‹œ์Šคํ…œ์ฒ˜๋Ÿผ ๋™์ž‘ํ•˜๋„๋ก ํ•˜๋Š” ๊ฒƒ์„ ํด๋Ÿฌ์Šคํ„ฐ๋ง์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ฒซ๋ฒˆ์งธ ํด๋Ÿฌ์Šคํ„ฐ๋ง ๋ฐฉ์‹์œผ๋กœ All-to-All ๋ฐฉ์‹์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์š”์ฒญ์— ๋Œ€ํ•œ ์„ธ์…˜์„ ํŠน์ • ์„œ๋ฒ„์— ์ €์žฅํ•˜๊ณ  ์ €์žฅ๋œ ์„ธ์…˜ ๊ฐ์ฒด๋ฅผ ๋ณต์ œํ•˜์—ฌ ๋ชจ๋“  ์„œ๋ฒ„์— ์ „๋‹ฌํ•˜์—ฌ ๋ณด๊ด€ํ•ฉ๋‹ˆ๋‹ค. ์š”์ฒญ์— ๋Œ€ํ•ด์„œ ๋ชจ๋“  ์„œ๋ฒ„๊ฐ€ ๋™์ผํ•œ ์‘๋‹ต์„ ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ๋™์ผํ•œ ์„ธ์…˜ ๊ฐ์ฒด๋ฅผ ๋ชจ๋“  ์„œ๋ฒ„๊ฐ€ ์ €์žฅํ•˜๊ณ  ์žˆ์–ด์•ผ ํ•˜๋ฏ€๋กœ ๋ฉ”๋ชจ๋ฆฌ์— ๊ณผํ•˜๊ฒŒ ํ•„์š”ํ•˜๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
๋‹ค์Œ์œผ๋กœ๋Š” Primary-secondary ๋ฐฉ์‹์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์„ธ์…˜ ๊ฐ์ฒด๋ฅผ ์ €์žฅํ•œ ์„œ๋ฒ„๋ฅผ Primary๋กœ ๋‘๊ณ  ๊ทธ ๊ฐ์ฒด๋ฅผ ๋ณต์ œํ•˜์—ฌ ์ „๋‹ฌ๋ฐ›์€ ์„œ๋ฒ„๋ฅผ Secondary๋กœ ๋‘๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ์ฆ‰, ๋ฐฑ์—…์šฉ ์„œ๋ฒ„๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‚˜์„œ ๋‚˜๋จธ์ง€ ์„œ๋ฒ„๋“ค์€ Key์— ํ•ด๋‹นํ•˜๋Š” Session ID๋งŒ์„ ์ €์žฅํ•จ์œผ๋กœ์จ ์ด์ „ ๋ฐฉ๋ฒ•๋ณด๋‹จ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์•„๋‚„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋งŒ, ์ด ๋ฐฉ์‹๋„ Session ID๋งŒ์„ ๊ฐ–๊ณ  ์žˆ๋Š” ์„œ๋ฒ„๋Š” ์„ธ์…˜ ๊ฐ์ฒด๋ฅผ ๊ฐ–๊ณ  ์žˆ๋Š” Primary ์„œ๋ฒ„์—๊ฒŒ ์š”์ฒญ์„ ํ•ด์•ผํ•œ๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ฐธ๊ณ  ์ž๋ฃŒ