[์คํ๋ง MVC] - 1. ์น ์ ํ๋ฆฌ์ผ์ด์ ์ดํด
์น์ 1. ์น ์ ํ๋ฆฌ์ผ์ด์ ์ดํด
์น - HTTP ๊ธฐ๋ฐ ( HyperText Transfer Protocol )
์น์์์ ๋คํธ์ํฌ๋ก ์๋ฒ๋ผ๋ฆฌ ํต์ ์ ํ ๋
์ด๋ ํ ํ์์ผ๋ก ์๋ก ํต์ ์ ํ์๊ณ ๊ท์ ํด ๋์ "ํต์ ํ์" ํน์ "ํต์ ๊ตฌ์กฐ" ๋ผ๊ณ ๋ณด๋ฉด ๋๋ค.
HTTP ๊ธฐ๋ณธ์ ์ผ๋ก request(์์ฒญ)/response(์๋ต) ๊ตฌ์กฐ๋ก ๋์ด์๋ค.
ํด๋ผ์ด์ธํธ๊ฐ HTTP request๋ฅผ ์๋ฒ์ ๋ณด๋ด๋ฉด ์๋ฒ๋ HTTP response๋ฅผ ๋ณด๋ด๋ ๊ตฌ์กฐ
ํด๋ผ์ด์ธํธ์ ์๋ฒ์ ๋ชจ๋ ํต์ ์ด ์์ฒญ๊ณผ ์๋ต์ผ๋ก ์ด๋ฃจ์ด ์ง๋ค.
request(์์ฒญ)

response(์๋ต)

