BackEnd : Spring/Spring MVC

[Spring MVC] WAS, ์„œ๋ธ”๋ฆฟ, ์“ฐ๋ ˆ๋“œ

snoony 2024. 3. 16. 14:38

 ๐Ÿ“Œ ์›น ์„œ๋ฒ„, ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„

๋ชจ๋“  ๊ฒƒ์ด HTTP : HTTP ๋ฉ”์‹œ์ง€์— ๋ชจ๋“  ๊ฒƒ์„ ์ „์†ก

์›น ์„œ๋ฒ„(Web Server)

  • HTTP ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ž‘
  • ์ •์  ๋ฆฌ์†Œ์Šค ์ œ๊ณต, ๊ธฐํƒ€ ๋ถ€๊ฐ€๊ธฐ๋Šฅ
  • ์ •์ (ํŒŒ์ผ) HTML, CSS, JS, ์ด๋ฏธ์ง€, ์˜์ƒ

์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„(WAS)

  • HTTP ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ž‘
  • ์›น ์„œ๋ฒ„ ๊ธฐ๋Šฅ ํฌํ•จ + ์ •์  ๋ฆฌ์†Œ์Šค ์ œ๊ณต ๊ธฐ๋Šฅ
  • ํ”„๋กœ๊ทธ๋žจ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•ด์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ์ง ์ˆ˜ํ–‰

์›น ์„œ๋ฒ„, WAS ์ฐจ์ด

  • ์›น ์„œ๋ฒ„๋Š” ์ •์  ๋ฆฌ์†Œ์Šค, WAS๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ์ง
  • ์‚ฌ์‹ค์€ ๋‘˜์˜ ์šฉ์–ด๋„ ๊ฒฝ๊ณ„๋„ ๋ชจํ˜ธํ•จ
  • ์ž๋ฐ”๋Š” ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋ฉด WAS
  • WAS๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋Š”๋ฐ ๋” ํŠนํ™”

์›น ์‹œ์Šคํ…œ ๊ตฌ์„ฑ - WAS, DB

  • WAS๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์€ ์—ญํ• ์„ ๋‹ด๋‹น, ์„œ๋ฒ„ ๊ณผ๋ถ€ํ•˜ ์šฐ๋ ค
  • ๊ฐ€์žฅ ๋น„์‹ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ์ง์ด ์ •์  ๋ฆฌ์†Œ์Šค ๋•Œ๋ฌธ์— ์ˆ˜ํ–‰์ด ์–ด๋ ค์šธ ์ˆ˜ ์žˆ์Œ
  • WAS ์žฅ์• ์‹œ ์˜ค๋ฅ˜ ํ™”๋ฉด๋„ ๋…ธ์ถœ ๋ถˆ๊ฐ€๋Šฅ

์›น ์‹œ์Šคํ…œ ๊ตฌ์„ฑ - WEB, WAS, DB

  • ์ •์  ๋ฆฌ์†Œ์Šค๋Š” ์›น ์„œ๋ฒ„๊ฐ€ ์ฒ˜๋ฆฌ
  • ์›น ์„œ๋ฒ„๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ์ง๊ฐ™์€ ๋™์ ์ธ ์ฒ˜๋ฆฌ๊ฐ€ ํ•„์š”ํ•˜๋ฉด WAS์— ์š”์ฒญ์„ ์œ„์ž„
  • WAS๋Š” ์ค‘์š”ํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ์ง ์ฒ˜๋ฆฌ ์ „๋‹ด

  • ํšจ์œจ์ ์ธ ๋ฆฌ์†Œ์Šค ๊ด€๋ฆฌ
    • ์ •์  ๋ฆฌ์†Œ์Šค๊ฐ€ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋ฉด WEB ์„œ๋ฒ„ ์ฆ์„ค
    • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฆฌ์†Œ์Šค๊ฐ€ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋ฉด WAS ์ฆ์„ค

  • ์ •์  ๋ฆฌ์†Œ์Šค๋งŒ ์ œ๊ณตํ•˜๋Š” ์›น ์„œ๋ฒ„๋Š” ์ž˜ ์ฃฝ์ง€ ์•Š์Œ
  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ์ง์ด ๋™์ž‘ํ•˜๋Š” WAS ์„œ๋ฒ„๋Š” ์ž˜ ์ฃฝ์Œ
  • WAS, DB ์žฅ์• ์‹œ WEB ์„œ๋ฒ„๊ฐ€ ์˜ค๋ฅ˜ ํ™”๋ฉด ์ œ๊ณต ๊ฐ€๋Šฅ

 ๐Ÿ“Œ ์„œ๋ธ”๋ฆฟ

