CS-Network. ์ฟ ํค์ ์ธ์ ์ ๋ํด
๐งท 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 ์๋ฒ์๊ฒ ์์ฒญ์ ํด์ผํ๋ค๋ ๋จ์ ์ด ์์ต๋๋ค.
์ฐธ๊ณ ์๋ฃ
- ์ฟ ํค์ ์ธ์ ๊ฐ๋
- ๋ก๊ทธ์ธ ์ธ์ฆ ๋ฐฉ์ ์ด๋ค ๊ฒ ์ข์๊น? Session VS JWT
- Session ๊ทธ๋ฆฌ๊ณ Stateless
- ๋ค์ค ์๋ฒ ํ๊ฒฝ์์ Session์ ์ด๋ป๊ฒ ๊ณต์ ํ๊ณ ๊ด๋ฆฌํ ๊น?
- ๐งท CS-Network ์คํฐ๋
- 1. ์ธ์ ๋ฐฉ์์ ๋ก๊ทธ์ธ ๊ณผ์ ์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์.
- 2. HTTP์ ํน์ฑ์ธ Stateless์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์.
- 3. Stateless์ ์๋ฏธ๋ฅผ ์ดํด๋ณด๋ฉด, ์ธ์ ์ ์ ์ ํ์ง ์์ ์ธ์ฆ ๋ฐฉ๋ฒ ์๋๊ฐ์?
- 4. ๊ท๋ชจ๊ฐ ์ปค์ ธ ์๋ฒ๊ฐ ์ฌ๋ฌ ๊ฐ๊ฐ ๋๋ค๋ฉด, ์ธ์ ์ ์ด๋ป๊ฒ ๊ด๋ฆฌํ ์ ์์๊น์?
- ์ฐธ๊ณ ์๋ฃ