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

WEB ๊ณผ WAS์˜ ์ฐจ์ด

์‹œํ๋ฆฌํ‹ฐ์ง€ํ˜ธ 2024. 6. 16.

์›น์„œ๋ฒ„(WEB Server) ๋ž€?

 

Web Server์˜ ๊ฐœ๋…

  • ์›น ์„œ๋ฒ„(ํ•˜๋“œ์›จ์–ด) : Web ์„œ๋ฒ„๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ๋Š” ์ปดํ“จํ„ฐ
  • ์›น ์„œ๋ฒ„(์†Œํ”„ํŠธ์›จ์–ด) : ํด๋ผ์ด์–ธํŠธ๋กœ๋ถ€ํ„ฐ HTTP ์š”์ฒญ์„ ๋ฐ›์•„ ์ •์  ์ปจํ…์ธ (.html, .jpg, .css ํŒŒ์ผ ๋“ฑ)๋ฅผ ์ œ๊ณตํ•˜๋Š” ์ปดํ“จํ„ฐ ํ”„๋กœ๊ทธ๋žจ

Web Server์˜ ๊ธฐ๋Šฅ

  • HTTP ํ”„๋กœํ† ์ฝœ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ(์›น ๋ธŒ๋ผ์šฐ์ € ๋˜๋Š” ์›น ํฌ๋กค๋Ÿฌ)์˜ ์š”์ฒญ์„ ์„œ๋น„์Šคํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๋‹ด๋‹นํ•œ๋‹ค.
  • ์š”์ฒญ์— ๋”ฐ๋ผ ์•„๋ž˜์˜ ๋‘ ๊ฐ€์ง€ ๊ธฐ๋Šฅ ์ค‘ ์ ์ ˆํ•˜๊ฒŒ ์„ ํƒํ•˜์—ฌ ์ˆ˜ํ–‰ํ•œ๋‹ค.
  • ๊ธฐ๋Šฅ1)

       1. ์ •์ ์ธ ์ปจํ…์ธ  ์ œ๊ณต

       2. WAS๋ฅผ ๊ฑฐ์น˜์ง€ ์•Š๊ณ  ๋ฐ”๋กœ ์ž์›์„ ์ œ๊ณต

  • ๊ธฐ๋Šฅ2)

      1. ๋™์ ์ธ ์ปจํ„ด์ธ  ์ œ๊ณต์„ ์œ„ํ•œ ์š”์ฒญ ์ „๋‹ฌ

      2. ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ(Request)์„ WAS์— ๋ณด๋‚ด๊ณ , WAS๊ฐ€ ์ฒ˜๋ฆฌํ•œ ๊ฒฐ๊ณผ๋ฅผ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ „๋‹ฌ(์‘๋‹ต, Response)ํ•œ๋‹ค.

      3. ํด๋ผ์ด์–ธํŠธ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์›น ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

 

  • Web Server์˜ ์˜ˆ

      ex) Apache Server, Nginx, IIS(Windows ์ „์šฉ Web ์„œ๋ฒ„) ๋“ฑ

 

