https://dreamhack.io/lecture/courses/166 ์ ๋ค์ํ ์๋ฃ๋ฅผ ์ฐธ๊ณ ํ์์ต๋๋ค.
์๋ชป๋ ์ ๋ณด๊ฐ ์์ผ๋ฉด ๋๊ธ ๋ฌ์์ฃผ์ธ์!
ํ๋์ ์น ์๋น์ค๋ ๋๋ถ๋ถ ๋ก๊ทธ์ธ์ ํตํด ๋ง์ดํ์ด์ง, ์ ๋ฃ ์๋น์ค ๋ฑ ๊ฐ์ธ๋ง์ ์๋น์ค๋ฅผ ์ด์ฉํ๋ค.
์น ์๋ฒ๋ ์๋ง์ ํด๋ผ์ด์ธํธ์ HTTP ํ๋กํ ์ฝ์ ์ฌ์ฉํด ํต์ ํ๋ค.
์๋ ๊ณ์ ์ผ๋ก ๋ก๊ทธ์ธ ํ๋ค๋ฉด ์๋์ด ์ด์ฉํ ์ ์๋ ์๋น์ค๋ฅผ ์ ๊ณตํ๊ณ , ๊ด๋ฆฌ์ ๊ณ์ ์ผ๋ก ๋ก๊ทธ์ธ ํ๋ค๋ฉด ๋ฐ์ดํฐ๋ฒ ์ด์ค, ํ์ ๊ด๋ฆฌ ๋ฑ์ ๊ด๋ฆฌ์ ํ์ด์ง๋ฅผ ์ ๊ณตํด์ผ ํ๋ค.
๊ทธ๋ ๋ค๋ฉด ์น ์๋ฒ๋ ์๋ง์ ํด๋ผ์ด์ธํธ๋ฅผ ์ด๋ป๊ฒ ๊ตฌ๋ณํ๊ณ ์๋ก ๋ค๋ฅธ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํด์ค๊น?
HTTP ํ๋กํ ์ฝ๋ก ์น ์๋ฒ์ ํต์ ํ ๋์๋ ์น ์๋ฒ์ ๋ช ๋ น์ ๋ด๋ฆฌ๊ธฐ ์ํด GET, POST์ ๊ฐ์ ๋ฉ์๋์ ์์์ ์์น๋ฅผ ๊ฐ๋ฆฌํค๋ URL ๋ฑ์ด ํฌํจ๋์ด ์๋ค.
์ด์ธ์๋ ํค๋(Header)๋ฅผ ํตํด์ ์น ์๋ฒ์๊ฒ ์์ฒญ์ ๋ณด๋ด๊ณ , ์น ์๋ฒ๋ ํค๋๋ฅผ ์ฝ๊ณ ํด๋ผ์ด์ธํธ์๊ฒ ๊ฒฐ๊ณผ ๊ฐ์ ๋ฐํํ๋ค. ํค๋์๋ ํด๋ผ์ด์ธํธ์ ์ ๋ณด์ ์์ฒญ์ ๋ด์ฉ์ ๊ตฌ์ฒดํํ๋ ๋ฑ์ ๋ฐ์ดํฐ๊ฐ ํฌํจ๋๋๋ฐ, ํด๋ผ์ด์ธํธ์ ์ธ์ฆ ์ ๋ณด๋ฅผ ํฌํจํ๊ณ ์๋ ๊ฒ์ด ๋ฐ๋ก Cookie์ Session์ด๋ค.
1. HTTP ํ๋กํ ์ฝ์ ํน์ง
- Connectionless: ํ๋์ ์์ฒญ์ ํ๋์ ์๋ต์ ํ ํ ์ฐ๊ฒฐ์ ์ข ๋ฃํ๋ ๊ฒ์ ์๋ฏธํ๋ค. ํน์ ์์ฒญ์ ๋ํ ์ฐ๊ฒฐ์ ์ดํ์ ์์ฒญ๊ณผ ์ด์ด์ง์ง ์๊ณ ์ ์์ฒญ์ด ์์ ๋ ๋ง๋ค ํญ์ ์๋ก์ด ์ฐ๊ฒฐ์ ๋งบ๋๋ค.
- Stateless: ํต์ ์ด ๋๋ ํ ์ํ ์ ๋ณด๋ฅผ ์ ์ฅํ์ง ์๋ ๊ฒ์ ์๋ฏธํ๋ค. ์ด์ ์ฐ๊ฒฐ์์ ์ฌ์ฉํ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฅธ ์ฐ๊ฒฐ์์ ์๊ตฌํ ์ ์๋ค.
2. ์ฟ ํค
- ์น์ฌ์ดํธ๋ฅผ ๋ฐฉ๋ฌธํ๊ณ ์ด์ฉํ ๋ ๋ธ๋ผ์ฐ์ ์ ์ ์ฅ๋๋ ๋ด์ฉ๋ค์ด ํฌํจ
- ์น์ฌ์ดํธ๋ ์ฟ ํค๋ฅผ ํตํด ์ ์์์ ์ฅ์น๋ฅผ ์ธ์ํ๊ณ , ์ ์์์ ์ค์ ๊ณผ ๊ณผ๊ฑฐ ์ด์ฉ๋ด์ญ์ ๋ํ ์ผ๋ถ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅ
- HTTP๋ Connectionless(๋น์ฐ๊ฒฐ์งํฅ)๊ณผ Stateless(์ํ์ ๋ณด ์ ์ง์ํจ)์ ํน์ง์ ๊ฐ๊ณ ์๊ธฐ ๋๋ฌธ์, ๋ก๊ทธ์ธ์ ํ๊ณ ๊ทธ ์ํ๋ฅผ ์ ์งํ๊ธฐ ์ํด์๋ ์ฟ ํค๊ฐ ํ์ํ๋ค.
- ์น ์ ํ๋ฆฌ์ผ์ด์ (์๋ฒ)์ด ์ฌ์ฉ์(ํด๋ผ์ด์ธํธ)๋ฅผ ๊ตฌ๋ถํ ๋ ์ฌ์ฉ๋๋ค.
- ์ด๋ฆ - ๊ฐ์ผ๋ก ๊ตฌ์ฑ๋๋ค.
- ์๋ฒ๋ set-cookie ํค๋๋ฅผ ํตํด ์ฟ ํค๋ฅผ ์์ฑํ๊ณ ํด๋ผ์ด์ธํธ์๊ฒ ์ ์ก๋๋ฉฐ, ์ฌ์ฉ์ ๋ธ๋ผ์ฐ์ ๋ ์ฟ ํค๋ฅผ ์ ์ฅํ๊ณ ์๋ฒ๋ก ๋ณด๋ด๋ ์์ฒญ์ ์ฟ ํค ํค๋๋ฅผ ์ ์ฅํ ์ฟ ํค๋ฅผ ์ ์กํ๋ค. (์ฆ๋ช
์ ์ํด ๋ฐ์ ์ฟ ํค์ ๊ฐ์ ๊ทธ๋๋ก ์ ์ก)
- ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์๊ฒ ์ฟ ํค๋ฅผ ์ ์กํ ๋ ์ ๋ณด๊ฐ ํ์ทจ๋๋ค๋ฉด, ๊ณต๊ฒฉ์๋ ํด๋ผ์ด์ธํธ์ธ์ฒ ์ฌ์นญํ ์ ์์ผ๋ฏ๋ก ์์ ํ๊ฒ ์์ฑ ๋ฐ ์ ๋ฌํด์ผ ํ๋ค.
- ์ฟ ํค์ ํ๊ณ: ์ฌ์ฉ์๊ฐ ์์ ๊ฐ๋ฅํ๊ณ , ๋จ์ด ๋ณด๊ธฐ๋ ์ฝ๋ค.
- ๋ฐ๋ผ์ ์ง์์ง๊ฑฐ๋ ์์ ๋๊ฑฐ๋ ๊ฐ๋ก์ฑ๋ ํฐ ํผํด๊ฐ ์์ ์ ๋ณด๋ฅผ ์ฃผ๋ก ๋ด๋๋ค.
- ๋ง์ฝ ์๋ฒ๊ฐ ๋ณ๋ค๋ฅธ ๊ฒ์ฆ ์์ด ์ฟ ํค๋ฅผ ํตํด ์ด์ฉ์์ ์ธ์ฆ ์ ๋ณด๋ฅผ ์๋ณํ๋ค๋ฉด ๊ณต๊ฒฉ์๊ฐ ํ ์ด์ฉ์๋ฅผ ์ฌ์นญํด ์ ๋ณด๋ฅผ ํ์ทจํ ์ ์๋ค. ์ฆ, ์ ์์ ์ธ ํด๋ผ์ด์ธํธ๋ ์ฟ ํค ์ ๋ณด๋ฅผ ๋ณ์กฐํด ์๋ฒ์ ์์ฒญ์ ๋ณด๋ผ ์ ์๋ค.
3. ์ธ์
- ์ฟ ํค์ ์ธ์ฆ ์ํ๋ฅผ ์ ์ฅํ ๋, ํด๋ผ์ด์ธํธ๊ฐ ์ธ์ฆ ์ ๋ณด๋ฅผ ๋ณ์กฐํ ์ ์๊ฒ ํ๊ธฐ ์ํด ์ธ์ (Session)์ ์ฌ์ฉํ๋ค.
- ์ธ์ ์ ์ธ์ฆ ์ ๋ณด๋ฅผ ์๋ฒ์ ์ ์ฅํ๊ณ ํด๋น ๋ฐ์ดํฐ์ ์ ๊ทผํ ์ ์๋ ํค(์ ์ถํ ์ ์๋ ๋๋คํ ๋ฌธ์์ด)๋ฅผ ๋ง๋ค์ด ํด๋ผ์ด์ธํธ์ ์ ๋ฌํ๋ ๋ฐฉ์์ผ๋ก ์๋ํ๋ค
- ์ธ์
์ ์ธ์ฆ ์ ๋ณด๋ฅผ ์๋ฒ์ ์ ์ฅํ๊ณ ํด๋น ๋ฐ์ดํฐ์ ์ ๊ทผํ ์ ์๋ ํค(์ ์ถํ ์ ์๋ ๋๋คํ ๋ฌธ์์ด)๋ฅผ ๋ง๋ค์ด ํด๋ผ์ด์ธํธ์ ์ ๋ฌํ๋ ๋ฐฉ์์ผ๋ก ์๋ํ๋ค.
- ํด๋น ํค๋ฅผ Session ID๋ผ๊ณ ํ๋ค.
- ๋ธ๋ผ์ฐ์ ๋ ํด๋น ํค๋ฅผ ์ฟ ํค์ ์ ์ฅํ๊ณ , ์ดํ์ HTTP ์์ฒญ์ ๋ณด๋ผ ๋ ์ฌ์ฉํ๋ค. ์๋ฒ๋ ์์ฒญ์ ํฌํจ๋ ํค์ ํด๋นํ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ ์ธ์ฆ ์ํ๋ฅผ ํ์ธํ๋ค
4. ์ฟ ํค vs ์ธ์
- ์ฟ ํค๋ ๋ฐ์ดํฐ ์์ฒด๋ฅผ ์ด์ฉ์๊ฐ ์ ์ฅํ๋ฉฐ, ์ธ์ ์ ์๋ฒ๊ฐ ์ ์ฅํ๋ค๋ ํต์ฌ์ ์ธ ์ฐจ์ด๊ฐ ์๋ค.
- ์ธ์ ์ ์ฌ์ฉํ๋ ์๋น์ค์ ์ ์ํ๋ฉด ์๋ฒ์์๋ ์ฌ์ฉ์๋ค์ ๊ตฌ๋ถํ๊ธฐ ์ํ ๊ธฐํ์ด ์งง์ ์์ํค๋ฅผ ๋ธ๋ผ์ฐ์ ์ ๋ณด๋ด์ ์ฟ ํค๋ก ์ ์ฅ
๊ตฌ๋ถ | ์ฟ ํค | ์ธ์ |
์ ์ฅ์์น | ํด๋ผ์ด์ธํธ | ์๋ฒ |
์ญ์ | ์ฟ ํค ์ ์ฅ์ ๋ง๋ฃ๊ธฐ๊ฐ ์ค์ (๋ธ๋ผ์ฐ์ ๊ฐ ์ข ๋ฃ๋์ด๋ ๋ง๋ฃ์์ ์ด ์๋๋ฉด ์๋์ญ์ ๋์ง ์์) |
๋ธ๋ผ์ฐ์ ์ข ๋ฃ์ ์ธ์ ์ญ์ |
์ ์ฅ ํ์ | ํ์ผ | ๊ฐ์ฒด |
์๋ | ํ์ผ์์ ์ฝ์ผ๋ฏ๋ก ์๋์ ์ผ๋ก ๋น ๋ฆ | ์์ฒญ๋ง๋ค ์๋ฒ์์ ์ฒ๋ฆฌ ํด์ผํ๋ฏ๋ก ๋น๊ต์ ๋๋ฆผ |
๋ณด์ | ์ทจ์ฝํจ | ๋น๊ต์ ์์ |
5. ์ฟ ํค vs ์บ์
- ์ฟ ํค๋ '์๋ฒ์ ํ์์ ์ํด' ํด๋ผ์ด์ธํธ์ ์ ์ฅํ๋ ๋ฐ์ดํฐ
- ์บ์๋ ํด๋ผ์ด์ธํธ ์์ฒด์์ ํ์ด์ง ๋ก๋๋ฅผ ํจ์จ์ ์ผ๋ก ํ๊ธฐ ์ํด ์ ์ฅํ๋ ๋ฐ์ดํฐ
โ ์ฟ ํค๋ ์๋ณ์กฐ๊ฐ ๊ฐ๋ฅํ๊ธฐ๋๋ฌธ์ ํดํน์ด ๊ฐ๋ฅํ๋ค.