์น ์๋ฒ, ์น ์ ํ๋ฆฌ์ผ์ด์ ์๋ฒ(WAS) ์ฐจ์ด
์น ์๋ฒ๋ ์ ์ ๋ฆฌ์์ค(ํ์ผ)
WAS๋ ์ ํ๋ฆฌ์ผ์ด์ ๋ก์ง
์๋ธ๋ฆฟ
HTTP ์์ฒญ/์๋ต ์ ๋ณด๋ฅผ ํธ๋ฆฌํ๊ฒ ์ฌ์ฉํ ์ ์๊ฒ ํจ
์น์ ๋ง๋ค๋๋ ๋ค์ํ ์์ฒญ(Request)๊ณผ ์๋ต(Response)์ด ์๊ธฐ ๋ง๋ จ์ด๊ณ ์ด ์์ฒญ๊ณผ ์๋ต์๋ ๊ท์น์ด ์กด์ฌํฉ๋๋ค.
์ด๋ฌํ ์์ฒญ๊ณผ ์๋ต์ ์ผ์ผ์ด ์ฒ๋ฆฌํ๋ ค๋ฉด ๊ต์ฅํ ํ๋ค๊ฒ ์ฃ ?
์๋ธ๋ฆฟ์ ์ด๋ฌํ ์น ์์ฒญ๊ณผ ์๋ต์ ํ๋ฆ์ ๊ฐ๋จํ ๋ฉ์๋ ํธ์ถ๋ง์ผ๋ก ์ฒด๊ณ์ ์ผ๋ก ๋ค๋ฃฐ ์ ์๊ฒ ํด์ฃผ๋ ๊ธฐ์
WAS ์์๋ ์๋ธ๋ฆฟ ์ปจํ ์ด๋๊ฐ ์์
์๋ธ๋ฆฟ ์ปจํ ์ด๋ ์์์ ์๋ธ๋ฆฟ ๊ฐ์ฒด๋ฅผ ์๋์ผ๋ก ์์ฑํด์ฃผ๊ณ ํธ์ถ๋ ํด์ค
๊ทธ๋์ ๋๋ ์ฝ๋๋ง ๊ฐ์ ธ๋ค ์ฌ์ฉํ๋ฉด ๋๋ค
WAS๋ Request, Response ๊ฐ์ฒด๋ฅผ ์๋ก ๋ง๋ค์ด์ ์๋ธ๋ฆฟ ๊ฐ์ฒด ํธ์ถ
๊ฐ๋ฐ์๋ Request ๊ฐ์ฒด์์ HTTP ์์ฒญ ์ ๋ณด๋ฅผ ํธ๋ฆฌํ๊ฒ ๊บผ๋ด์ ์ฌ์ฉ
๊ฐ๋ฐ์๋ Response ๊ฐ์ฒด์ HTTP ์๋ต ์ ๋ณด๋ฅผ ํธ๋ฆฌํ๊ฒ ์ ๋ ฅ
WAS๋ Response ๊ฐ์ฒด์ ๋ด๊ฒจ์๋ ๋ด์ฉ์ผ๋ก HTTP ์๋ต ์ ๋ณด๋ฅผ ์์ฑ
๋์ ์์ฒญ - ๋ฉํฐ ์ฐ๋ ๋
์ฐ๋ ๋(thread)๋?
์ฐ๋ ๋๋ ํ๋ก์ธ์ค ๋ด์์ ์ค์ ๋ก ์์ ์ ์ํํ๋ ์ฃผ์ฒด๋ฅผ ์๋ฏธ
์ ํ๋ฆฌ์ผ์ด์ ์ฝ๋๋ฅผ ํ๋ํ๋ ์์ฐจ์ ์ผ๋ก ์คํ
-์ฐธ๊ณ : ์ฐ๋ ๋์ ํ๋ก์ธ์ค
์ฐ๋ ๋๋ 'ํ๋ก์ธ์ค ๋ด์์ ์คํ๋๋ ์ธ๋ถ ์์ ์ ๋จ์'์ ๋๋ค.
๊ทธ๋ ๋ค๋ฉด ํ๋ก์ธ์ค๋ ๋ฌด์์ผ๊น์?
ํ๋ก์ธ์ค๋ '์คํ ์ค์ธ ํ๋ก๊ทธ๋จ'์ด๋ผ๊ณ ๋งํ ์ ์์ต๋๋ค.
์ฐ๋ฆฌ๊ฐ ํ๋ก๊ทธ๋จ์ ์คํํ๋ฉด OS๋ก๋ถํฐ ์คํ์ ํ์ํ ์์์ ํ ๋น๋ฐ์ ํ๋ก์ธ์ค๊ฐ ๋๋ ๊ฒ์ด์ฃ .
์์คํ ์ ์์ ๊ด๋ฆฌ์๋ฅผ ๋ค์ด๊ฐ๋ฉด ํ๋ํ๋์ ํ๋ก๊ทธ๋จ๋ค์ด ์คํ๋๊ณ ์๋ ์ํ๋ฅผ ๋ณผ ์ ์๋๋ฐ
์ด๋ ๋ํ๋๋ ๊ฒ์ด ํ๋ก์ธ์ค์ ๋๋ค.
์ฆ, ์ฐ๋ ๋๋ 'ํ๋ก๊ทธ๋จ์ ์ํํ๋ ๋ฐ ํ์ํ ๋ฐ์ดํฐ์ ๋ฉ๋ชจ๋ฆฌ ๋ฑ์ ์์์ธ ์ด์ฉํด์ ์ค์ ๋ก ์์ ์ ์ํํ๋ ๊ฒ'
๋ค์ค ์์ฒญ - ์ฐ๋ ๋ ํ๋ ์ฌ์ฉ

์์ฒญ1 ์ด ์ฐ๋ ๋๋ฅผ ์ฌ์ฉ์ค
์์ฒญ2๋ ๋๊ธฐํด์ผํจ
๋ ๋ค ์ฒ๋ฆฌ ์ง์ฐ์ผ๋ก ํ์์์ ๋ผ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ ์ ์์
์์ฒญ ๋ง๋ค ์ฐ๋ ๋ ์์ฑ