WAS(Web Application Server) ๋ž€?

  • WAS์˜ ๊ฐœ๋…

     1. DB ์กฐํšŒ๋‚˜ ๋‹ค์–‘ํ•œ ๋กœ์ง ์ฒ˜๋ฆฌ๋ฅผ ์š”๊ตฌํ•˜๋Š” ๋™์ ์ธ ์ปจํ…์ธ ๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด ๋งŒ๋“ค์–ด์ง„ Application Server

     2. HTTP๋ฅผ ํ†ตํ•ด ์ปดํ“จํ„ฐ๋‚˜ ์žฅ์น˜์— ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ˆ˜ํ–‰ํ•ด์ฃผ๋Š” ๋ฏธ๋“ค์›จ์–ด(์†Œํ”„ํŠธ์›จ์–ด ์—”์ง„)์ด๋‹ค.

     3. "์›น ์ปจํ…Œ์ด๋„ˆ(Web Container)" ํ˜น์€ "์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ(Servlet Container)"๋ผ๊ณ ๋„ ๋ถˆ๋ฆฐ๋‹ค.

         *Container๋ž€ JSP, Servlet์„ ์‹ฑํ–‰์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๋งํ•œ๋‹ค. ์ฆ‰, WAS๋Š” JSP, Servlet ๊ตฌ๋™ ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•œ๋‹ค.

 

  • WAS์˜ ์—ญํ• 

     1. WAS = Web Server + Web Container

     2. Web Sever ๊ธฐ๋Šฅ๋“ค์„ ๊ตฌ์กฐ์ ์œผ๋กœ ๋ถ„๋ฆฌํ•˜์—ฌ ์ฒ˜๋ฆฌํ•˜๊ณ ์ž ํ•˜๋Š” ๋ชฉ์ ์œผ๋กœ ์ œ์‹œ๋˜์—ˆ๋‹ค.

          2-1. ๋ถ„์‚ฐ ํŠธ๋žœ์žญ์…˜, ๋ณด์•ˆ, ๋ฉ”์‹œ์ง•, ์“ฐ๋ ˆ๋“œ ์ฒ˜๋ฆฌ ๋“ฑ์˜ ๊ธฐ๋Šฅ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ถ„์‚ฐ ํ™˜๊ฒฝ์—์„œ ์‚ฌ์šฉ๋œ๋‹ค.

          2-2. ์ฃผ๋กœ DB ์„œ๋ฒ„์™€ ๊ฐ™์ด ์ˆ˜ํ–‰๋œ๋‹ค.

     3. ํ˜„์žฌ๋Š” WAS๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” Web Server๋„ ์ •์ ์ธ ์ปจํ…์ธ ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐ ์žˆ์–ด์„œ ์„ฑ๋Šฅ์ƒ ํฐ ์ฐจ์ด๊ฐ€ ์—†๋‹ค.

 

  • WAS์˜ ์ฃผ์š” ๊ธฐ๋Šฅ

     1. ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ํ™˜๊ฒฝ๊ณผ DB ์ ‘์† ๊ธฐ๋Šฅ ์ œ๊ณต

     2. ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํŠธ๋žœ์žญ์…˜(๋…ผ๋ฆฌ์ ์ธ ์ž‘์—… ๋‹จ์œ„) ๊ด€๋ฆฌ ๊ธฐ๋Šฅ

     3. ์—…๋ฌด๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ์ˆ˜ํ–‰

 

  • WAS์˜ ์˜ˆ

     ex) Tomcat, JBoss, Jeus, Web Sphere ๋“ฑ

 



Web Server์™€ WAS๋ฅผ ๊ตฌ๋ถ„ํ•˜๋Š” ์ด์œ 

 

Web Server๊ฐ€ ํ•„์š”ํ•œ ์ด์œ 

: ํด๋ผ์ด์–ธํŠธ(์›น ๋ธŒ๋ผ์šฐ์ €)์— ์ด๋ฏธ์ง€ ํŒŒ์ผ(์ •์  ์ปจํ…์ธ )์„ ๋ณด๋‚ด๋Š” ๊ณผ์ •์„ ๋ณด๋ฉด ์ด๋ฏธ์ง€ ํŒŒ์ผ๊ณผ ๊ฐ™์€ ์ •์ ์ธ ํŒŒ์ผ๋“ค์€ ์›น ๋ฌธ์„œ(HTML ๋ฌธ์„œ)

๊ฐ€ ํด๋ผ์ด์–ธํŠธ๋กœ ๋ณด๋‚ด์งˆ ๋•Œ ํ•จ๊ป˜ ๊ฐ€๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋‹ค.

 

