๋ชฉ์ฐจ
HTTP์ ํน์ง
HTTP๋ ๋น์ฐ๊ฒฐ์ฑ(Connectionless)๊ณผ ๋ฌด์ํ(Stateless)๋ผ๋ ํน์ง์ด ์๋ค.
ํด๋ผ์ด์ธํธ๋ ์๋ฒ์๊ฒ Request๋ฅผ ๋ณด๋ด๋ฉด์ ์๋ฒ์ ์ฐ๊ฒฐ๋๋๋ฐ
์ด๋ ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์๊ฒ Responseํ๋ฉด์ ๋งบ์๋ ์ฐ๊ฒฐ์ ๋์ด๋ฒ๋ฆฐ๋ค.
=> ์๋ฒ๋ ํด๋ผ์ด์ธํธ๋ฅผ ๊ธฐ์ตํ์ง ์์ผ๋ฏ๋ก, ์๋ฒ ์ ์ฅ์์ ๋ชจ๋ ์์ฒญ์ ๋ค ์ฒ์๋ณด๋ ์์ฒญ์ด๋ค (stateless)
stateful์ ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ๋ฅผ ๊ธฐ์ตํ๋ ๊ฒ์ด๊ณ
stateless๋ ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ๋ฅผ ๊ธฐ์ตํ์ง ์๋ ๊ฒ์ด๋ค.
์ํ ์ ์ง ๋ฐฉ๋ฒ 1 : ์ฟ ํค (Stateless์๋ฒ)
์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ๋ฅผ ๊ธฐ์ตํ ์ ์๋๋ก ํด๋ผ์ด์ธํธ(์น๋ธ๋ผ์ฐ์ )์๊ฒ ์ธ์ฆ์ ๋ณด๋ฅผ ์ค๋ค.
1. ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์๊ฒ ๋ก๊ทธ์ธ์ ์์ฒญํ๋ฉด
์๋ฒ๋ ๋ก๊ทธ์ธ ์ ๋ณด๋ฅผ ํ์ธํ๊ณ , ์ธ์ฆ์ ๋ณด๊ฐ ๋ด๊ธด ์ฟ ํค๋ฅผ ํค๋์ ๋ด์ ์๋ตํด์ค๋ค. (Set-Cookie)
2. ํด๋ผ์ด์ธํธ๋ ๋ฐ์ ์ฟ ํค๋ฅผ key-value๋ก ์ ์ฅํ๊ณ
์๋ฒ์๊ฒ ๋งค ์์ฒญ๋ง๋ค ํค๋์ ์ฟ ํค๋ฅผ ๋ด์์ ์์ฒญ์ ๋ณด๋ธ๋ค. (Cookie)
3. ์๋ฒ๋ ์์ฒญ๋ฐ์ ์ฟ ํค์ ์ธ์ฆ์ ๋ณด๋ฅผ ํ์ธํ์ฌ ๋ง์ผ๋ฉด ๋ก๊ทธ์ธ ๊ณผ์ ์ ํจ์คํ๋ค
์ฟ ํค ๋ง๋ฃ์์ ์ ์ ์ฅ์ ์ค์ ํ ์ ์๊ณ , ์ ์ฅํ ์ ์๋ ์ฟ ํค์ ์ฉ๋์ด ์ ํ๋์ด์๋ค.
๋๋ฉ์ธ ๋ช ์ํ๋ฉด ๋ช ์ํ ๋๋ฉ์ธ๊ณผ ํ์ ๋๋ฉ์ธ ๋ชจ๋ ์ฟ ํค ์ ๊ทผ ๊ฐ๋ฅ
๋๋ฉ์ธ ์๋ตํ๋ฉด ํ์ฌ ๋๋ฉ์ธ์๋ง ์ฟ ํค ์ ๊ทผ ๊ฐ๋ฅ
๊ฒฝ๋ก ๋ช ์ํ๋ฉด ๋ช ์ํ ๊ฒฝ๋ก์ ํ์ ๊ฒฝ๋ก ๋ชจ๋ ์ฟ ํค ์ ๊ทผ ๊ฐ๋ฅ
๊ฒฝ๋ก ์๋ตํ๋ฉด ๋ชจ๋ ๊ฒฝ๋ก์์ ์ฟ ํค ์ ๊ทผ ๊ฐ๋ฅ ( "/" ์ ๊ฐ์)
๋จ์ : ์ฌ์ฉ์์ ์ธ์ฆ์ ๋ณด๊ฐ ๋ด๊ธด ์ฟ ํค๊ฐ ๋คํธ์ํฌ๋ฅผ ์ด๋ํด์ผํ๋ค (๊ฐ์ธ์ ๋ณด ์ํํด!!)
์ฟ ํค๋ ๊ณ์ ์ ์ฅ๋ ์ ์๋ค. ์ฟ ํค๋ ๋ก๊ทธ์์ ์ ๋ง๋ฃ์์ผ์ผํ๋ค.
์ํ ์ ์ง ๋ฐฉ๋ฒ 2 : ์ธ์ (Stateful์๋ฒ)
์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ๋ฅผ ๊ธฐ์ตํ ์ ์๋๋ก ์ธ์ ID๋ฅผ ํด๋ผ์ด์ธํธ์ ์๋ฒ ๋ชจ๋ ์ ์ฅํ๋ค.
1. ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์๊ฒ ๋ก๊ทธ์ธ์ ์์ฒญํ๋ฉด
์๋ฒ๋ ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ํ์ธํ๊ณ , ์ธ์ ID๋ฅผ ์์ฑํ์ฌ ์๋ฒ์ ์ ์ฅํ ํ
์ธ์ ID๊ฐ ๋ด๊ธด ์ฟ ํค๋ฅผ ํค๋์ ๋ด์ ์๋ตํด์ค๋ค
2. ํด๋ผ์ด์ธํธ๋ ์ธ์ ID๊ฐ ๋ด๊ธด ์ฟ ํค๋ฅผ Object๋ก ์ ์ฅํ๊ณ
์๋ฒ์๊ฒ ๋งค ์์ฒญ๋ง๋ค ํค๋์ ์ฟ ํค๋ฅผ ๋ด์์ ์์ฒญ์ ๋ณด๋ธ๋ค.
3. ์๋ฒ๋ ์์ฒญ๋ฐ์ ์ฟ ํค์ ์ธ์ ID๋ฅผ ํ์ธํ์ฌ ๋ง์ผ๋ฉด ๋ก๊ทธ์ธ ๊ณผ์ ์ ํจ์คํ๋ค
์ฟ ํค๋ ์ฌ์ฉ์์ ์ธ์ฆ์ ๋ณด๊ฐ ๋คํธ์ํฌ๋ฅผ ์ด๋ํ์ง๋ง
์ธ์ ์ ์ฌ์ฉ์์ ์ธ์ ID๊ฐ ๋คํธ์ํฌ๋ฅผ ์ด๋ํ๋ค(์ธ์ ID๋ ๋ ธ์ถ๋์ด๋ ์ํ์ ๋ค)
๋จ์ : ์๋ฒ์ ์ ์ฅ๊ณต๊ฐ์ด ํ์ํ๋ค
++ 2022-02-03 ๋ด์ฉ ์ถ๊ฐ
์๋ฒ์ ํธ๋ํฝ์ด ์ฆ๊ฐํ๋ ๊ฒฝ์ฐ
์ธ์ ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์๋ฒ์ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋๊ฒ๋๋ค(์ ํํ๋ ํฐ์บฃ์ ์ธ์ ์ ์ฅ์)
์๋ฒ 1๊ฐ์ ๋ฉ๋ชจ๋ฆฌ์๋ ์ธ์ ์ด 100๊ฐ๊ฐ ์ ์ฅ๋ ์ ์๋ค๋ฉด, ๋์ ์๊ฐ 300๋ช ์ด๋ผ๋ฉด ์ด๋ค ์ผ์ด ์ผ์ด๋๊ฒ๋ ๊น?
๋์ ์ 300๋ช ์ ์ฒ๋ฆฌํ๊ธฐ ์ํด์ , ์๋ฒ๊ฐ 3๋๊ฐ ํ์ํ๋ค.
ํด๋ผ์ด์ธํธ๊ฐ ์ด๋ป๊ฒ ์๋ฒ 3๋์ ๋ถ์ฐ๋์ด ์ ์ํ ์ ์์๊น?
๋ก๋ ๋ฐธ๋ฐ์ฑ ๊ธฐ์ ์ ์ด์ฉํ๋ฉด ๋๋ค.
๋ก๋๋ฐธ๋ฐ์ฑ ์ด์ฉ
๋ก๋๋ฐธ๋ฐ์ฑ : ์๋ฒ์ ๊ฐํด์ง๋ ํธ๋ํฝ์ ์ฌ๋ฌ๋์ ์๋ฒ์ ๊ท ๋ฑํ๊ฒ ๋ถ์ฐ์์ผ์ฃผ๋ ๊ธฐ์ .
์ ์ฌ๊ธฐ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค
1. ๐ต101๋ฒ์งธ๊ฐ ๋ก๊ทธ์ธ์ ์์ฒญํ์ฌ SessionId๋ ์๋ฒB์ ์ ์ฅ๋์๋ค.
2. ๐ต101๋ฒ์งธ๋ ๋ก๊ทธ์ธ์ด ์๋ฃ๋์๋ค๋ ์๋ต์ ๋ฐ์๋ค
3. ์ด๋, 1๋ฒ์งธ~10๋ฒ์งธ๊ฐ ๋ก๊ทธ์์์ ํ์ฌ ์๋ฒA์ ์ฌ์ ๊ฐ ์๊ฒจ๋ฌ๋ค
4. ๐ต101๋ฒ์งธ๊ฐ ๊ตฌ๋งค๋ด์ญ์ ์์ฒญํ๋ค
5. ๐ฏ๋ก๋๋ฐธ๋ฐ์๋ ์๋ฒA์ ์ฌ์ ๊ฐ ์๊ฒผ์ผ๋ ๐ต101๋ฒ์งธ์ ์์ฒญ์ ์๋ฒA๋ก ๋ณด๋ธ๋ค.
6. ์๋ฒA ์ ์ฅ์์๋ ๐ต101๋ฒ์งธ์ SessionId๊ฐ ์๋ค. ์๋ฒA๋ ๋ก๊ทธ์ธํ์ด์ง๋ฅผ ์๋ตํด์ค๋ค
7. ๐ต101๋ฒ์งธ๋ ๋ก๊ทธ์ธํ๋๋ฐ ๋ก๊ทธ์ธ์ ๋ค์ํ๋ผ๊ณ ์๋ต๋ฐ์๋ค << !!
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์๋ ์ด๋ป๊ฒ ํ๋ฉด ๋ ๊น?
์ธ์ ์ ์ฅ์๋ฅผ ํ๋๋ก ํตํฉํ๋ฉด ๋์ง ์์๊น?
๊ฐ์ฅ ๋ํ์ ์ธ DB๋ก ์๋ฒ ์ ์ฅ์๋ฅผ ๋ง๋ค์ด๋ณผ๊น?
๋ฌธ์ ์ ๋ฐ๊ฒฌ
์ค! ํ ์คํธ ํด๋ณด๋ ์ ๋์ํ๋ค ๊ทผ๋ฐ ๋๋ฌด ๋๋ฆฌ๋ค..
์ธ์ ์ด ๋ฉ๋ชจ๋ฆฌ(RAM)์ ์์๋๋ ๋น ๋ฅด๊ฒ ๋์ํ๋๋ฐ ใ ใ
์๊ฐํด๋ณด๋ ์ฌ์ฉ์๊ฐ 100๋ง๋ช ์ด๋๋ฉด.. 100๋ง๋ช ์ ๋ฐ์ดํฐ๋ฅผ ์๋ฒ ์ ์ฅ์(DB)๋ 1๊ฐ๋ก ๊ฐ๋นํ ์ ์์๊น?
๊ทธ๋ผ 1๋ฒ์งธ๋ถํฐ 1000๋ฒ์งธ๋ 1๋ฒ ์๋ฒ ์ ์ฅ์๋ก, 1001๋ฒ๋ถํฐ 2000๋ฒ์งธ๋ 2๋ฒ ์๋ฒ ์ ์ฅ์๋ก.....?
๋๋ฌด ๋ณต์กํ๋ค!
์ํ ์ ์ง ๋ฐฉ๋ฒ 3 : Token (Stateless ์๋ฒ)
์ธ์ ๋ฐฉ์์ ๋ฌธ์ ์
1. ๋ก๊ทธ์ธ ์ ์ ๊ฐ ๋ง์์ง์๋ก ์ ์ฅํ DB๋ฆฌ์์ค๊ฐ ๋ ๋ง์ด ํ์ํ๋ค
2. ๋งค ์์ฒญ๋ง๋ค ์ ์ ์ ๋ณด๋ฅผ ์ฐพ๊ธฐ์ํด ํค๋งค์ผํ๋ค
ํ ํฐ์ ์ด๋ฌํ ์ธ์ ์ ๋ฌธ์ ์ ์ ๊ฐ์ ํ๊ธฐ ์ํด ๋ฑ์ฅํ๋ค.
ํ ํฐ์ ์๋ฒ๊ฐ ๊ธฐ์ตํ๋ ํ ์คํธ์ด๋ค.
1. ํด๋ผ์ด์ธํธ๊ฐ ๋ก๊ทธ์ธ์ ์์ฒญํ๋ฉด
2. ํ์ DB์์ ์ฌ์ฉ์๋ฅผ ํ์ธํ๊ณ
3. ํ์์ ๋ณด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก Signing ์๊ณ ๋ฆฌ์ฆ์ ์ํํ์ฌ ํ ํฐ์ ์์ฑํ๋ค
4. ํ ํฐ์ ํด๋ผ์ด์ธํธ์๊ฒ ์๋ตํด์ค๋ค
5. ํด๋ผ์ด์ธํธ๋ ์์ฒญ๊ณผ ํ ํฐ์ ํจ๊ป ๋ณด๋ธ๋ค
JWT์ ๋ํด์๋ ๋ค์ ๊ธ์์ ํ์ธํ์
'๐ฟ Spring' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Spring + MariaDB + Mybatis ์ฐ๋ ๋ฐ ์คํํด๋ณด๊ธฐ (0) | 2021.12.22 |
---|---|
ํํ์ด์ง ์ต์ด์ ์ ์ url์ jsessionid ์๋์ผ๋ก ์๋ถ๊ฒํ๊ธฐ (0) | 2021.12.20 |
Spring Validation ์ ๋ฆฌ (0) | 2021.12.08 |
์คํ๋งMVC ๊ธฐ๋ณธ๊ธฐ๋ฅ (0) | 2021.12.03 |
์คํ๋ง MVC ๊ตฌ์กฐ, DispatcherServlet, @RequestMapping.. (0) | 2021.12.01 |