์ฅ์
๋์ ์์ฒญ์ ์ฒ๋ฆฌํ ์ ์๋ค.
๋ฆฌ์์ค(CPU, ๋ฉ๋ชจ๋ฆฌ)๊ฐ ํ์ฉํ ๋ ๊น์ง ์ฒ๋ฆฌ๊ฐ๋ฅ
ํ๋์ ์ฐ๋ ๋๊ฐ ์ง์ฐ ๋์ด๋, ๋๋จธ์ง ์ฐ๋ ๋๋ ์ ์ ๋์ํ๋ค.
๋จ์
์ฐ๋ ๋๋ ์์ฑ ๋น์ฉ์ ๋งค์ฐ ๋น์ธ๋ค.
๊ณ ๊ฐ์ ์์ฒญ์ด ์ฌ ๋ ๋ง๋ค ์ฐ๋ ๋๋ฅผ ์์ฑํ๋ฉด, ์๋ต ์๋๊ฐ ๋ฆ์ด์ง๋ค.
์ฐ๋ ๋๋ ์ปจํ ์คํธ ์ค์์นญ ๋น์ฉ์ด ๋ฐ์ํ๋ค.
์ฐ๋ ๋ ์์ฑ์ ์ ํ์ด ์๋ค.
๊ณ ๊ฐ ์์ฒญ์ด ๋๋ฌด ๋ง์ด ์ค๋ฉด, CPU, ๋ฉ๋ชจ๋ฆฌ ์๊ณ์ ์ ๋์ด์ ์๋ฒ๊ฐ ์ฃฝ์ ์ ์๋ค.
์ปจํ ์คํธ ์ค์์นญ์ด๋ ?
ex) CPU ์ฝ์ด๊ฐ 1๊ฐ , ์ค๋ ๋๊ฐ 2๊ฐ์ธ ๊ฒฝ์ฐ
CPU๊ฐ ๋์์ ์ํํ ์ ์์ , ํ๋ ์คํํ๊ณ ๊ทธ ๋ค์ ๊ฒ ์คํ ( ๋๋ฌด ๋น ๋ฅด๋๊น ๋์์ ์ฒ๋ฆฌํ๋ ๊ฒ์ฒ๋ผ ๋ณด์ผ ๋ฟ )
์ฝ์ด ํ๋๊ฐ ์ด๊ฒ์ ์ ํํ ๋ ๋น์ฉ์ด ๋ฐ์ --> ์ปจํ ์คํธ ์ค์์นญ ๋น์ฉ
์์ฒญ ๋ง๋ค ์ฐ๋ ๋ ์์ฑ์ ๋จ์ ๋ณด์ -> ์ฐ๋ ๋ ํ
์ฐ๋ ๋ ํ
ํ์ํ ์ฐ๋ ๋๋ฅผ ์ฐ๋ ๋ ํ์ ๋ณด๊ดํ๊ณ ๊ด๋ฆฌํ๋ค.
์ฐ๋ ๋๊ฐ ํ์ํ๋ฉด, ์ด๋ฏธ ์์ฑ๋์ด ์๋ ์ฐ๋ ๋๋ฅผ ์ฐ๋ ๋ ํ์์ ๊บผ๋ด์ ์ฌ์ฉํ๋ค.
์ฌ์ฉ์ ์ข
๋ฃํ๋ฉด ์ฐ๋ ๋ ํ์ ํด๋น ์ฐ๋ ๋๋ฅผ ๋ฐ๋ฉํ๋ค.
์ต๋ ์ฐ๋ ๋๊ฐ ๋ชจ๋ ์ฌ์ฉ์ค์ด์ด์ ์ฐ๋ ๋ ํ์ ์ฐ๋ ๋๊ฐ ์์ผ๋ฉด?
๊ธฐ๋ค๋ฆฌ๋ ์์ฒญ์ ๊ฑฐ์ ํ๊ฑฐ๋ ํน์ ์ซ์๋งํผ๋ง ๋๊ธฐํ๋๋ก ์ค์ ํ ์ ์๋ค
์ฅ์
์ฐ๋ ๋๊ฐ ๋ฏธ๋ฆฌ ์์ฑ๋์ด ์์ผ๋ฏ๋ก, ์ฐ๋ ๋๋ฅผ ์์ฑํ๊ณ ์ข ๋ฃํ๋ ๋น์ฉ(CPU)์ด ์ ์ฝ๋๊ณ , ์๋ต ์๊ฐ์ด ๋น ๋ฅด๋ค.
์์ฑ ๊ฐ๋ฅํ ์ฐ๋ ๋์ ์ต๋์น๊ฐ ์์ผ๋ฏ๋ก ๋๋ฌด ๋ง์ ์์ฒญ์ด ๋ค์ด์๋ ๊ธฐ์กด ์์ฒญ์ ์์ ํ๊ฒ ์ฒ๋ฆฌํ ์ ์๋ค.
WAS์ ์ฃผ์ ํ๋ ํฌ์ธํธ๋ ์ต๋ ์ฐ๋ ๋(max thread) ์์ด๋ค.
์ด ๊ฐ์ ๋๋ฌด ๋ฎ๊ฒ ์ค์ ํ๋ฉด?