@WebServlet(name = "helloServlet", urlPatterns = "/hello")
public class HelloServlet extends HttpServlet {
	@Override
    protected void service(HttpServletRequest request, HttpServletResponse response){
    }
}

ํŠน์ง•

  • urlPatterns(/hello)์˜ url์ด ํ˜ธ์ถœ๋˜๋ฉด ์„œ๋ธ”๋ฆฟ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰
  • HTTP ์š”์ฒญ ์ •๋ณด๋ฅผ ํŽธ๋ฆฌํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” HttpServletRequest
  • HTTP ์‘๋‹ต ์ •๋ณด๋ฅผ ํŽธ๋ฆฌํ•˜๊ฒŒ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋Š” HttpServletResponse
  • ๊ฐœ๋ฐœ์ž๋Š” HTTP ์ŠคํŽ™์„ ๋งค์šฐ ํŽธ๋ฆฌํ•˜๊ฒŒ ์‚ฌ์šฉ

HTTP ์š”์ฒญ, ์‘๋‹ต ํ๋ฆ„

  • WAS๋Š” request, response ๊ฐ์ฒด๋ฅผ ์ƒˆ๋กœ ๋งŒ๋“ค์–ด์„œ ์„œ๋ธ”๋ฆฟ ๊ฐ์ฒด ํ˜ธ์ถœ
  • ๊ฐœ๋ฐœ์ž๋Š” Request ๊ฐ์ฒด์—์„œ http ์š”์ฒญ ์ •๋ณด๋ฅผ ํŽธ๋ฆฌํ•˜๊ฒŒ ๊บผ๋‚ด์„œ ์‚ฌ์šฉ
  • ๊ฐœ๋ฐœ์ž๋Š” Response ๊ฐ์ฒด์—์„œ http ์‘๋‹ต ์ •๋ณด๋ฅผ ํŽธ๋ฆฌํ•˜๊ฒŒ ์ž…๋ ฅ
  • WAS๋Š” Response ๊ฐ์ฒด์— ๋‹ด๊ฒจ์žˆ๋Š” ๋‚ด์šฉ์œผ๋กœ http ์‘๋‹ต ์ •๋ณด ์ƒ์„ฑ

์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ

  • ํ†ฐ์บฃ์ฒ˜๋Ÿผ ์„œ๋ธ”๋ฆฟ์„ ์ง€์›ํ•˜๋Š” WAS๋ฅผ ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ๋ผ๊ณ  ํ•จ
  • ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ๋Š” ์„œ๋ธ”๋ฆฟ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑ, ์ดˆ๊ธฐํ™”, ํ˜ธ์ถœ, ์ข…๋ฃŒํ•˜๋Š” ์ƒ๋ช…์ฃผ๊ธฐ ๊ด€๋ฆฌ
  • ์„œ๋ธ”๋ฆฟ ๊ฐ์ฒด๋Š” ์‹ฑ๊ธ€ํ†ค์œผ๋กœ ๊ด€๋ฆฌ
    • ๊ณ ๊ฐ์˜ ์š”์ฒญ์ด ์˜ฌ ๋•Œ ๋งˆ๋‹ค ๊ณ„์† ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์€ ๋น„ํšจ์œจ
    • ์ตœ์ดˆ ๋กœ๋”ฉ ์‹œ์ ์— ์„œ๋ธ”๋ฆฟ ๊ฐ์ฒด๋ฅผ ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด๋‘๊ณ  ์žฌํ™œ์šฉ
    • ๋ชจ๋“  ๊ณ ๊ฐ ์š”์ฒญ์€ ๋™์ผํ•œ ์„œ๋ธ”๋ฆฟ ๊ฐ์ฒด ์ธ์Šคํ„ด์Šค์— ์ ‘๊ทผ
    • ๊ณต์œ  ๋ณ€์ˆ˜ ์‚ฌ์šฉ ์ฃผ์˜
    • ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ ์ข…๋ฃŒ์‹œ ํ•จ๊ป˜ ์ข…๋ฃŒ
  • jsp๋„ ์„œ๋ธ”๋ฆฟ์œผ๋กœ ๋ณ€ํ™˜ ๋˜์–ด์„œ ์‚ฌ์šฉ
  • ๋™์‹œ ์š”์ฒญ์„ ์œ„ํ•œ ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ ์ฒ˜๋ฆฌ ์ง€์›

 ๐Ÿ“Œ ๋™์‹œ ์š”์ฒญ - ๋ฉ€ํ‹ฐ ์“ฐ๋ ˆ๋“œ