ํด๋ผ์ด์–ธํŠธ๋Š” HTML ๋ฌธ์„œ๋ฅผ ๋จผ์ € ๋ฐ›๊ณ  ๊ทธ์— ๋งž๊ฒŒ ํ•„์š”ํ•œ ์ด๋ฏธ์ง€ ํŒŒ์ผ๋“ค์„ ๋‹ค์‹œ ์„œ๋ฒ„๋กœ ์š”์ฒญํ•˜๋ฉด ๊ทธ๋•Œ์„œ์•ผ ์ด๋ฏธ์ง€ ํŒŒ์ผ์„ ๋ฐ›์•„์˜จ๋‹ค.

 

Web Server๋ฅผ ํ†ตํ•ด ์ •์ ์ธ ํŒŒ์ผ๋“ค์„ Application Server๊นŒ์ง€ ๊ฐ€์ง€ ์•Š๊ณ  ์•ž๋‹จ์—์„œ ๋น ๋ฅด๊ฒŒ ๋ณด๋‚ด์ค„ ์ˆ˜ ์žˆ๋‹ค.

 

WAS๊ฐ€ ํ•„์š”ํ•œ ์ด์œ 

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

์ด๋•Œ, Web Server ๋งŒ์„ ์ด์šฉ ํ•œ๋‹ค๋ฉด ์‚ฌ์šฉ์ž๊ฐ€ ์›ํ•˜๋Š” ์š”์ฒญ์— ๋Œ€ํ•œ ๊ฒฐ๊ณผ๊ฐ’์„ ๋ชจ๋‘ ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด ๋†“๊ณ  ์„œ๋น„์Šค๋ฅผ ํ•ด์•ผ ํ•œ๋‹ค.

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

 

WAS๊ฐ€ Web Server ๊ธฐ๋Šฅ์„ ๋”ฐ๋กœ ๋‘๋Š” ์ด์œ 

1. ๊ธฐ๋Šฅ์„ ๋ถ„๋ฆฌํ•˜์—ฌ ์„œ๋ฒ„ ๋ถ€ํ•˜ ๋ฐฉ์ง€

   - WAS๋Š” DB ์กฐํšŒ๋‚˜ ๋‹ค์–‘ํ•œ ๋กœ์ง์„ ์ฒ˜๋ฆฌํ•˜๋А๋ผ ๋ฐ”์˜๊ธฐ ๋•Œ๋ฌธ์— ๋‹จ์ˆœํ•œ ์ •์  ์ปจํ…์ธ ๋Š” Web Server์—์„œ ๋น ๋ฅด๊ฒŒ ํด๋ผ์ด์–ธํŠธ์— ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

   - WAS๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋™์  ์ปจํ…์ธ ๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด ์กด์žฌํ•˜๋Š” ์„œ๋ฒ„์ด๋‹ค.

   - ๋งŒ์•ฝ ์ •์  ์ปจํ…์ธ  ์š”์ฒญ๊นŒ์ง€ WAS๊ฐ€ ์ฒ˜๋ฆฌํ•œ๋‹ค๋ฉด ์ •์  ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๋กœ ์ธํ•ด ๋ถ€ํ•˜๊ฐ€ ์ปค์ง€๊ฒŒ ๋˜๊ณ , ๋™์  ์ปจํ…์ธ ์˜ ์ฒ˜๋ฆฌ๊ฐ€ ์ง€์—ฐ ๋จ์— ๋”ฐ๋ผ ์ˆ˜ํ–‰ ์†๋„๊ฐ€ ๋А๋ ค์ง„๋‹ค.

   - ๊ฒฐ๊ณผ์ ์œผ๋กœ ํŽ˜์ด์ง€ ๋…ธ์ถœ ๊นŒ์ง€์˜ ์‹œ๊ฐ„์ด ๋Š˜์–ด๋‚˜๊ฒŒ ๋œ๋‹ค.

 

2. ๋ฌผ๋ฆฌ์ ์œผ๋กœ ๋ถ„๋ฆฌํ•˜์—ฌ ๋ณด์•ˆ ๊ฐ•ํ™”

   - SSL์— ๋Œ€ํ•œ ์•”๋ณตํ˜ธํ™” ์ฒ˜๋ฆฌ์— Web Server๋ฅผ ์‚ฌ์šฉ

 