๋์ ์์ฒญ์ด ๋ง์ผ๋ฉด, ์๋ฒ ๋ฆฌ์์ค๋ ์ฌ์ ๋กญ์ง๋ง, ํด๋ผ์ด์ธํธ๋ ๊ธ๋ฐฉ ์๋ต ์ง์ฐ
์ด ๊ฐ์ ๋๋ฌด ๋๊ฒ ์ค์ ํ๋ฉด?
๋์ ์์ฒญ์ด ๋ง์ผ๋ฉด, CPU, ๋ฉ๋ชจ๋ฆฌ ๋ฆฌ์์ค ์๊ณ์ ์ด๊ณผ๋ก ์๋ฒ ๋ค์ด
WAS์ ๋ฉํฐ ์ฐ๋ ๋ ์ง์ ํต์ฌ
๋ฉํฐ ์ฐ๋ ๋์ ๋ํ ๋ถ๋ถ์ WAS๊ฐ ์ฒ๋ฆฌ
๊ฐ๋ฐ์๊ฐ ๋ฉํฐ ์ฐ๋ ๋ ๊ด๋ จ ์ฝ๋๋ฅผ ์ ๊ฒฝ์ฐ์ง ์์๋ ๋จ
๋ฒก์ค๋ ๊ฐ๋ฐ์๊ฐ ์๋น์ค๋ฅผ ์ ๊ณตํ ๋ ๊ณ ๋ฏผํด์ผ ๋๋ ํฌ์ธํธ 3๊ฐ์ง
1. ์ ์ ๋ฆฌ์์ค ์ ๊ณตํ๊ธฐ
2. ๋์ ์ผ๋ก ์ ๊ณต๋๋ HTML ํ์ด์ง ์ ๊ณตํ๊ธฐ
3. HTTP API ์ ๊ณตํ๊ธฐ
์ ์ ๋ฆฌ์์ค

๋์ ์ ๊ณต HTML ํ์ด์ง

HTTP API

์ฃผ๋ก JSON ํํ๋ก ๋ฐ์ดํฐ ํต์
SSR - ์๋ฒ ์ฌ์ด๋ ๋ ๋๋ง
์๋ฒ์์ ์ต์ข HTML์ ์์ฑํด์ ํด๋ผ์ด์ธํธ์ ์ ๋ฌ

CSR - ํด๋ผ์ด์ธํธ ์ฌ์ด๋ ๋ ๋๋ง
HTML ๊ฒฐ๊ณผ๋ฅผ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํด ์น ๋ธ๋ผ์ฐ์ ์์ ๋์ ์ผ๋ก ์์ฑํด์ ์ ์ฉ

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-mvc-1/dashboard
์คํ๋ง MVC 1ํธ - ๋ฐฑ์๋ ์น ๊ฐ๋ฐ ํต์ฌ ๊ธฐ์ - ์ธํ๋ฐ | ๊ฐ์
์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํ ๋ ํ์ํ ๋ชจ๋ ์น ๊ธฐ์ ์ ๊ธฐ์ด๋ถํฐ ์ดํดํ๊ณ , ์์ฑํ ์ ์์ต๋๋ค. ์คํ๋ง MVC์ ํต์ฌ ์๋ฆฌ์ ๊ตฌ์กฐ๋ฅผ ์ดํดํ๊ณ , ๋ ๊น์ด์๋ ๋ฐฑ์๋ ๊ฐ๋ฐ์๋ก ์ฑ์ฅํ ์ ์์ต๋๋ค., -
www.inflearn.com