์ฐ์ ํ์ต์๊ตฌ๊ฐ ์ปธ๋ค. ๊ฐ์ฒด์ ํ ์ด๋ธ์ ๋งดํํ๋ฏ๋ก ๋ฐ์ดํฐ ์งํฅ์ ์ด์ง ์์ ๊ฐ์ฒด์งํฅ์ ์ธ ์ฝ๋๋ฅผ ์์ฑํ ์ ์๋ค๊ณ ์๊ฐํ๋ค. ๋ฉ์๋๋ก์ ๋ค๋ฃจ๊ธฐ ํ๋ ๋ณต์กํ ์ฟผ๋ฆฌ๋ QueryDSL, JPQL๋ก์ ํด๊ฒฐ ๊ฐ๋ฅํ๋ค ์๊ฐํ๋ค.
ํ์ตํด์ผํ ๊ธฐ์ ์คํ๋ค์ด ๋ง์๊ธฐ ๋๋ฌธ์ ํฌ๋ฃจ๋ค ๋ชจ๋๊ฐ ์๊ณ ์์ด ์ฝ๊ฒ ๋ค๊ฐ๊ฐ์ ์๋ Mysql๊ณผ ๊ณ ๋ฏผ์ ํ๋ค. ๊ทธ ์ค ๊ฐ์ฅ ํฐ ์ด์ ๋ ์ผ๋จ ๋ฌด๋ฃ์ด๋ค. ๊ทธ๋ฆฌ๊ณ Mysql๋ณด๋ค ๋น ๋ฅด๊ณ ๊ฐ๋ณ๋ค. Mysql๊ณผ ๋์ ํธํ์ฑ์ ๊ฐ๋๋ค. MySQL์์ MariaDB๋ก ๋ฐ๊พผ ์ฌ๋ก๊ฐ ์๋ค๊ณ ํ๋ค.
์ฐ์ ์ํ๋ฆฌํฐ๋ฅผ ์ ์ฉํ๊ธฐ ์ ์ Form ํ์์ ํ์๊ฐ์ ์ ํตํด Member๋ฅผ ์์ฑํ์๋ค. ๊ทธ๋ฌ๋ ๋์ค ์ฐ์ฐํ Stored XSS ๋ฅผ ์๊ฒ ๋์๊ณ ์ฌ๋ฟ ํ๋ค์๊ฒ ์๋ฒฝ์ ๋ชฐ๋ ์ ์ฉํด ๋ณด์๋ค. ๊ฒฐ๊ณผ๋ ๋๋๊ฒ ๋ ์ฝ๊ฒ ๊ณต๊ฒฉ์ด ๋จนํ๋ค. ์ด ์ฌ๊ฑด์ ๊ณ๊ธฐ๋ก ๋จ์ํ Https๋ง ์ ์ฉํ๋ค๊ณ ์ฌ์ดํธ์ ๋ณด์์ด ์ถฉ๋ถํ ์ด๋ฃจ์ด์ง๋ ๊ฒ์ด ์๋๊ตฌ๋ ๋ผ๊ณ ์๊ฐํ๊ณ ๋์ผ ๋ณด์ ์์ค์ ๊ตฌ์ถํด๋ Spring Security๋ฅผ ์ด์ฉํด ๋ํ ์น์๋น์ค์ฌ์ ๋น์ทํ ์์ค์ ๋ณด์์ ์ ์งํ๋ ค๊ณ ์ฌ์ฉํ๋ค. ์ค์ ์ด์๋ ์๋น์ค์ด๊ธฐ ๋๋ฌธ์ ๋ณด์์ ์ข๋ ์ ๊ฒฝ์ฐ๊ณ ์ถ์๊ณ ๋ฌผ๋ก ์ธ์ฆ ์ธ๊ฐ์๋ํด ์ํ๋ฆฌํฐ๋ฅผ ์์ฐ๊ณ ๊ตฌํํ ์ ์์ง๋ง ์ด๋ฏธ ๋์ ๋ณด์ ์์ค์ ๋ค ๊ตฌ์ถํด๋ ์คํ๋ง ์ํ๋ฆฌํฐ๋ฅผ ์ฌ์ฉํ๋ค๋ฉด ์ข๋ ์์ ํ ์๋น์ค๊ฐ ๋์ง ์์๊น ์๊ฐํ๋ค.
๋ณด์์ ์์ค์ ์ ์ ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ผ์ผ์ด ๊ณ์ ์ ๋ง๋ค์ด ์ฌ์ฉํ๋ฉด ID/PW๊ด๋ฆฌ๊ฐ ์ด๋ ต๊ณ ๊ฐ์ธ์ ๋ณด๊ฐ ์ ์ถ๋๋ฉด ์ฐ์์ ์ผ๋ก ํผํด๊ฐ ์ฌ๊ฐํด์ง ์ ์๊ธฐ ๋๋ฌธ์ ๋ณด์์ ์์ค์ด ์ด๋์ ๋ ๊ฒ์ฆ๋ ์ฌ์ดํธ(OAuth provider(ex. google, facebook))์ API๋ฅผ ์ด์ฉํด์ ์ธ๊ฐ ์์ํด ์ ๊ทผ ๊ถํ์ ๋ฐ๋ ๋ฐฉ๋ฒ(OAuth)์ด ๋ณด์์ ์ข๊ธฐ ๋๋ฌธ์ด๋ค. ์คํ๋ง ์ํ๋ฆฌํฐ๋ฅผ ์ฌ์ฉํ์ด์ ์ ๋น์ทํ๋ค. OAuth๋ฅผ ์ฌ์ฉํ์ง ์์ผ๋ฉด Password๊ฐ ๋ ธ์ถ์ด ๋ ์ ์๋ค. ๊ทธ๋์ ์ด๋ฏธ ๋ณด์์์ค์ด ๊ฒ์ฆ๋ ๋ํ ์๋น์ค์๊ฒ ์ธ๊ฐ ํ๋ก์ธ์ค๋ฅผ ๋์ ์์ํ๋ OAuth๋ฅผ ์ด์ฉํด ๋ณด์์ ์์ ํ ์ธ์ฆ์ธ๊ฐ๋ฅผ ๊ตฌํํ๊ณ ์ถ์๋ค.
Session์ ์ฌ์ฉํ๋ฉด ์๋ฒ ํ์ฅ์ ์ธ์ ์ ๋ณด์ ๋๊ธฐํ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ์ด๋ฐ์ ๋ฌด์ค๋จ ๋ฐฐํฌ๋ฅผ ํ๊ณ ์ ํ๊ธฐ์ ๋์์ฑ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋๋ฐ ๋น์ฉ์ด ํฌ๋ค๊ณ ์๊ฐํใท. ๋ ์ธ์ ์ ์๋ฒ์ ์ ์ฅํ๋๊ฐ DB์ ์ ์ฅํ๊ธฐ ๋๋ฌธ์ ์ค๋ฒํค๋๊ฐ ์๊ธด๋ค๊ณ ์๊ฐํ์ต๋๋ค. Restapi๋ ๋ฌด์ํ์ฑ์ ์งํฅํ๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ JWT์ statelessํ ์ฑ๊ฒฉ๊ณผ self-containedํ ์ฑ์ง์ ๊ฐ๊ณ ์๊ณ ์๋ฒ ์์ฒด์์ ํ ํฐ์ธ์ฆ์ ํ๊ธฐ ๋๋ฌธ์ ๋ ๋จ์ ์ ๋ณด์ ํ ์ ์๋ค๊ณ ์๊ฐํ๋ค.
jwt์ ๋จ์ ์ผ๋ก๋ ๋ด์ผ๋ ค๋ data๊ฐ ๋ง์์ง๋ฉด ํ ํฐ๊ธธ์ด๊ฐ ๊ธธ์ด์ ๋คํธ์ํฌ์ ๋ถํ๋ฅผ ์ค ์ ์๋ค๋ ๊ฒ์ด๊ณ ๋ฌด์ํ์ฑ์ด๊ธฐ๋๋ฌธ์ ํ๋ฒ ๋ง๋ค๋ฉด ์๋ฒ์์ ์ ์ด๊ฐ ๋ถ๊ฐ๋ฅํ๋ค.
ํ์ฌ ํ ํฐ์ ๋ด๋ ๋ฐ์ดํฐ๋ ๊ทธ๋ฆฌ ํฌ์ง ์๊ธฐ ๋๋ฌธ์ ๋ฌธ์ ๊ฐ ๋์ง ์์๊ณ expiretime์ ๊ฑธ์ด์ฃผ์๋ค.
์ฐ์ apache์ nginx ์ ์์ด์ ๊ณ ๋ฏผ์ ํ์์ต๋๋ค. apache๋ MPM(multi process module)์ด๋ค. Apache๋ MPM์ํคํ ์ฒ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํด๋ผ์ด์ธํธ ์์ฒญ์ ์ฒ๋ฆฌํ๋ ํ๊ณ ์๋ค.. MPM์ 3๊ฐ์ง ์ํคํ ์ฒ๋ฅผ ๊ทผ๊ฐ์ผ๋ก ํ๊ณ ์๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ํ๋ก์ธ์ค ์ค์ฌ์ ์ ๊ทผ๋ฒ์ด๊ณ ๊ฐ ์์ฒญ์๋ํด ์๋ก์ด ์ฐ๋ ๋๊ฐ ํ์ํ๊ธฐ ๋๋ฌธ์ ๋ง์ ์์ฒญ์ด ๋๊ท๋ชจ๋ก ์๋ค๋ฉด ์ฑ๋ฅ ์ธก๋ฉด์์ ๋ง์ ์ด์๊ฐ ์๊ธธ ์ ์๋ค.
Nginx๋ ํ๋ก์ธ์ค ๋๋ ์ฐ๋ ๋๋ผ๋ ๊ฐ๋ ์ ์ฌ์ฉํ์ง ์๊ณ ์ด๋ฒคํธ ๊ฐ๋ ์ผ๋ก ์ ๊ทผํ๋ค. ๋จ์ผ Nginx Worker๊ฐ ๋์์ ์์ฒ๊ฐ์ ์์ฒญ์ ์ฒ๋ฆฌํ ์ ์๋ค๋ ์๋ฏธ์ด๋ค. Nginx์ Worker๋ค์ด ์ด๋ฒคํธ๊ฐ ํธ๋ฆฌ๊ฑฐ ๋ ๋ ๋ง๋ค ์๋ก์ด ์์ฒญ์ ๋น ๋ฅด๊ฒ ์ ํํ ์ ์๋๋ก ๋ด๋ถ ์์คํ ์ ์ฌ์ฉํ๋ ๋ฐฉ์์ด๋ค. ์ด๋ฒคํธ ์ค์ฌ์ ์ ๊ทผ ๋ฐฉ์์ด๊ณ ํ๋์ ์ฐ๋ ๋์์ ์ฌ๋ฌ๊ฐ์ ์์ฒญ์ ์ฒ๋ฆฌํ๋ค.
nginx๋ ํจ์จ์ฑ์ ์ค์ ์ ๋์ด ๋์์น ์์ฒญ์ ๋ํ ์ฒ๋ฆฌ๋ฅผ ํจ์จ์ ์ผ๋ก ํ ์ ์๋ค๋ ๊ฒ์ด๋ค. ๋จ์ ์ผ๋ก๋ ๋์ ์ปจํ ์ธ ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ๊ฐ ๋ณต์กํด ํ๋ก์ธ์ค์ ํจ์จ์ ์ก์ ๋จน๋๋ค. ํ์ง๋ง ์ ํฌ๋ ํ๋ก ํธ๋ฅผ apk๋ก ๋ค๋ฃจ๊ธฐ ๋๋ฌธ์ nginx์์ ๋์ ์ปจํ ์ธ ๋ฅผ ๋ค๋ฃจ์ง ์๊ธฐ ๋๋ฌธ์ ์ํ์น๋ณด๋ค nginx๋ฅผ ์ฌ์ฉํ๋๊ฒ์ด ํจ์ฌ ํจ์ธ์ ์ด๋ผ๊ณ ์๊ฐํ๋ค.
์ฐ๋ฆฌ๋ nginx ๋ฅผ ํ๋ก์ ์๋ฒ๋ก ์ฌ์ฉํ๋ค.
PreFork MPM (๋ค์ค ํ๋ก์ธ์ค)
- Client ์์ฒญ์ ๋ํด apache ์์ ํ๋ก์ธ์ค๋ฅผ ์์ฑํ์ฌ ์ฒ๋ฆฌ.
- ์์ฒญ์ด ๋ง์ ๊ฒฝ์ฐ Process ๋ฅผ ์์ฑํ์ฌ ์ฒ๋ฆฌํฉ๋๋ค. ์ด ๋ฐฉ์์ Apache ์ค์น์ default ๋ก ์ค์
- ํ๋์ ์์ํ๋ก์ธ์ค๋น ํ๋์ ์ค๋ ๋๋ฅผ ๊ฐ์ (์ต๋ 1024๊ฐ)
- ์ค๋ ๋๊ฐ ๋ฉ๋ชจ๋ฆฌ ๊ณต์ ๋ฅผ ํ์ง ์์ต๋๋ค. ์ด ๋ฐฉ์์ ๋ ๋ฆฝ์ ์ด๊ธฐ์ ์์ ์ ์ธ ๋ฐ๋ฉด, ๋ฉ๋ชจ๋ฆฌ ์๋ชจ๊ฐ ํฌ๋ค๋ ๋จ์ ์ด ์๋ค
Worker MPM (๋ฉํฐ ํ๋ก์ธ์ค-์ค๋ ๋)
- Prefork ๋ณด๋ค ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ด ์ ๊ณ ๋์์ ์์๊ฐ ๋ง์ ์ฌ์ดํธ์ ์ ํฉํฉ๋๋ค. ๊ฐ ํ๋ก์ธ์ค์ ์ค๋ ๋๋ฅผ ์์ฑํด ์ฒ๋ฆฌํ๋ ๊ตฌ์กฐ
- ์ค๋ ๋ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ๊ณต์ ๊ฐ ๊ฐ๋ฅ
- ํ๋ก์ธ์ค ๋น ์ต๋ 64๊ฐ์ ์ค๋ ๋์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํ๋ฉฐ, ๊ฐ ์ค๋ ๋๋ ํ๋์ ์ฐ๊ฒฐ๋ง์ ๋ถ์ฌ
Event-Driven ๋ฐฉ์
-
์์ ์ ํ๋ค I/O, socket read/write ๋ฑ CPU๊ฐ ๊ด์ฌํ์ง ์๋ ์์ ์ด ์์๋๋ฉด ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ ๋ฐ๋ก ๋ค๋ฅธ ์์ ์ ์ํ
RDB ๋ ์ ํํ๋ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ค ๊ตฌ์กฐ๋ฅผ ๋น ๋ฅด๊ฒ ํ์ฅํด๋๊ฐ ์ ์๋ ์ฅ์ ์ธ DB์ธ๋ฐ ๋ฉ์์ง์ ๊ฐ์ ๋น์ ํ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๊ธฐ์ ๋ง์ง ์๋ค๊ณ ์๊ฐํ๋ค. ๊ทธ๋์ Nosql์ ์ฌ์ฉํ๋ค. ๋ ๊ทธ ์ค MongoDB๋ฅผ ์ฌ์ฉํ ๊ฐ์ฅ ํฐ ์ด์ ๋ ๋ค๋ฅธ Nosql ๋ณด๋ค ์ ๊ทผ์ฑ์ด ์ฌ์ ๋ค. ๋ฌธ์ํ๊ฐ ์คํค๋ง๊ฐ ์์ ๋ฟ๋๋ฌ ์คํค๋ง๊ฐ ์์ผ๋ ํ์ํ ๋๋ง๋ค ํ๋๋ฅผ ์ฝ๊ฒ ๋ณํ์ํฌ ์ ์๋ค. ๋ ๋ฒ์ฉ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ผ CRUD์ ์์ ์ธ์๋ ๋ค์ํ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.
์ด์ ๋์ ์ด์ ๋ง์ผ๋ก ์ถฉ๋ถํ ์ธ ๊ทผ๊ฑฐ๊ฐ ๋๋ค ์๊ฐํ๋ค.