Skip to content

Latest commit

ย 

History

History
120 lines (78 loc) ยท 7.9 KB

File metadata and controls

120 lines (78 loc) ยท 7.9 KB

๐Ÿ“Œ Web Server์™€ Web Application Server(WAS)


์›น์€ HTTP ๊ธฐ๋ฐ˜์œผ๋กœ ํ†ต์‹ ํ•œ๋‹ค. JSON, XML, ์ด๋ฏธ์ง€, ์„œ๋ฒ„๊ฐ„์˜ ๋ฐ์ดํ„ฐ ๊ตํ™˜ ๋“ฑ ๋ชจ๋‘ HTTP๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ฃผ๊ณ  ๋ฐ›๋Š”๋‹ค.

๐Ÿค” ์›น ์„œ๋ฒ„๋ž€?

๊ฐœ๋…์ ์œผ๋กœ๋Š” ํ•˜๋“œ์›จ์–ด์™€ ์†Œํ”„ํŠธ์›จ์–ด๋กœ ๊ตฌ๋ถ„๋œ๋‹ค ์›น ์„œ๋ฒ„๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ๋Š” ์ปดํ“จํ„ฐ, ๋˜๋Š” HTTP ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ž‘ํ•˜๋ฉฐ ์ •์  ๋ฆฌ์†Œ์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š” ์—ญํ• ์„ ํ•˜๋Š” ์ปดํ“จํ„ฐ ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ์ •์˜๋œ๋‹ค. ์ •์  ๋ฆฌ์†Œ์Šค๋ž€ HTML, CSS, JS, ์ด๋ฏธ์ง€, ์˜์ƒ ๋“ฑ์˜ ์ •์  ํŒŒ์ผ์„ ์˜๋ฏธํ•œ๋‹ค. ์ฃผ๋กœ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ์›น ์„œ๋ฒ„๋กœ๋Š” NGINX, APACHE ๋“ฑ์ด ์žˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ์„œ HTTP ์š”์ฒญ์ด ๋“ค์–ด์˜ค๋ฉด ์›น ์„œ๋ฒ„๋Š” ์‘๋‹ต์œผ๋กœ ์ •์  ํŒŒ์ผ์„ ๋Œ๋ ค์ค„ ์ˆ˜ ์žˆ๋‹ค.

๐Ÿค” WAS๋ž€?

Web Application Server๋กœ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ HTTP ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ž‘ํ•˜๋ฉฐ ์›น ์„œ๋ฒ„์˜ ๊ธฐ๋Šฅ์„ ํฌํ•จํ•œ๋‹ค. ๊ฐ€์žฅ ํฐ ์ฐจ์ด๋Š” ํ”„๋กœ๊ทธ๋žจ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ์ง์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ์ฆ‰ ๋™์ ์ธ ๋ฆฌ์†Œ์Šค๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ๋‹ค. Servlet, JSP, Spring MVC ๋“ฑ์ด ๋ชจ๋‘ WAS ์œ„์—์„œ ๋™์ž‘ํ•œ๋‹ค. WAS ์˜ ์˜ˆ๋กœ๋Š” Tomcat, Jetty, Undertow ๋“ฑ์ด ์žˆ๋‹ค.

๐Ÿค” ์›น ์„œ๋ฒ„์™€ WAS์˜ ์ฐจ์ด๊ฐ€ ๋ญ”๊ฐ€์š”?

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

ํฌ๊ฒŒ ์ƒ๊ฐ ํ•œ๋‹ค๋ฉด ์›น ์„œ๋ฒ„๋Š” ์ •์  ๋ฆฌ์†Œ์Šค๋ฅผ ์ œ๊ณต, WAS๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ์ง์„ ๋‹ด๋‹นํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ด๋„ ์ข‹๋‹ค.

๐Ÿค” Servlet

์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„๋ฅผ ์ง์ ‘ ๊ตฌํ˜„ํ•œ๋‹ค๋ฉด?

- ์„œ๋ฒ„ TCP/IP ์—ฐ๊ฒฐ ๋Œ€๊ธฐ, ์†Œ์ผ“ ์—ฐ๊ฒฐ
- HTTP ์š”์ฒญ ๋ฉ”์‹œ์ง€ ํŒŒ์‹ฑ
- HTTP ๋ฉ”์„œ๋“œ, URL ํ™•์ธ
- Content-Type ํ™•์ธ
- ๋ฉ”์‹œ์ง€ ๋ฐ”๋”” ๋‚ด์šฉ ํŒŒ์‹ฑ
- ์ €์žฅ ํ”„๋กœ์„ธ์Šค ์‹คํ–‰
- **๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ์‹คํ–‰**
- ์‘๋‹ต ๋ฉ”์‹œ์ง€ ์ƒ์„ฑ
- TCP/IP ์‘๋‹ต ์ „๋‹ฌ, ์†Œ์ผ“ ์ข…๋ฃŒ.

