๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“ŒCS/Web

[Web] Web Server ์™€ WAS์˜ ์ฐจ์ด

by dar0m! 2021. 8. 4.

Web Server

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

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

  1. ์ •์ ์ธ ์ฝ˜ํ…์ธ  ์ œ๊ณต : WAS๋ฅผ ๊ฑฐ์น˜์ง€ ์•Š๊ณ  ๋ฐ”๋กœ ์ž์› ์ œ๊ณต
  2. ๋™์ ์ธ ์ปจํ…์ธ  ์ œ๊ณต์„ ์œ„ํ•œ ์š”์ฒญ ์ „๋‹ฌ : ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ์„ WAS์— ๋ณด๋‚ด๊ณ , WAS๊ฐ€ ์ฒ˜๋ฆฌํ•œ ๊ฒฐ๊ณผ๋ฅผ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ „๋‹ฌ(์‘๋‹ต)ํ•œ๋‹ค.
    • ํด๋ผ์ด์–ธํŠธ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์›น ๋ธŒ๋ผ์šฐ์ €

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

์—”์ง„์—‘์Šค๋Š” ์•„ํŒŒ์น˜์˜ ๋‹จ์ ์„ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด ๋งŒ๋“  ํ”„๋กœ๊ทธ๋žจ.
์•„ํŒŒ์น˜๋Š” C10K Problem์ด๋ผ๊ณ  ํ•ด์„œ ํ•˜๋‚˜์˜ ์›น์„œ๋ฒ„์— 10,000๊ฐœ์˜ ํด๋ผ์ด์–ธํŠธ ์ ‘์†์„ ์ปค๋ฒ„ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ€๋ฒผ์›€๊ณผ ๋†’์€ ์„ฑ๋Šฅ์„ ์ถ”๊ตฌํ•˜๋ฉฐ ๋งŒ๋“ค์–ด์กŒ์Šต๋‹ˆ๋‹ค.

์•„ํŒŒ์น˜์™€์˜ ์ฐจ์ด์ ์€
์•„ํŒŒ์น˜๋Š” ์“ฐ๋ ˆ๋“œ/ํ”„๋กœ์„ธ์Šค ๊ธฐ๋ฐ˜ ๊ตฌ์กฐ(MPM : Multi-Process Module)์ด๋ฉฐ, ๊ฐ ์š”์ฒญ๋‹น ์“ฐ๋ ˆ๋“œ ํ•˜๋‚˜๊ฐ€ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ํ•œ๋ช…์˜ ํด๋ผ์ด์–ธํŠธ ๋‹น ํ•˜๋‚˜์˜ ์“ฐ๋ ˆ๋“œ๊ฐ€ ํ• ๋‹น ๋˜๋ฏ€๋กœ ์‚ฌ์šฉ์ž๊ฐ€ ๋งŽ์•„์ง€๋ฉด ์‹œ์Šคํ…œ ์ž์› ๋‚ญ๋น„๊ฐ€ ์‹ฌํ•ด์ง„๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
๋ฐ˜๋ฉด ์—”์ง„์—‘์Šค๋Š” ๋น„๋™๊ธฐ ๊ธฐ๋ฐ˜ ๊ตฌ์กฐ(Event-Driven ๋ฐฉ์‹)๋ผ ๋” ์ ์€ ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

Web Server๋งŒ ์กด์žฌํ•œ๋‹ค๋ฉด?

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

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

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

 

WAS(Web Application Server)

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

WAS = Web Server + Web Container

  • HTTP๋ฅผ ํ†ตํ•ด ์ปดํ“จํ„ฐ๋‚˜ ์žฅ์น˜์— ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ˆ˜ํ–‰ํ•ด์ฃผ๋Š” ๋ฏธ๋“ค์›จ์–ด(์†Œํ”„ํŠธ์›จ์–ด ์—”์ง„).
  • “์›น ์ปจํ…Œ์ด๋„ˆ(Web Container)” ํ˜น์€ “์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ(Servlet Container)”๋ผ๊ณ ๋„ ๋ถˆ๋ฆฐ๋‹ค.
    • Container๋ž€ JSP, Servlet์„ ์‹คํ–‰์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๋งํ•œ๋‹ค.
    • ์ฆ‰, WAS๋Š” JSP, Servlet ๊ตฌ๋™ ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•œ๋‹ค.
  • Web Server ๊ธฐ๋Šฅ๋“ค์„ ๊ตฌ์กฐ์ ์œผ๋กœ ๋ถ„๋ฆฌํ•˜์—ฌ ์ฒ˜๋ฆฌํ•˜๊ณ ์žํ•˜๋Š” ๋ชฉ์ ์œผ๋กœ ์ œ์‹œ
    • ๋ถ„์‚ฐ ํŠธ๋žœ์žญ์…˜, ๋ณด์•ˆ, ๋ฉ”์‹œ์ง•, ์“ฐ๋ ˆ๋“œ ์ฒ˜๋ฆฌ ๋“ฑ์˜ ๊ธฐ๋Šฅ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ถ„์‚ฐ ํ™˜๊ฒฝ์—์„œ ์‚ฌ์šฉ๋œ๋‹ค.
    • ์ฃผ๋กœ DB ์„œ๋ฒ„์™€ ๊ฐ™์ด ์ˆ˜ํ–‰๋œ๋‹ค.
  1. ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ํ™˜๊ฒฝ๊ณผ DB ์ ‘์† ๊ธฐ๋Šฅ ์ œ๊ณต
  2. ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํŠธ๋žœ์žญ์…˜(๋…ผ๋ฆฌ์ ์ธ ์ž‘์—… ๋‹จ์œ„) ๊ด€๋ฆฌ ๊ธฐ๋Šฅ
  3. ์—…๋ฌด๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ์ˆ˜ํ–‰

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

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

 