3. ์—ฌ๋Ÿฌ ๋Œ€์˜ WAS ์—ฐ๊ฒฐ ๊ฐ€๋Šฅ

   - Load Balancing์„ ์œ„ํ•ด์„œ Web Server ์‚ฌ์šฉ

   - fail over(์žฅ์•  ๊ทน๋ณต), fail back ์ฒ˜๋ฆฌ์— ์œ ๋ฆฌ

   - ํŠนํžˆ ๋Œ€์šฉ๋Ÿ‰ ์›น ์—ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ฒฝ์šฐ(์—ฌ๋Ÿฌ ๊ฐœ์˜ ์„œ๋ฒ„ ์‚ฌ์šฉ) ์˜ˆ๋ฅผ ๋“ค์–ด, ์•ž ๋‹จ์˜ Web Server์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ WAS๋ฅผ ์ด์šฉํ•˜์ง€ ๋ชปํ•˜๋„๋ก ํ•œ ํ›„ WAS๋ฅผ ์žฌ์‹œ์ž‘ํ•จ์œผ๋กœ์จ ์‚ฌ์šฉ์ž๋Š” ์˜ค๋ฅ˜๋ฅผ ๋А๋ผ์ง€ ๋ชปํ•˜๊ณ  ์ด์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 

4. ์—ฌ๋Ÿฌ ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋น„์Šค ๊ฐ€๋Šฅ

   - ์˜ˆ๋ฅผ ๋“ค๋ฉด, ํ•˜๋‚˜์˜ ์„œ๋ฒ„์—์„œ PHP Application๊ณผ Java Application์„ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ

 

5. ๊ธฐํƒ€

   - ์ ‘๊ทผ ํ—ˆ์šฉ IP ๊ด€๋ฆฌ, 2๋Œ€ ์ด์ƒ์˜ ์„œ๋ฒ„์—์„œ์˜ ์„ธ์…˜ ๋“ฑ๋„ Web Server์—์„œ ์ฒ˜๋ฆฌํ•˜๋ฉด ํšจ์œจ์ ์ด๋‹ค.

 

 

์ฆ‰, ์ž์› ์ด์šฉ์˜ ํšจ์œจ์„ฑ ๋ฐ ์žฅ์•  ๊ทน๋ณต, ๋ฐฐํฌ ๋ฐ ์œ ์ง€๋ณด์ˆ˜์˜ ํŽธ์˜์„ฑ์„ ์œ„ํ•ด Web Server์™€ WAS๋ฅผ ๋ถ„๋ฆฌํ•œ๋‹ค.

Web Server๋ฅผ WAS ์•ž์— ๋‘๊ณ  ํ•„์š”ํ•œ WAS๋“ค์„ Web Server์— ํ”Œ๋Ÿฌ๊ทธ์ธ ํ˜•ํƒœ๋กœ ์„ค์ •ํ•˜๋ฉด ๋”์šฑ ํšจ์œจ์ ์ธ ๋ถ„์‚ฐ ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.

 

Web Service Architecture

 

 

๋‹ค์–‘ํ•œ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค.

 

1. Client -> Web Server -> DB

2. Client -> WAS -> DB

3. Client -> Web Server -> WAS -> DB

 

3๋ฒˆ ๊ตฌ์กฐ์˜ ๋™์ž‘๊ณผ์ •

 

1. Web Server๋Š” ์›น ๋ธŒ๋ผ์šฐ์ € ํด๋ผ์ด์–ธํŠธ๋กœ๋ถ€ํ„ฐ HTTP ์š”์ฒญ์„ ๋ฐ›๋Š”๋‹ค.

2. Web Server๋Š” ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ(Request)๋ฅผ WAS์— ๋ณด๋‚ธ๋‹ค.

