๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ“”๊ฐ•์˜ ์ •๋ฆฌ ๋…ธํŠธ

[๊น€์˜ํ•œ๋‹˜ ๊ฐ•์˜ ์ •๋ฆฌ - ์Šคํ”„๋ง MVC 1ํŽธ] ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ดํ•ด

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

์“ฐ๋ ˆ๋“œ๋ž€..?

  • ์ž๋ฐ” ๋ฉ”์ธ ๋ฉ”์„œ๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด main์“ฐ๋ ˆ๋“œ๊ฐ€ ์‹คํ–‰๋จ
  • ๋™์‹œ์ฒ˜๋ฆฌ๊ฐ€ ํ•„์š”ํ•˜๋‹ค๋ฉด ์“ฐ๋ ˆ๋“œ๋ฅผ ์ถ”๊ฐ€๋กœ ์ƒ์„ฑ

์š”์ฒญ์ด ๋ฐœ์ƒํ–ˆ์„ ๋•Œ..

์š”์ฒญ์ด ์“ฐ๋ ˆ๋“œ๋ณด๋‹ค ๋งŽ๋‹ค๋ฉด ์ผ์ • ์‹œ๊ฐ„ ์ดํ›„ 'ํƒ€์ž„์•„์›ƒ'์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๊ณ  ๋ฌธ์ œ ํ•ด๊ฒฐ์„ ์œ„ํ•ด '์‹ ๊ทœ์“ฐ๋ ˆ๋“œ'๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

ํ•˜์ง€๋งŒ ์“ฐ๋ ˆ๋“œ ์ƒ์„ฑ์—๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค.

  1. ์“ฐ๋ ˆ๋“œ ์ƒ์„ฑ ๋น„์šฉ์ด ๋น„์‹ธ๋‹ค. (CPU, ๋ฉ”๋ชจ๋ฆฌ)
  2. ์š”์ฒญ๋งˆ๋‹ค ์ƒ์„ฑํ•˜๋ฉด '์‘๋‹ต์†๋„'๊ฐ€ ๋Šฆ์–ด์ง„๋‹ค.
  3. ์“ฐ๋ ˆ๋“œ๊ฐ€ ๋งŽ์•„์ง€๋ฉด '์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ' ๋น„์šฉ์ด ๋ฐœ์ƒํ•œ๋‹ค.
  4. ์“ฐ๋ ˆ๋“œ๋ฅผ ๋ฌด์ œํ•œ์œผ๋กœ ์ƒ์„ฑํ•˜๋‹ค๋ณด๋ฉด CPU, ๋ฉ”๋ชจ๋ฆฌ ์ž„๊ณ„์ ์„ ๋„˜์–ด ์„œ๋ฒ„๊ฐ€ ์ฃฝ๋Š”๋‹ค.

 WAS๋Š” ์ด๋ฅผ ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐํ–ˆ์„๊นŒ..?

์“ฐ๋ ˆ๋“œํ’€ ํ™œ์šฉ

์“ฐ๋ ˆ๋“œ ํ’€์— ์“ฐ๋ ˆ๋“œ๋ฅผ ๋ฏธ๋ฆฌ ์ƒ์„ฑํ•ด๋‘๊ณ  ์“ฐ๋ ˆ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ๋ฐ˜๋‚ฉํ•˜๊ณ  ํ˜•ํƒœ๋กœ ์‚ฌ์šฉํ•œ๋‹ค.

๋™์‹œ์š”์ฒญํ—ˆ์šฉ๊ฐฏ์ˆ˜๋ฅผ ์ •ํ•ด๋‘” ๊ฒƒ๊ณผ ๊ฐ™๋‹ค. (์ƒ์„ฑํ•ด๋‘” ์“ฐ๋ ˆ๋“œ ์ˆ˜)

