์ธ์
์ธ์ ์ ๊ด๋ฆฌํ๊ธฐ ์ํด์๋ ์๋ฒ์ชฝ์ ์ ์ ์ ๋ณด๋ฅผ ์ ์ฅ ํด์ผํ๊ธฐ ๋๋ฌธ์ ์๋ฌด๋๋ ์ถ๊ฐ์ ์ธ ์ ์ฅ์๊ฐ ํ์ํ๋ค. ๋ง์ฝ ๋ด์ฅ ํฐ์บฃ ๋ฉ๋ชจ๋ฆฌ์ ์ธ์ ์ ์ ์ฅํ๊ฒ ๋๋ฉด ๋ฐฐํฌํ ๋๋ง๋ค ์ธ์ ์ด ์ด๊ธฐํ ๋๊ธฐ ๋๋ฌธ์ ๋ค์๊ณผ ๊ฐ์ ๋ฐฉ๋ฒ๋ค์ ํ์ฉํ๋ ํธ์ด๋ค.
ํฐ์บฃ ์์ฒด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ์ฉํ๋ค.
- ๊ฐ์ฅ ๊ธฐ๋ณธ ์ค์
- ๋ ๋์ด์์ WAS๊ฐ ๊ตฌ๋๋๋ ํ๊ฒฝ์์๋ ๋ถ๊ฐ์ ์ธ ์ค์ ์ด ํ์ํ๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ํ์ฉํ๋ค.
- ๊ฐ์ฅ ์ฌ์ด ๋ฐฉ๋ฒ์ด๋ค.
- ๋ถ๊ฐ์ ์ธ ์ค์ ์ ํ์ ์์ง๋ง ์ธ์ฆ ์์ฒญ๋ง๋ค DB์ IO๊ฐ ๋ฐ์ํ๋ค.
Redis, Memcached ๋ฉ๋ชจ๋ฆฌ DB ํ์ฉ
- B2C ์๋น์ค์์ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ค.
JWT ํ ํฐ์ ์ธ์ ๊ณผ ๋ค๋ฅด๊ฒ ์์ ์์์ ๊ฐ์ด ์๋ฒ๊ฐ ๋ฐ๋ก ๋ฉ๋ชจ๋ฆฌ์ ์ฌ์ฉ์์ ์ ๋ณด๋ฅผ ๊ด๋ฆฌํ ํ์๊ฐ ์๋ค(Stateless). JWT ํ ํฐ ์์ฒด์ ์ ๋ณด๊ฐ ์ํธํ ์ํ๋ก ํฌํจ ๋์ด ์๊ธฐ ๋๋ฌธ์ ์๋ฒ๋ ๋จ์ํ ๋ณตํธํ์ ์ํธํ ์ฑ ์๋ง ๊ฐ์ง๊ฒ ๋๋ค.
JWT๋?
JWT๋ ์ ๋ณด๋ฅผ ์ํธํ๋ JSON ๊ฐ์ฒด ํํ๋ก ์ฃผ๊ณ ๋ฐ๊ธฐ ์ํด ํ์ค๊ท์ฝ์ ๋ฐ๋ผ ์์ฑํ ์ํธํ๋ ๋ฌธ์์ด(Token)์ด๋ค. JWT๋ Claim ๊ธฐ๋ฐ์ด๋ผ๋ ๋ฐฉ์์ ์ฌ์ฉํ๋๋ฐ, Claim์ด๋ ์ฌ์ฉ์์ ๋ํ ํ๋กํผํฐ ์์ฑ์ ์ด์ผ๊ธฐ ํ๋ค.
JWT๋ '.'์ ๊ตฌ๋ถ์๋ก ์ธ ๋ถ๋ถ์ผ๋ก ๊ตฌ๋ถ๋์ด ์๋ ๋ฌธ์์ด๋ก ์ด๋ฃจ์ด์ ธ ์๋ค. ๊ฐ๊ฐ ํค๋๋ ํ ํฐ ํ์ ๊ณผ ํด์ฑ ์๊ณ ๋ฆฌ์ฆ์ ์ ์ฅํ๊ณ , ๋ด์ฉ์ ์ค์ ๋ก ์ ๋ฌํ ์ ๋ณด, ์๋ช ์๋ ์๋ณ์กฐ๋ฅผ ๋ฐฉ์งํ๊ธฐ์ํ ๊ฐ์ด ๋ค์ด๊ฐ๊ฒ ๋๋ค.
JWT์ Token ์์ฒด๋ก ์๋ฏธ์๋ ํ ํฐ(์ ์ ์ ์ํ๋ฅผ ํฌํจํ๊ณ ์์)์ผ๋ก ๊ตฌ์ฑ๋์ด ์๊ธฐ ๋๋ฌธ์ Statelessํ ์ํคํ ์ฒ๋ฅผ ๊ตฌ์ฑํ ์ ์๋ค.
์ด ๋ ํ์์ ๊ตฌ๋ถํ ์ ์๋ ์ ๋ณด๊ฐ ๋ด๊ธฐ๋ ๊ณณ์ด ๋ฐ๋ก JWT์ payload ๋ถ๋ถ์ด๊ณ ์ด๊ณณ์ ๋ด๊ธฐ๋ ์ ๋ณด์ ํ '์กฐ๊ฐ'์ Claim ์ด๋ผ๊ณ ํ๋ค. Claim์ name / value ํ ์์ผ๋ก ์ด๋ฃจ์ด์ ธ ์์ผ๋ฉฐ ๋น์ฐํ ์ฌ๋ฌ๊ฐ์ Claim๋ค์ ๋ฃ์ ์ ์๋ค.
JWT์ ์ฅ์
ํ์ฅ์ฑ
Token ์์ฒด๋ก ์๋ฏธ ์๋ ๋ด์ฉ์ผ๋ก ๊ตฌ์ฑ๋์ด ์๊ธฐ ๋๋ฌธ์ ์๋ฒ๊ฐ ๋์ด๋๋๋ผ๋ ์ธ์ฆ ๋ฐฉ์๋ง ์๊ณ ์๋ค๋ฉด ์ฌ์ฉ์ ์ธ์ฆ์ ๋ฌธ์ ๊ฐ ์๋ค. ๋ฌผ๋ก ์ธ์ ๋ ์ธ์ ์ ์ฉ ์๋ฒ๋ฅผ ๋ง๋ค์ด DB์ ์ ์ฅํ๋ ๋ฐฉ๋ฒ์ด ์์ง๋ง, ๋ชจ๋ API์ ์์ฒญ์ ๋ํ์ฌ DB์ ๊ฐ์ ์ฝ์ด์ผ ํ๊ธฐ ๋๋ฌธ์ DB ๋ถํ๊ฐ ๋ฐ์ํ ์ ์๋ค. ๋ธ๋ผ์ฐ์ , ์ฑ๊ฐ์ ์ฟ ํค ์ฒ๋ฆฌ ๋ฐฉ๋ฒ์ด ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ JWT๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ค์ํ ๋๋ฐ์ด์ค๋ฅผ ํ์ฉํ๋ ๊ฒ์ ์ข๋ค.
๋จ์
๋ชจ๋ ์์ฒญ์ ํ ํฐ์ด ํฌํจ๋๊ธฐ ๋๋ฌธ์ ๋คํธ์ํฌ ๋ถํ๊ฐ ์ฆ๊ฐํ ์ ์๋ค. ๋ง์ฝ JWT ํ ํฐ์ด ๋ง๋ฃ๋๊ธฐ ์ ์ ํ์ทจ ๋นํ๊ฒ ๋๋ฉด ํ ํฐ ์์ฒด์ ์ ๋ณด๊ฐ ๋ด๊ฒจ์ ธ ์์ด ์ ๋ณด๋ฅผ ํ์ทจ ๋นํ ์๋ ์๋ค.
-> ๊ทธ๋์ ๋ณดํต ๋ง๋ฃ ์๊ฐ์ ๊ผญ ์ง์ ํ๋๋ก ํ๋ค.
Reference
์คํ๋ง ๋ถํธ์ AWS๋ก ํผ์ ๊ตฌํํ๋ ์น ์๋น์ค - ํ๋ฆฌ๋ - ์ด๋์ฑ ์ง์