์—ฌ๊ธฐ์„œ ์‹ค์ œ ํ•˜๊ณ ์žํ•˜๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์€ ์ผ๋ถ€๋ถ„์ด์ง€๋งŒ, ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ํ•ด์•ผํ•  ์ผ์€ ๋„ˆ๋ฌด๋‚˜๋„ ๋งŽ๋‹ค. ๊ทธ๋ž˜์„œ ๋“ฑ์žฅํ•œ ๊ฒƒ์ด ์„œ๋ธ”๋ฆฟ, ์œ„์—์„œ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์ œ์™ธํ•œ ๋ชจ๋“  ๊ฒƒ์„ ์„œ๋ธ”๋ฆฟ์—์„œ ์ง€์›ํ•ด์ค€๋‹ค. ์ด๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๊ฐœ๋ฐœ์ž๋Š” HTTP ์ŠคํŽ™์„ ๋งค์šฐ ๊ฐ„ํŽธํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค. ์„œ๋ธ”๋ฆฟ์— ์ •์˜๋œ URL์˜ ํŒจํ„ด๊ณผ ์ผ์น˜ํ•˜๋Š” URL์ด ํ˜ธ์ถœ๋˜๋ฉด ์„œ๋ธ”๋ฆฟ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋œ๋‹ค.

  • HTTPServletRequest : ์š”์ฒญ ์ •๋ณด๋ฅผ ํŽธ๋ฆฌํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค.
  • HTTPServletResponse : ์‘๋‹ต ์ •๋ณด๋ฅผ ํŽธ๋ฆฌํ•˜๊ฒŒ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค.

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

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

์„œ๋ธ”๋ฆฟ์˜ ์ƒ์„ฑ, ์ดˆ๊ธฐํ™”, ํ˜ธ์ถœ, ์ข…๋ฃŒ์˜ ์ƒ๋ช…์ฃผ๊ธฐ๋ฅผ ๊ด€๋ฆฌ ํ•œ๋‹ค. Tomcat ์ฒ˜๋Ÿผ ์„œ๋ธ”๋ฆฟ์„ ์ง€์›ํ•˜๋Š” WAS๋ฅผ ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ๋ผ๊ณ  ํ•œ๋‹ค.

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

๐Ÿค” ๊ทธ๋ ‡๋‹ค๋ฉด Sevlet์€ ๋ˆ„๊ฐ€ ํ˜ธ์ถœํ•˜์ง€?

Thread

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

๊ทธ๋Ÿฌ๋‚˜ ์š”์ฒญ๋งˆ๋‹ค ์Šค๋ ˆ๋“œ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค๋ฉด ์Šค๋ ˆ๋“œ์˜ ์ƒ์„ฑ ๋น„์šฉ์ด ๋งค์šฐ ๋น„์‹ธ๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๋งŒํผ ์‘๋‹ต ์†๋„๊ฐ€ ๋Šฆ์–ด์ง€๊ฒŒ ๋œ๋‹ค. ๋˜ํ•œ ์“ฐ๋ ˆ๋“œ์˜ ์ƒ์„ฑ์— ์ œํ•œ์„ ๋‘์ง€ ์•Š์œผ๋ฉด ์š”์ฒญ์ด ๋งŽ์ด ๋“ค์–ด์™”์„ ๋•Œ CPU, ๋ฉ”๋ชจ๋ฆฌ์˜ ํ•œ๊ณ„๋กœ ์„œ๋ฒ„์— ์žฅ์• ๊ฐ€ ์ƒ๊ธธ ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

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