3. WAS๋Š” ๊ด€๋ จ๋œ Servlet์„ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ฆฐ๋‹ค.

4. WAS๋Š” web.xml์„ ์ฐธ์กฐํ•˜์—ฌ ํ•ด๋‹น Servlet์— ๋Œ€ํ•œ Thread๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. (Thread Pool ์ด์šฉ)

5. HttpServletRequest์™€ HttpServletResponse ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜์—ฌ Servlet์— ์ „๋‹ฌํ•œ๋‹ค.

  • 5-1. Thread๋Š” Servlet์˜ service() ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค.
  • 5-2. service() ๋ฉ”์„œ๋“œ๋Š” ์š”์ฒญ์— ๋งž๊ฒŒ doGet() ๋˜๋Š” doPost() ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค.
  • protected doGet(HttpServletRequest request, HttpServletResponse response)

6. doGet() ๋˜๋Š” doPost() ๋ฉ”์„œ๋“œ๋Š” ์ธ์ž์— ๋งž๊ฒŒ ์ƒ์„ฑ๋œ ์ ์ ˆํ•œ ๋™์  ํŽ˜์ด์ง€๋ฅผ Response ๊ฐ์ฒด์— ๋‹ด์•„ WAS์— ์ „๋‹ฌํ•œ๋‹ค.

7. WAS๋Š” Response ๊ฐ์ฒด๋ฅผ HttpResponse ํ˜•ํƒœ๋กœ ๋ฐ”๊พธ์–ด Web Server์— ์ „๋‹ฌํ•œ๋‹ค.

8. ์ƒ์„ฑ๋œ Thread๋ฅผ ์ข…๋ฃŒํ•˜๊ณ , HttpServletRequest์™€ HttpServletResponse ๊ฐ์ฒด๋ฅผ ์ œ๊ฑฐํ•œ๋‹ค.

 

*์ฐธ๊ณ 

 

MiddleWare(๋ฏธ๋“œ์›จ์–ด)

 

Client - MiddleWare Server - DB Server(DBMS)

 

๋™์ž‘๊ณผ์ •

1. Client๋Š” ๋‹จ์ˆœํžˆ ์š”์ฒญ๋งŒ ์ค‘์•™์— ์žˆ๋Š” MiddleWare Server์—๊ฒŒ ๋ณด๋‚ธ๋‹ค.

2. MiddleWare Server์—์„œ ๋Œ€๋ถ€๋ถ„์˜ ๋กœ์ง์ด ์ˆ˜ํ–‰๋œ๋‹ค.

3. ์ด๋•Œ, ๋ฐ์ดํ„ฐ๋ฅผ ์กฐ์ž‘ํ•  ์ผ์ด ์žˆ์œผ๋ฉด DBMS์— ์š”์ฒญํ•œ๋‹ค.

4. ๋กœ์ง์˜ ๊ฒฐ๊ณผ๋ฅผ Client์—๊ฒŒ ์ „์†กํ•œ๋‹ค.

5. Client๋Š” ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ํ™”๋ฉด์— ๋ณด์—ฌ์ค€๋‹ค.

 

์ฆ‰, ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ Client์™€ DBMS ์‚ฌ์ด์˜ MiddleWare Server์—์„œ ๋™์ž‘ํ•˜๋„๋ก ํ•จ์œผ๋กœ์จ Client๋Š” ์ž…๋ ฅ๊ณผ ์ถœ๋ ฅ๋งŒ ๋‹ด๋‹นํ•˜๊ฒŒ ๋œ๋‹ค.

 

์ฐธ๊ณ 

https://gmlwjd9405.github.io/2018/10/27/webserver-vs-was.html

 

'๊ฐœ๋ฐœ ์ง€์‹, ์Šคํฌ๋ฆฝํŠธ > WAS' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

ํ†ฐ์บฃ context path --์ •๋ฆฌ์ค‘  (0) 2024.01.31

๋Œ“๊ธ€