3์๋ถํฐ ์์ํ๋ ํญํด๊ฐ ๋๋ฌ๋ค.'๋ฐฐ๋ ํญ๊ตฌ์ ์์ ๋ ๊ฐ์ฅ ์์ ํ์ง๋ง, ๋ฐฐ๋ ํญ๊ตฌ์ ๋จธ๋ฌผ๊ธฐ ์ํด ๋ง๋ค์ด์ง ๊ฒ ์๋๋ค.' - ํ์ธ๋ก ์ฝ์๋ฃํญํด๋ฅผ ์์ํ ๋ ํญํด์์ ๋ณด๋ด์ค ๋ฌธ์ฅ์ด๋ค์ ๋ง ํญํด๋ฅผ ํ๋ 99์ผ ๋์ ์์ํ ํ๋์ ๊ฑฐ์น ํ๋๋ฅผ ๋ง์ฃผ์น๋ฉฐ ๋ฐฐ๊ฐ ๋ง๋ค์ด์ง ์ด์ ์ ํญํด
Java์ ํ๋ ์์ํฌ์ธ Spring์ ๊ธฐ์กด๋ณด๋ค ํจ์ ๊ฐํธํ๊ฒ ๊ฐ๋ฐ์ด ๊ฐ๋ฅํ๋ค๊ณ ํด์ "๊ฐ๋ฐ์๋ค์ ๊ฒจ์ธ์ ๋๋ฌ๋ค!" ๋ผ๋ ์๋ฏธ๋ก ๋ด์ ๋ํ๋ด๋ Spring์ผ๋ก ์ง์ด์ง ์ด๋ฆ์ด๋ผ๊ณ ํฉ๋๋ค.๐ํ์ง๋ง ์ฌ์ ํ ์ค๋ฅ๋ ๋ง๊ณ ์ค์ ๋ ๋ณต์กํ๊ณ ์ฌ๋ฌ๊ฐ์ง ๋ถํธํ์ ์ด ๋ง์๋ค๊ณ ํฉ๋๋ค.๐๊ทธ๋
JPA๋ Java Persistence API์ ์ฝ์๋ก ์๋ฐ์ ORM ๊ธฐ์ ์ ํ์ค๋ช ์ธ์ด๊ณ , ์ธํฐํ์ด์ค์ ๋ชจ์์ด๋ผ๊ณ ํ๋ค. ์ฆ ์ค์ ๋ก ๋์ํ๋ ์น๊ตฌ๋ ์๋๋ผ๋๊ฒ์ด๋ค.๋ํ JPA ๋ด๋ถ์๋ JDBC API๋ผ๋ ๊ฒ์ด ์กด์ฌํ๋ค. ๊ทธ๋ฅ ์ด๋ฐ๊ฒ ์กด์ฌํ๋๊ตฌ๋ ๊น์ง๋ง ์ดํดํ๊ณ ๋์ด๊ฐ์
์ด๋๋ง ํญํด ์ค์ ํ๋ก์ ํธ๋ ๋ง๋ฌด๋ฆฌ๊ฐ ๋์๋ค.์ค๋์ MVP ์ ์ ์ดํ์ ์ค์ ํ๋ก์ ํธ์ ๊ณผ์ ์ ๋์๋ณด๋ ์๊ฐ์ ๊ฐ์ ธ๋ณด๋ ค๊ณ ํ๋คํญํด 11์ฃผ์ฐจ์๋ MVP ์ ์ํ ์ค์ ์ฌ์ฉ์๋ฅผ ๋ฐ์๋ณด๋ ์๊ฐ์ ๊ฐ์ก๋ค.1์ฃผ์ผ์ UT๊ธฐ๊ฐ์ด ์ฃผ์ด์ก๊ณ ํ๋ณด๋ฅผ ์ด๋ป๊ฒ ํ ๊ฒ์ธ๊ฐ ํ์๋ค๊ณผ ๊ณ ๋ฏผ์ ํด๋ณด์๋ค.
๊ฐ์ฒด๋ฅผ ์์ฑํ๊ธฐ ์ํด์๋ ์์ฑ์ ํจํด, ์ ์ ๋ฉ์๋ ํจํด, ์์ ์ ํจํด, ๋น๋ ํจํด ๋ฑ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.์ด์ค์์ ๋น๋ ํจํด์ ์์๋ณด๋ ค ํฉ๋๋ค.๋น๋ํจํด์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค๊ณ ๋ ํ์ง๋ง ์ํฉ์ ๋ง๊ฒ ์ฌ์ฉํ๋ ๊ฒ์ด ์ ํฉํ๋ค๊ณ ์๊ฐํฉ๋๋ค.ํ์ํ ๋ฐ์ดํฐ๋ง ์ค์ ํ ์ ์๋ค.
TCP / UDP ๋ผ๋ ๋จ์ด๋ ๋ง์ด ๋ณด์๊ธฐ์ ๋ฏ์ค์ง๋ ์๋ค. ํ์ง๋ง ์ด๊ฒ ๋ฌด์์ด๋ ๋ฌผ์ด๋ณผ๋๋ ๋ง๋ฌธ์ด ๋งํ๊ฒ ๋๋ค.๋คํธ์ํฌ๋ฉด์์ ์ค์ํ๋ค๊ณ ์๊ฐ์ด ๋ค๊ณ , ๋ฉด์ ์ ๋จ๊ณจ ์ง๋ฌธ์ด๋ผ๊ณ ์๊ฐ์ด ๋ค์ด ํด๋น ๋ด์ฉ์ ์์๋ณด๋ ค๊ณ ํฉ๋๋ค.๋คํธ์ํฌ๋ฅผ ๊ตฌ์ฑํ๋ OSI 7๊ณ์ธต ์ค, 4๊ณ์ธต์ ์
๋ถํธ์บ ํ์์ ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉด์ ์๊ฒ๋ JPA Specification์ ๋ํด์ ํฌ์คํ ํ๋ คํฉ๋๋ค.UT๋ฅผ ํตํด ๊ฒ์๊ธฐ๋ฅ๊ณผ ๊ด๋ จํ ํผ๋๋ฐฑ์ ๋ฐ๊ฒ๋์ด ์์ ์ ํ๋๋ฐ์กฐ๊ฑด์ด ์ ์ ์ถ๊ฐ๊ฐ ๋ ์๋ก if๋ฌธ์ด ๋ง์์ง๊ณ ์ ์ง๋ณด์๊ฐ ํ๋ค์ด์ง๊ฒ๋์ด ๋นํจ์จ์ ์ด๋ผ๋๊ฒ์ ๋๋ผ๊ฒ ๋์์ต๋๋ค.J
๊ฐ๋ฐ ํ๋ฉด์ ๊ตฌ๊ธ๋ง์ ํ๋ค๋ณด๋ฉด ํ๋ก์ธ์ค์ ์ค๋ ๋ ๋ํ ์๊ธฐ๊ฐ ๋์์์ด๊ฒ์ด ๋ฌด์์ธ์ง ์์๋ณด๊ธฐ์ํด ํฌ์คํ ํ๋ ค๊ณ ํฉ๋๋ค.ํ๋ก์ธ์ค : OS์์ ์คํ์ค์ธ ํ๋์ ์ ํ๋ฆฌ์ผ์ด์ ,ํ๋ก์ธ์ค๋ ๊ฐ๊ฐ ๋ ๋ฆฝ๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ(Code, Data, Stack, Heap์ ๊ตฌ์กฐ)์ ํ ๋น๋ฐ๋๋ค.๊ธฐ๋ณธ์
๊ทธ๋์ ์ ์ ์์ด ํ๋ฃจํ๋ฃจ๊ฐ ์ง๋ ์์ฑํ์ง ๋ชปํ๋ WIL 3์ฃผ์น๋ฅผ ํ๋ฒ์ ํฌ์คํ ํ๋ ค๊ณ ํ๋ค. ๐๐ฃโโ๏ธ๐ํญํด์์ ํด๋ก ์ฝ๋ฉ์ฃผ์ฐจ๊ฐ ๋๋๊ณ ์ค์ ํ๋ก์ ํธ๊ฐ ์์๋์๊ณ , ํด๋ก ์ฝ๋ฉ์ฃผ์ฐจ๊น์ง๋ง ํด๋ ๋ฆฌ๋ ๋ถ๋ฆฌ๋๋ ์ ๋ ํ์ง์์๊ฑฐ๋ผ๊ณ ๋ค์งํ๋ ๋ด๊ฐ ์ค์ ์ฃผ์ฐจ์์ ๋ฆฌ๋๊ฐ ๋์ด์์
๋ฒ์จ ํญํด๋ 7์ฃผ์ฐจ๊ฐ ๋์๊ณ ํญํด ์ ์ฒด๊ณผ์ ์ ๋ฐ์ ๋๊ฐ ๋์๋ค. ์๊ฐ์ ๋นจ๋ฆฌ๊ฐ๊ณ
์ค๋์ ๋ฉ์ ์ ๊ธฐ๋ฅ์ ๊ตฌํํด๋ณด๊ธฐ์ํด ์์๋ณด๋ ๋์ค ์๊ฒ๋ Websocket ํต์ ์ ๋ํด์ ์์๋ณด๋ ค๊ณ ํฉ๋๋ค. WebSocket ์ด๋? WebSocket์ด๋ ์น ์๋ฒ์ ์น ๋ธ๋ผ์ฐ์ ๊ฐ ์ค์๊ฐ ์๋ฐฉํฅ ํต์ ํ๊ฒฝ์ ์ ๊ณตํด์ฃผ๋ ์ค์๊ฐ ํต์ ๊ธฐ์ ์ด๋ค. Polling๋ฐฉ์(์์ฒญ-์๋ต
DTO๋ฅผ ์์๋ณด๋ฉด์ DAO ์ VO๋ฅผ ์๊ฒ ๋์๋ค.์ด 3๊ฐ์ง๋ ๊ฐ๊ฐ ๋ฌด์์ ์๋ฏธํ๋๊ฒ์ด๊ณ ์ด๋ ํ ์ฐจ์ด๊ฐ ์๋์ง ๊ถ๊ธํ์ฌ ์ฐพ์๋ณด์๋ค.DAO(Data Access Object)๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ data์ ์ ๊ทผํ๊ธฐ ์ํ ๊ฐ์ฒด์ ๋๋ค. DataBase์ ์ ๊ทผ ํ๊ธฐ ์ํ ๋ก์ง &
ํญํด๋ฅผ ์์ํ์ง 6์ฃผ์ฐจ๊ฐ ๋์๋ค.์ฃผํน๊ธฐ ์ฃผ์ฐจ 3์ฃผ๋์ ๊ณต๋ถํ๊ฒ์ผ๋ก ํํ๋ก์ ํธ๋ฅผ ์งํํ๊ฒ ๋์๋ค.์ฃผํน๊ธฐ๋ก ํ ํ๋ก์ ํธ๋ ์ฒ์์ด์๊ณ , ํ๋ก ํธ๋ถ๋ค๊ณผ ํจ๊ป ๊ฐ์ด ์งํํ๋๊ฒ๋ ์ฒ์์ด์๊ธฐ์ ์ค๋ ๋ฉด์๋ ๊ฒ์ด๋ฌ๋ค.ํ๋ก์ ํธ๋ ์๋ก ์ด๋ค ํ๋ก์ ํธ๋ฅผ ์งํํ ์ง ์๊ฒฌ์ ์ฃผ๊ณ ๋ฐ์ผ๋ฉด์ ์์๋์๋ค
ํญํด๋ฅผ ์์ํ์ง 5์ฃผ์ฐจ๊ฐ ๋์๋ค.๋ฒ์จ ํ๋ฌ์ด ๋์๋๋ฐ ๋ง์ ๊ฒ์ ๋ฐฐ์ด๊ฒ ๊ฐ์ผ๋ฉด์๋ ์์ง ์ค์ค๋ก ํ ์ค ์๋ ๊ฒ์ด ์๋๋ฏํ ๊ธฐ๋ถ์ด๋ ๋ค๐์ด์ ๋ค์์ฃผ์ฐจ์๋ ๋ค์ ํํ๋ก์ ํธ๊ฐ ์์๋๋ค. ํ๋ก ํธ๋ถ๋ค์๊ฒ ํผํด๊ฐ๋์ง๋ ์์์ง, ๊ฐ์ ๋ฐฑ์๋๋ถ๋ค์๊ฒ๋ ์ง์ด ๋์ง๋ ์์์ง ๊ฑฑ์ ์ด๋์ง๋ง
ํ์์ ์ฝ๋ฉ์ ํ๋ฉด์ ์๋ฒ์ ํด๋ผ์ด์ธํธ๊ฐ ์ํต์ ํ๊ธฐ ์ํด์ ๋ณดํต Http๋ฅผ ์ด์ฉ์ ํ๊ฒ ๋์์ต๋๋ค. ๊ทธ๋ฐ๋ฐ GET, POST, PUT, DELETE ๋ฑ ์ฌ๋ฌ๊ฐ์ง์ Http Method ๊ฐ ์กด์ฌํ๋๋ฐ ๋ช ํํ๊ฒ ์ฌ์ฉํ๊ณ ์์๊น? ๋ผ๋ ๊ถ๊ธ์ฆ์ผ๋ก ๊ด๋ จ ์๋ฃ๋ฅผ ์ฐพ์๋ณด๊ฒ ๋์
๊ต์ฐจ ์ถ์ฒ ๋ฆฌ์์ค ๊ณต์ (Cross-Origin Resource Sharing, CORS)์ ๋ํด ์ด์ผ๊ธฐํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค. ์๋ ์ฌ์ง๊ณผ ๊ฐ์ ์๋ฌ๋ฅผ ๋ณด์ ์ ์ด ์์ผ์ จ์ ์๋ ์์ต๋๋ค.์์ ๊ทธ๋ฆผ์ CORS policy ์ค๋ฅ ๋ฉ์์ง๋ CORS ์ ์ฑ ์ ์๋ฐํ ๋ ๋ฐ์ํ๊ฒ ๋ฉ
๋ชจ๋ HTTP ์๋ต ์ฝ๋๋ 5๊ฐ์ ํด๋์ค(๋ถ๋ฅ)๋ก ๊ตฌ๋ถ๋๋ค. ์ํ ์ฝ๋์ ์ฒซ ๋ฒ์งธ ์ซ์๋ ์๋ต์ ํด๋์ค๋ฅผ ์ ์ํ๋ค. ๋ง์ง๋ง ๋ ์๋ฆฌ๋ ํด๋์ค๋ ๋ถ๋ฅ ์ญํ ์ ํ์ง ์๋๋ค. ์ฒซ์๋ฆฌ์ ๋ํ 5๊ฐ์ง ๊ฐ๋ค์ ๋ค์๊ณผ ๊ฐ๋ค:์น์๋น์ค์์ ๋ฐํ๋๋ ์ํ ์ฝ๋๊ฐ 4xx, 5xx๋ก ๋ํ๋
์ ํ๋ฆฌ์ผ์ด์ ์ ์ญํ ์ ๋ชจ๋ธ(Model), ๋ทฐ(View), ์ปจํธ๋กค๋ฌ(controller)๋ก ๋๋์ด, ์ด๋ค ์ฌ์ด ์ํธ์์ฉ์ ํต์ ํ๋ ์ํคํ ์ฒ ํจํด์ด๋ค. ๋ชจ๋ธ(Model) : ๋น์ฆ๋์ค ๊ท์น์ ํํ,DATA, ์ ๋ณด๋ค์ ๊ฐ๊ณต์ ์ฑ ์์ง๋ ์ปดํฌ๋ํธ๋ฅผ ๋งํฉ๋๋ค.๋ทฐ(View) : ํ๋
์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ "ํ๋ ฌ์ ๋ง์ "๋ฅผ ํ์ด๋ณด์์ต๋๋ค. ๋ฌธ์ ์ค๋ช ์ ์๋ฅผ ๋ด๊ณ ์๋ ๋ฐฐ์ด arr์ ํ๊ท ๊ฐ์ returnํ๋ ํจ์, solution์ ์์ฑํด๋ณด์ธ์. > ์ ํ์ฌํญ arr์ ๊ธธ์ด 1 ์ด์, 100 ์ดํ์ธ ๋ฐฐ์ด์ ๋๋ค. arr์ ์์๋ -10,000 ์ด์ 10,000
์ด๋ฒ ์ฃผ์ฐจ์๋ MVC, SQL, ORM์ ๋ํด ์์๋ณด๋ ํฌ์คํ ์ ํ๊ฒ ์ต๋๋ค.MVC (๋ชจ๋ธ-๋ทฐ-์ปจํธ๋กค๋ฌ) ๋ ์ฌ์ฉ์ ์ธํฐํ์ด์ค, ๋ฐ์ดํฐ ๋ฐ ๋ ผ๋ฆฌ ์ ์ด๋ฅผ ๊ตฌํํ๋๋ฐ ๋๋ฆฌ ์ฌ์ฉ๋๋ ์ํํธ์จ์ด ๋์์ธ ํจํด์ ๋๋ค. ์ํํธ์จ์ด์ ๋น์ฆ๋์ค ๋ก์ง๊ณผ ํ๋ฉด์ ๊ตฌ๋ถํ๋๋ฐ ์ค์ ์ ๋๊ณ ์์ต