Tomcat ์—์„œ๋Š” ์ต€๋Œ€ 200๊ฐœ๋กœ ๊ธฐ๋ณธ๊ฐ’์ด ์„ค์ •๋˜์–ด ์žˆ๊ณ , ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค. WAS์˜ ์ฃผ์š” ํŠœ๋‹ ํฌ์ธํŠธ๋Š” ์ตœ๋Œ€ ์“ฐ๋ ˆ๋“œ์˜ ์ˆ˜ ์ธ๋ฐ, ๊ฐ’์„ ๋„ˆ๋ฌด ๋‚ฎ๊ฒŒ ์„ค์ • ํ•œ๋‹ค๋ฉด ์„œ๋ฒ„์˜ ๋ฆฌ์†Œ์Šค๋Š” ์—ฌ์œ ๋กญ๊ฒ ์ง€๋งŒ ํด๋ผ์ด์–ธํŠธ์˜ ์‘๋‹ต์€ ์ง€์—ฐ๋˜๊ฒŒ ๋œ๋‹ค. ๋ฐ˜๋Œ€๋กœ ๋„ˆ๋ฌด ๋†’๊ฒŒ ์„ค์ •ํ•œ๋‹ค๋ฉด ์„œ๋ฒ„ ๋ฆฌ์†Œ์Šค์˜ ์ž„๊ณ„์น˜๊ฐ€ ์ดˆ๊ณผ๋  ์ˆ˜ ์žˆ๋‹ค. ์„œ๋ฒ„์˜ ์„ฑ๋Šฅ์„ ๊ณ ๋ คํ•œ ์ ์ ˆํ•œ ํŠœ๋‹์ด ํ•„์š”ํ•˜๋‹ค.

  • ์ ์ • ์ˆ˜? : ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ๋ฅผ ํ†ตํ•ด ์˜ˆ์ธกํ•  ์ˆ˜ ์žˆ๋‹ค. ์ตœ๋Œ€ํ•œ ์‹ค์ œ ์„œ๋น„์Šค์™€ ์œ ์‚ฌํ•˜๊ฒŒ ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ๋ฅผ ์‹œ๋„ํ•œ๋‹ค. Apache ab, ์ œ์ด๋ฏธํ„ฐ, nGrinder๋“ฑ์˜ ํˆด์„ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

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


๐ŸŒ ์›น ์‹œ์Šคํ…œ์˜ ๊ตฌ์„ฑ


โ˜๏ธ WAS + DB๋กœ๋งŒ ๊ตฌ์„ฑ.

img.png

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

โ˜๏ธ WebServer + WAS + DB

img_1.png

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

ํ•˜์ง€๋งŒ ์„œ๋ฒ„๊ฐ€ API๋งŒ ์ œ๊ณตํ•˜๋Š” ์„œ๋ฒ„๋ผ๋ฉด ๊ตณ์ด ์›น ์„œ๋ฒ„๋ฅผ ๊ตฌ์ถ•ํ•  ํ•„์š”์„ฑ์ด ์—†๋‹ค.

img_2.png

๋™์ ์ธ ์ปจํ…์ธ ๋ฅผ ์ œ๊ณตํ•ด์•ผ ํ•œ๋‹ค๋ฉด ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์„ ์›น ์„œ๋ฒ„์—์„œ ๋ฐ›์•„ ์ด๋ฅผ WAS์—๊ฒŒ ์œ„์ž„ํ•œ๋‹ค. WAS๋Š” Thread Pool ์—์„œ Thread ๋ฅผ ํ• ๋‹น๋ฐ›์•„ ์„œ๋ธ”๋ฆฟ์„ ์‹คํ–‰์‹œํ‚ค๊ณ , HttpServletRequest์™€ HttpServletResponse ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ด ์„œ๋ธ”๋ฆฟ์—๊ฒŒ ์ „๋‹ฌํ•œ๋‹ค. ์Šค๋ ˆ๋“œ๋Š” ์„œ๋ธ”๋ฆฟ์˜ service() ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค. service ๋ฉ”์„œ๋“œ์—์„œ๋Š” ์š”์ฒญ์— ๋”ฐ๋ผ doGet() ๋˜๋Š” doPost() ๋“ฑ์˜ ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค. ๋ฉ”์„œ๋“œ์—์„œ๋Š” ์‹คํ–‰ ๊ฒฐ๊ณผ๋กœ ๋ฐœ์ƒํ•œ ๋™์  ์ปจํ…์ธ ๋ฅผ Response ๊ฐ์ฒด์— ๋‹ด์•„ WAS์— ์ „๋‹ฌํ•˜๊ฒŒ ๋˜๊ณ , WAS ์—์„œ๋Š” ์ด๋ฅผ HttpResonse ํ˜•ํƒœ๋กœ ๋ณ€๊ฒฝํ•˜์—ฌ ์›น ์„œ๋ฒ„๋กœ ์ „๋‹ฌํ•œ๋‹ค.