๊ตฌ๋ถ„ํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ 

  1. ๊ธฐ๋Šฅ์„ ๋ถ„๋ฆฌํ•˜์—ฌ ์„œ๋ฒ„ ๋ถ€ํ•˜ ๋ฐฉ์ง€
    • WAS๋Š” DB ์กฐํšŒ๋‚˜ ๋‹ค์–‘ํ•œ ๋กœ์ง์„ ์ฒ˜๋ฆฌํ•˜๋Š๋ผ ๋ฐ”์˜๊ธฐ ๋•Œ๋ฌธ์— ๋‹จ์ˆœํ•œ ์ •์  ์ปจํ…์ธ ๋Š” Web Server์—์„œ ๋น ๋ฅด๊ฒŒ ํด๋ผ์ด์–ธํŠธ์— ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.
    • WAS๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋™์  ์ปจํ…์ธ ๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด ์กด์žฌํ•˜๋Š” ์„œ๋ฒ„์ด๋‹ค.
    • ๋งŒ์•ฝ ์ •์  ์ปจํ…์ธ  ์š”์ฒญ๊นŒ์ง€ WAS๊ฐ€ ์ฒ˜๋ฆฌํ•œ๋‹ค๋ฉด ์ •์  ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๋กœ ์ธํ•ด ๋ถ€ํ•˜๊ฐ€ ์ปค์ง€๊ฒŒ ๋˜๊ณ , ๋™์  ์ปจํ…์ธ ์˜ ์ฒ˜๋ฆฌ๊ฐ€ ์ง€์—ฐ๋จ์— ๋”ฐ๋ผ ์ˆ˜ํ–‰ ์†๋„๊ฐ€ ๋Š๋ ค์ง„๋‹ค.
    • ์ฆ‰, ์ด๋กœ ์ธํ•ด ํŽ˜์ด์ง€ ๋…ธ์ถœ ์‹œ๊ฐ„์ด ๋Š˜์–ด๋‚˜๊ฒŒ ๋  ๊ฒƒ์ด๋‹ค.
  2. ๋ฌผ๋ฆฌ์ ์œผ๋กœ ๋ถ„๋ฆฌํ•˜์—ฌ ๋ณด์•ˆ ๊ฐ•ํ™”
    • SSL์— ๋Œ€ํ•œ ์•”๋ณตํ˜ธํ™” ์ฒ˜๋ฆฌ์— Web Server๋ฅผ ์‚ฌ์šฉ
  3. ์—ฌ๋Ÿฌ ๋Œ€์˜ WAS๋ฅผ ์—ฐ๊ฒฐ ๊ฐ€๋Šฅ
    • Load Balancing์„ ์œ„ํ•ด์„œ Web Server๋ฅผ ์‚ฌ์šฉ
    • fail over(์žฅ์•  ๊ทน๋ณต), fail back ์ฒ˜๋ฆฌ์— ์œ ๋ฆฌ
    • ํŠนํžˆ ๋Œ€์šฉ๋Ÿ‰ ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ฒฝ์šฐ(์—ฌ๋Ÿฌ ๊ฐœ์˜ ์„œ๋ฒ„ ์‚ฌ์šฉ) Web Server์™€ WAS๋ฅผ ๋ถ„๋ฆฌํ•˜์—ฌ ๋ฌด์ค‘๋‹จ ์šด์˜์„ ์œ„ํ•œ ์žฅ์•  ๊ทน๋ณต์— ์‰ฝ๊ฒŒ ๋Œ€์‘ํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ์˜ˆ๋ฅผ ๋“ค์–ด, ์•ž ๋‹จ์˜ Web Server์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ WAS๋ฅผ ์ด์šฉํ•˜์ง€ ๋ชปํ•˜๋„๋ก ํ•œ ํ›„ WAS๋ฅผ ์žฌ์‹œ์ž‘ํ•จ์œผ๋กœ์จ ์‚ฌ์šฉ์ž๋Š” ์˜ค๋ฅ˜๋ฅผ ๋Š๋ผ์ง€ ๋ชปํ•˜๊ณ  ์ด์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  4. ์—ฌ๋Ÿฌ ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋น„์Šค ๊ฐ€๋Šฅ
    • ์˜ˆ๋ฅผ ๋“ค์–ด, ํ•˜๋‚˜์˜ ์„œ๋ฒ„์—์„œ PHP Application๊ณผ Java Application์„ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ
  5. ๊ธฐํƒ€
    • ์ ‘๊ทผ ํ—ˆ์šฉ IP ๊ด€๋ฆฌ, 2๋Œ€ ์ด์ƒ์˜ ์„œ๋ฒ„์—์„œ์˜ ์„ธ์…˜ ๊ด€๋ฆฌ ๋“ฑ๋„ Web Server์—์„œ ์ฒ˜๋ฆฌํ•˜๋ฉด ํšจ์œจ์ ์ด๋‹ค.

 

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


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

 

์ฐธ๊ณ 

๋Œ“๊ธ€