์ผ์ • ์ˆ˜ ์ด์ƒ์„ ๋„˜์œผ๋ฉด ์“ฐ๋ ˆ๋“œ [๋Œ€๊ธฐ] ๋˜๋Š” [๊ฑฐ์ ˆ]๋กœ ์ฒ˜๋ฆฌํ•œ๋‹ค. (tomcat์€ ์ตœ๋Œ€ 200๊ฐœ ๊ธฐ๋ณธ)

 

  • WAS ์ฃผ์š” ํŠœ๋‹ ํฌ์ธํŠธ๋Š” ์ตœ๋Œ€ ์“ฐ๋ ˆ๋“œ(Max Thread) ์ˆ˜
    • ๋‚ฎ๊ฒŒ ์„ค์ • ์‹œ, ์„œ๋ฒ„ ๋ฆฌ์†Œ์Šค๊ฐ€ ์—ฌ์œ ๋กœ์šด ๋ฐ˜๋ฉด ํด๋ผ์ด์–ธํŠธ๋Š” ์ ์€ ์š”์ฒญ์—๋„ ์ง€์—ฐ์‘๋‹ต
    • ๋†’๊ฒŒ ์„ค์ • ์‹œ, CPU, ๋‹ค์ˆ˜์˜ ์š”์ฒญ ์‹œ ๋ฉ”๋ชจ๋ฆฌ ๋ฆฌ์†Œ์Šค ์ž„๊ณ„์  ์ดˆ๊ณผ๋กœ ์„œ๋ฒ„ ๋‹ค์šด๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์žฅ์•  ๋ฐœ์ƒ ์‹œ, ๋Œ€์‘๋ฒ•
    • ํด๋ผ์šฐ๋“œ์ผ ๊ฒฝ์šฐ, ์„œ๋ฒ„๋ฅผ ์ˆ˜ํ‰ ํ™•์žฅ(Scale Out) ์ดํ›„ ํŠœ๋‹
    • ํด๋ผ์šฐ๋“œ๊ฐ€ ์•„๋‹ ๊ฒฝ์šฐ ์ƒํ™ฉ์— ๋งž์ถฐ ํŠœ๋‹
  • ์“ฐ๋ ˆ๋“œ ํ’€์˜ ์ ์ • ์ˆซ์ž๋ฅผ ์–ด๋–ป๊ฒŒ ์ฐพ์„๊นŒ??
    • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ์ง์˜ ๋ณต์žก๋„, CPU, ๋ฉ”๋ชจ๋ฆฌ, IO ์ƒํ™ฉ์— ๋”ฐ๋ผ ๋‹ค๋ฆ„
    • ์‹ค์ œ ์„œ๋น„์Šค์™€ ์œ ์‚ฌํ•˜๊ฒŒ ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ๊ฐ€ ํ•„์š”ํ•จ
    • TOOL : ์•„ํŒŒ์น˜ab, ์ œ์ด๋ฏธํ„ฐ, nGrinder

WAS๊ฐ€ ๊ฐœ๋ฐœ์ƒ์‚ฐ์„ฑ์„ ๋†’์ด๋Š” ์ด์œ 

  • ๋ฉ€ํ‹ฐ์“ฐ๋ ˆ๋“œ์— ๋Œ€ํ•œ ๋ถ€๋ถ„์€ WAS๊ฐ€ ์ฒ˜๋ฆฌํ•œ๋‹ค. (๊ฐœ๋ฐœ์ž๊ฐ€ ๋ฉ€ํ‹ฐ์“ฐ๋ ˆ๋“œ ๊ด€๋ จ ์ฝ”๋“œ๋ฅผ ์‹ ๊ฒฝ์“ฐ์ง€ ์•Š์•„๋„ ๋œ๋‹ค)
  • ๊ฐœ๋ฐœ์ž๋Š” ๊ทธ์ € ์‹ฑ๊ธ€ ์“ฐ๋ ˆ๋“œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•˜๋“ฏ์ด ํŽธ๋ฆฌํ•˜๊ฒŒ ๊ฐœ๋ฐœ
  • ๊ณต์œ ํ•ด์„œ ์‚ฌ์šฉํ•˜๋Š” ์‹ฑ๊ธ€ํ†ค ๊ฐ์ฒด(์„œ๋ธ”๋ฆฟ, ์Šคํ”„๋ง ๋นˆ)๋งŒ ์ฃผ์˜ํ•ด์„œ ์‚ฌ์šฉํ•œ๋‹ค.

 