์“ฐ๋ ˆ๋“œ

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

๋‹จ์ผ ์š”์ฒญ

๋‹ค์ค‘ ์š”์ฒญ - ์“ฐ๋ ˆ๋“œ ํ•˜๋‚˜ ์‚ฌ์šฉ

์š”์ฒญ ๋งˆ๋‹ค ์“ฐ๋ ˆ๋“œ ์ƒ์„ฑ

์žฅ์ 

  • ๋™์‹œ ์š”์ฒญ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ
  • ๋ฆฌ์†Œ์Šค๊ฐ€ ํ—ˆ์šฉํ•  ๋•Œ๊นŒ์ง€ ์ฒ˜๋ฆฌ๊ฐ€๋Šฅ
  • ํ•˜๋‚˜์˜ ์“ฐ๋ ˆ๋“œ๊ฐ€ ์ง€์—ฐ ๋˜์–ด๋„, ๋‚˜๋จธ์ง€ ์“ฐ๋ ˆ๋“œ๋Š” ์ •์ƒ ๋™์ž‘

๋‹จ์ 

  • ์“ฐ๋ ˆ๋“œ ์ƒ์„ฑ ๋น„์šฉ์ด ๋น„์Œˆ, ๊ณ ๊ฐ ์š”์ฒญ ์˜ฌ๋•Œ๋งˆ๋‹ค ์“ฐ๋ ˆ๋“œ ์ƒ์„ฑํ•˜๋ฉด ์‘๋‹ต ์†๋„ ๋Š๋ ค์ง
  • ์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ ๋น„์šฉ ๋ฐœ์ƒ
  • ์“ฐ๋ ˆ๋“œ ์ƒ์„ฑ์— ์ œํ•œ์ด ์—†์Œ

์“ฐ๋ ˆ๋“œ ํ’€

์“ฐ๋ ˆ๋“œ ํ’€ : ์š”์ฒญ ๋งˆ๋‹ค ์“ฐ๋ ˆ๋“œ ์ƒ์„ฑ์˜ ๋‹จ์  ๋ณด์™„

ํŠน์ง• 

  • ํ•„์š”ํ•œ ์“ฐ๋ ˆ๋“œ๋ฅผ ์“ฐ๋ ˆ๋“œ ํ’€์— ๋ณด๊ด€ํ•˜๊ณ  ๊ด€๋ฆฌํ•จ

์‚ฌ์šฉ

  • ์“ฐ๋ ˆ๋“œ๊ฐ€ ํ•„์š”ํ•˜๋ฉด, ์ด๋ฏธ ์ƒ์„ฑ๋˜์–ด ์žˆ๋Š” ์“ฐ๋ ˆ๋“œ๋ฅผ ์“ฐ๋ ˆ๋“œ ํ’€์—์„œ ๊บผ๋‚ด์„œ ์‚ฌ์šฉ
  • ์‚ฌ์šฉ์„ ์ข…๋ฃŒํ•˜๋ฉด ์“ฐ๋ ˆ๋“œ ํ’€์— ํ•ด๋‹น ์“ฐ๋ ˆ๋“œ๋ฅผ ๋ฐ˜๋‚ฉํ•œ๋‹ค.
  • ์ตœ๋Œ€ ์“ฐ๋ ˆ๋“œ๊ฐ€ ๋ชจ๋‘ ์‚ฌ์šฉ์ค‘์ด์–ด์„œ ์“ฐ๋ ˆ๋“œ ํ’€์— ์“ฐ๋ ˆ๋“œ๊ฐ€ ์—†์œผ๋ฉด ? ๊ธฐ๋‹ค๋ฆฌ๋Š” ์š”์ฒญ์€ ๊ฑฐ์ ˆํ•˜๊ฑฐ๋‚˜ ํŠน์ • ์ˆซ์ž๋งŒํผ๋งŒ ๋Œ€๊ธฐํ•˜๋„๋ก ์„ค์ • ๊ฐ€๋Šฅ

