Spring/Spring MVC

[์Šคํ”„๋ง MVC] - 1. ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ดํ•ด

hello_u 2023. 2. 11. 14:20

 

์„น์…˜ 1. ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ดํ•ด

 

 

์›น - HTTP ๊ธฐ๋ฐ˜ ( HyperText Transfer Protocol )

 

 ์›น์ƒ์—์„œ ๋„คํŠธ์›Œํฌ๋กœ ์„œ๋ฒ„๋ผ๋ฆฌ ํ†ต์‹ ์„ ํ• ๋•Œ

 

์–ด๋– ํ•œ ํ˜•์‹์œผ๋กœ ์„œ๋กœ ํ†ต์‹ ์„ ํ•˜์ž๊ณ  ๊ทœ์ •ํ•ด ๋†“์€ "ํ†ต์‹  ํ˜•์‹" ํ˜น์€ "ํ†ต์‹  ๊ตฌ์กฐ" ๋ผ๊ณ  ๋ณด๋ฉด ๋œ๋‹ค.

 

 

HTTP ๊ธฐ๋ณธ์ ์œผ๋กœ request(์š”์ฒญ)/response(์‘๋‹ต) ๊ตฌ์กฐ๋กœ ๋˜์–ด์žˆ๋‹ค.


ํด๋ผ์ด์–ธํŠธ๊ฐ€ HTTP request๋ฅผ ์„œ๋ฒ„์— ๋ณด๋‚ด๋ฉด ์„œ๋ฒ„๋Š” HTTP response๋ฅผ ๋ณด๋‚ด๋Š” ๊ตฌ์กฐ


ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„์˜ ๋ชจ๋“  ํ†ต์‹ ์ด ์š”์ฒญ๊ณผ ์‘๋‹ต์œผ๋กœ ์ด๋ฃจ์–ด ์ง„๋‹ค.

 

 

 

 

request(์š”์ฒญ)

HTTP Request Message

 

 

 

response(์‘๋‹ต)

HTTP Response Message

 

 

์›น ์„œ๋ฒ„, ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„(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  ํŒŒ์ผ , CSS, JS,  ์ด๋ฏธ์ง€ ,  ์˜์ƒ ๋“ฑ์„ ์ œ๊ณต

 

 

 

 

 

 

๋™์  ์ œ๊ณต HTML ํŽ˜์ด์ง€

 

๋™์ ์œผ๋กœ ํ•„์š”ํ•œ  HTML  ํŒŒ์ผ์„ ์ƒ์„ฑํ•ด์„œ ์ „๋‹ฌ

 

 

HTTP API

 

HTML ์ด ์•„๋‹ˆ๋ผ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌ

 

์ฃผ๋กœ 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