์ž๋ฐ” ์›น ๊ธฐ์ˆ  ์—ญ์‚ฌ

  • ์„œ๋ธ”๋ฆฟ (์ž๋ฐ”์ฝ”๋“œ)
    • HTML ์ƒ์„ฑ์ด ์–ด๋ ค์›€
  • JSP๊ฐ€ ๊ฐœ๋ฐœ๋จ
    • HTML ์ƒ์„ฑ ํŽธ๋ฆฌํ•˜์ง€๋งŒ, ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง๊นŒ์ง€ ๋„ฃ์–ด ๋„ˆ๋ฌด ๋งŽ์€ ์—ญํ• ์„ ๋งก๊ฒŒ๋˜์–ด๋ฒ„๋ฆผ....
  • ์„œ๋ธ”๋ฆฟ + JSP๋ฅผ ์กฐํ•ฉํ•œ MVCํŒจํ„ด ์‚ฌ์šฉ
    • ๋ชจ๋ธ, ๋ทฐ, ์ปจํŠธ๋กค๋Ÿฌ๋กœ ์—ญํ• ์„ ๋‚˜๋ˆ  ๊ฐœ๋ฐœํ•จ
  • MVC ํ”„๋ ˆ์ž„์›Œํฌ์˜ ‘์ถ˜์ถ” ์ „๊ตญ ์‹œ๋Œ€’ 2000~2010์ดˆ
    • MVCํŒจํ„ด ์ž๋™ํ™”, ๋ณต์žกํ•œ ์›น ๊ธฐ์ˆ ์„ ํŽธ๋ฆฌํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ ์ง€์›.. (์ŠคํŠธ๋Ÿฟ์ธ , ์›น์›Œํฌ, ์Šคํ”„๋งMVC)

์—๋…ธํ…Œ์ด์…˜ ๊ธฐ๋ฐ˜์˜ ์Šคํ”„๋ง MVC

  • ๊น”๋”ํ•œ ์ฝ”๋“œ์™€ ์œ ์—ฐํ•œ ์ฝ”๋“œ ๊ด€๋ฆฌ

์Šคํ”„๋ง๋ถ€ํŠธ์˜ ๋“ฑ์žฅ (์Šคํ”„๋ง์„ ๋” ํŽธ๋ฆฌํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์คŒ)

  • ์„œ๋ฒ„๋ฅผ ๋‚ด์žฅ (ํ†ฐ์บฃ)

๊ณผ๊ฑฐ์—๋Š” ์„œ๋ฒ„์— WAS๋ฅผ ์ง์ ‘ ์„ค์น˜ํ•˜๊ณ  ์†Œ์Šค๋Š” WarํŒŒ์ผ์„ ๋งŒ๋“ค์–ด์„œ WAS์— ๋ฐฐํฌํ–ˆ์Œ [์„œ๋ฒ„ + warํŒŒ์ผ] → ๋ฐฐํฌ

→ ์Šคํ”„๋ง ๋ถ€ํŠธ๋Š” ๋นŒ๋“œ๊ฒฐ๊ณผ(Jar)์— WAS์„œ๋ฒ„๊ฐ€ ํฌํ•จ๋จ → ๋นŒ๋“œ ๋ฐฐํฌ๊ฐ€ ๋‹จ์ˆœํ™”๋จ

์ตœ์‹ ๊ธฐ์ˆ  - ์Šคํ”„๋ง ์›น ๊ธฐ์ˆ ์˜ ๋ถ„ํ™”

  • Web Servlet - Spring MVC
  • Web Reactive - Spring WebFlux

์ž๋ฐ” ๋ทฐ ํ…œํ”Œ๋ฆฟ ์—ญ์‚ฌ (HTML ์ƒ์„ฑ ๋ทฐ ๊ธฐ๋Šฅ)

  • JSP
    • ์†๋„ ๋Š๋ฆผ, ๊ธฐ๋Šฅ๋ถ€์กฑ (์Šคํ”„๋ง๋ถ€ํŠธ์—์„œ ๊ถŒ์žฅํ•˜์ง€ ์•Š์Œ)
  • ํ”„๋ฆฌ๋งˆ์ปค, ๋ฒจ๋กœ์‹œํ‹ฐ
    • ์†๋„ ๋ฌธ์ œ ํ•ด๊ฒฐ, ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ ์ œ๊ณต
  • ํƒ€์ž„๋ฆฌํ”„
    • ๋‚ด์ถ”๋Ÿด ํ…œํ”Œ๋ฆฟ : HTML ๋ชจ์–‘์„ ์œ ์ง€ํ•˜๋ฉด์„œ ๋ทฐ ํ…œํ”Œ๋ฆฟ ์ ์šฉ๊ฐ€๋Šฅ (htmlํƒœ๊ทธ์—์„œ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ๊น”๋”)
    • ์Šคํ”„๋ง MVC์™€ ๊ฐ•๋ ฅํ•œ ๊ธฐ๋Šฅ ํ†ตํ•ฉ