์žฅ์ 

  • ์“ฐ๋ ˆ๋“œ๊ฐ€ ๋ฏธ๋ฆฌ ์ƒ์„ฑ๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ, ์“ฐ๋ ˆ๋“œ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ข…๋ฃŒํ•˜๋Š” ๋น„์šฉ์ด ์ ˆ์•ฝ๋˜๊ณ , ์‘๋‹ต ์‹œ๊ฐ„์ด ๋น ๋ฅด๋‹ค.
  • ์ƒ์„ฑ ๊ฐ€๋Šฅํ•œ ์“ฐ๋ ˆ๋“œ์˜ ์ตœ๋Œ€์น˜๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ ๋„ˆ๋ฌด ๋งŽ์€ ์š”์ฒญ์ด ๋“ค์–ด์™€๋„ ๊ธฐ์กด ์š”์ฒญ์€ ์•ˆ์ „ํ•˜๊ฒŒ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ

์‹ค๋ฌด ํŒ

WAS์˜ ์ฃผ์š” ํŠœ๋‹ ํฌ์ธํŠธ๋Š” ์ตœ๋Œ€ ์“ฐ๋ ˆ๋“œ ์ˆ˜ ์ด๋‹ค

์ด ๊ฐ’์„ ๋„ˆ๋ฌด ๋‚ฎ๊ฒŒ ์„ค์ •ํ•˜๋ฉด : ๋™์‹œ ์š”์ฒญ์ด ๋งŽ์œผ๋ฉด ์„œ๋ฒ„ ๋ฆฌ์†Œ์Šค๋Š” ์—ฌ์œ ๋กญ์ง€๋งŒ, ํด๋ผ์ด์–ธํŠธ๋Š” ์‘๋‹ต ์ง€์—ฐ

๋„ˆ๋ฌด ๋†’๊ฒŒ ์„ค์ •ํ•˜๋ฉด : ๋™์‹œ ์š”์ฒญ์ด ๋งŽ์œผ๋ฉด cpu, ๋ฉ”๋ชจ๋ฆฌ ๋ฆฌ์†Œ์Šค ์ž„๊ณ„์  ์ดˆ๊ณผ๋กœ ์„œ๋ฒ„ ๋‹ค์šด

์žฅ์•  ๋ฐœ์ƒ์‹œ : ํด๋ผ์šฐ๋“œ๋ฉด ์ผ๋‹จ ์„œ๋ฒ„๋ถ€ํ„ฐ ๋Š˜๋ฆฌ๊ธฐ, ํด๋ผ์šฐ๋“œ ์•„๋‹ˆ๋ฉด ํŠœ๋‹

์“ฐ๋ ˆ๋“œ ํ’€์˜ ์ ์ • ์ˆซ์ž

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ์ง์˜ ๋ณต์žก๋„, CPU, ๋ฉ”๋ชจ๋ฆฌ, io ๋ฆฌ์†Œ์Šค ์ƒํ™ฉ์— ๋”ฐ๋ผ ๋ชจ๋‘ ๋‹ค๋ฆ„

์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ๋ฅผ ํ•ด๋ด์•ผํ•จ -> ํˆด : ์•„ํŒŒ์น˜ ab, ์ œ์ด๋ฏธํ„ฐ, nGrinder

WAS์˜ ๋ฉ€ํ‹ฐ ์“ฐ๋ ˆ๋“œ ์ง€์›

๋ฉ€ํ‹ฐ ์“ฐ๋ ˆ๋“œ์— ๋Œ€ํ•œ ๋ถ€๋ถ„์€ was๊ฐ€ ์ฒ˜๋ฆฌ

๊ฐœ๋ฐœ์ž๊ฐ€ ๋ฉ€ํ‹ฐ ์“ฐ๋ ˆ๋“œ ๊ด€๋ จ ์ฝ”๋“œ๋ฅผ ์‹ ๊ฒฝ์“ฐ์ง€ ์•Š์•„๋„ ๋จ

๊ฐœ๋ฐœ์ž๋Š” ๋งˆ์น˜ ์‹ฑ๊ธ€ ์“ฐ๋ ˆ๋“œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•˜๋“ฏ์ด ํŽธ๋ฆฌํ•˜๊ฒŒ ์†Œ์Šค ์ฝ”๋“œ ๊ฐœ๋ฐœ

๋ฉ€ํ‹ฐ ์“ฐ๋ ˆ๋“œ ํ™˜๊ฒฝ์ด๋ฏ€๋กœ ์‹ฑ๊ธ€ํ†ค ๊ฐ์ฒด(์„œ๋ธ”๋ฆฟ, ์Šคํ”„๋ง ๋นˆ)๋Š” ์ฃผ์˜ํ•ด์„œ ์‚ฌ์šฉ