• WS(์›น ์„œ๋ฒ„)์™€ WAS(์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„)๋ž€? ๊ฐœ๋…๊ณผ ์ฐจ์ด์  ์•Œ์•„๋ณด๊ธฐ

    2024. 5. 2.

    by. @leeeun

     

    WS์™€ WAS

     

    WS(Web Server)

    • ํด๋ผ์ด์–ธํŠธ์˜ HTTP ์š”์ฒญ์„ ๋ฐ›์•„ ์š”์ฒญ์— ๋งž๋Š” ์ •์  ์ปจํ…์ธ (ex - html, css, JavaScript, ์ด๋ฏธ์ง€, ๋น„๋””์˜ค ๋“ฑ)๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ์„œ๋ฒ„
    • ์‚ฌ์šฉ์ž๋กœ๋ถ€ํ„ฐ ๋™์ ์ธ ์š”์ฒญ์ด ๋“ค์–ด์™”์„ ๋•Œ์—๋Š” ์ž์ฒด์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์–ด๋ ค์›Œ WAS์—๊ฒŒ ์š”์ฒญํ•œ๋‹ค.
    • ex - Apache, NGINX ๋“ฑ

     

    ์ฃผ์š” ๊ธฐ๋Šฅ

    • ์ •์  ์ปจํ…์ธ  ์ œ๊ณต: ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง๊ณผ ์ƒ๊ด€์—†์ด ๋ณ€ํ•˜์ง€ ์•Š๋Š” ๊ณ ์ •๋œ ์ปจํ…์ธ ๋ฅผ ์ œ๊ณตํ•œ๋‹ค.
    • HTTP ์š”์ฒญ ์ฒ˜๋ฆฌ: ํด๋ผ์ด์–ธํŠธ์˜ HTTP ์š”์ฒญ์„ ๋ฐ›์•„ ํ•ด๋‹น ์š”์ฒญ์— ๋งž๋Š” ํŒŒ์ผ์ด๋‚˜ ๋ฆฌ์†Œ์Šค๋ฅผ ์ฐพ์•„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
    • ์ธ์ฆ๊ณผ ๋ณด์•ˆ: ์›น ์„œ๋ฒ„๋Š” ์•”ํ˜ธํ™”๋œ HTTPS ์—ฐ๊ฒฐ์„ ์ œ๊ณตํ•˜์—ฌ ๋ณด์•ˆ์„ ๊ฐ•ํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ฐ„๋‹จํ•œ ์ธ์ฆ ๋ฐฉ๋ฒ•์„ ํ†ตํ•ด ํด๋ผ์ด์–ธํŠธ์˜ ์ ‘๊ทผ์„ ์ œ์–ดํ•  ์ˆ˜๋„ ์žˆ๋‹ค.
    • ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ: ์›น ์„œ๋ฒ„๋Š” ์—ฌ๋Ÿฌ ๋Œ€์˜ ์„œ๋ฒ„๋กœ ๋ถ„์‚ฐ๋œ ํŠธ๋ž˜ํ”ฝ์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์„ฑ๋Šฅ๊ณผ ๊ฐ€์šฉ์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.
    • Reverse Proxy: ์›น ์„œ๋ฒ„๋Š” ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ๋กœ ๋™์ž‘ํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์„ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„๋กœ ์ „๋‹ฌํ•˜๋Š” ์—ญํ• ์„ ํ•  ์ˆ˜๋„ ์žˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์›น ์„œ๋ฒ„์™€ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„๋ฅผ ๋ถ„๋ฆฌํ•˜์—ฌ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ณด์•ˆ๊ณผ ์„ฑ๋Šฅ์„ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.

     

     

    WAS(Web Application Server)

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

    ex - Tomcat, Jeus, IBM WebSphere, Red Hat JBoss ๋“ฑ๋“ฑ

     

    ์™ผ) WS, ์˜ค) WAS์˜ ์ข…๋ฅ˜

    ์ฃผ์š” ๊ธฐ๋Šฅ

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

     

     

    Web Server์™€ WAS์˜ ๋ถ„๋ฆฌ

    • WS์˜ ๊ธฐ๋Šฅ์€ WAS๋กœ๋„ ์ „๋ถ€ ๊ฐ€๋Šฅํ•˜๋‹ค.
    • ๊ทธ๋Ÿฌ๋‚˜ WAS๊ฐ€ ์ •์  ์ฝ˜ํ…์ธ  ์š”์ฒญ๊นŒ์ง€ ์ฒ˜๋ฆฌํ•œ๋‹ค๋ฉด ๋™์  ์ปจํ…์ธ  ์ฒ˜๋ฆฌ๊ฐ€ ์ง€์—ฐ๋˜๋ฉด์„œ ์†๋„๊ฐ€ ๋Š๋ ค์งˆ ์ˆ˜ ์žˆ๋‹ค.

    • ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด WAS๋Š” DB ์กฐํšŒ ๋ฐ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์ฒ˜๋ฆฌํ•˜๊ฒŒ ํ•˜๊ณ , ์ •์  ์ฝ˜ํ…์ธ ๋Š” WS์—๊ฒŒ ๋งก๊ฒจ์„œ ๊ธฐ๋Šฅ์„ ๋ถ„๋ฆฌํ•ด ์„œ๋ฒ„ ๋ถ€ํ•˜๋ฅผ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค.

    • SSL์— ๋Œ€ํ•œ ์•”ํ˜ธํ™”, ๋ณตํ˜ธํ™” ์ฒ˜๋ฆฌ์— ์›น ์„œ๋ฒ„๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋ณด์•ˆ์„ ๊ฐ•ํ™”ํ•  ์ˆ˜๋„ ์žˆ๋‹ค.
    • ์„œ๋น„์Šค ๊ทœ๋ชจ๊ฐ€ ์ปค์งˆ์ˆ˜๋ก ์›น ์„œ๋ฒ„์™€ ์›น์•ฑ ์„œ๋ฒ„๋ฅผ ๋ถ„๋ฆฌํ•˜์—ฌ ์ž์› ์ด์šฉ์˜ ํšจ์œจ์„ฑ, ๋ฐฐํฌ ๋ฐ ์œ ์ง€ ๋ณด์ˆ˜ ํŽธ์˜์„ฑ์„ ์ทจํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ์—ฌ๋Ÿฌ ๋Œ€์˜ WAS๋ฅผ ์—ฐ๊ฒฐํ•  ๋•Œ ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ (๋ถ€ํ•˜ ๋ถ„์‚ฐ)์„ ์œ„ํ•ด์„œ๋„ ์›น ์„œ๋ฒ„๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
      • ex - WS๋ฅผ ์•ž์— ๋‘๊ณ  WAS๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ WS๊ฐ€ WAS๋ฅผ ์ด์šฉํ•˜์ง€ ๋ชปํ•˜๊ฒŒ ํ•œ ํ›„ WAS๋ฅผ ์žฌ์‹œ์ž‘ํ•˜์—ฌ ์‚ฌ์šฉ์ž๊ฐ€ ์˜ค๋ฅ˜๋ฅผ ๋Š๋ผ์ง€ ๋ชปํ•˜๊ณ  ์ด์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค.
    • ์ ‘๊ทผ ํ—ˆ์šฉ IP ๊ด€๋ฆฌ, ์—ฌ๋Ÿฌ ์„œ๋ฒ„์—์„œ์˜ ์„ธ์…˜ ๊ด€๋ฆฌ ๋“ฑ๋„ WS์—์„œ ์ฒ˜๋ฆฌํ•˜๋ฉด ํšจ์œจ์ ์ด๋‹ค.

     

     

    WS & WAS๋ฅผ ํ™œ์šฉํ•œ ์›น ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜

    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 ๊ฐ์ฒด๋ฅผ ์ œ๊ฑฐํ•œ๋‹ค.

     

     

     

    WAS-WS? ์›น ์ปจํ…Œ์ด๋„ˆ?

    • ์„œ๋ธ”๋ฆฟ: ์›น ํŽ˜์ด์ง€๋ฅผ ๋™์ ์œผ๋กœ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ์„œ๋ฒ„์ธก ํ”„๋กœ๊ทธ๋žจ. WAS์œ„์—์„œ ์ปดํŒŒ์ผ ๋˜๊ณ  ๋™์ž‘
    • JSP: ์„œ๋ธ”๋ฆฟ๊ณผ ํ•˜๋Š”์ผ์€ ๋™์ผํ•˜์ง€๋งŒ JSP๋Š” html์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ ๊ฐ„ํŽธ(html์•ˆ์— ์ž๋ฐ” ์ฝ”๋“œ ์‚ฝ์ž…) ์ •ํ™•ํžˆ๋Š” ์ž๋ฐ” ์–ธ์–ด ๊ธฐ๋ฐ˜์˜ ์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด..!
    • ์›น ์„œ๋ฒ„(WS)๋Š” ์ •์ ์ธ ํŽ˜์ด์ง€๋งŒ์„ ์ œ๊ณต → ๋™์ ์ธ ํŽ˜์ด์ง€ ์ œ๊ณต์„ ์œ„ํ•ด ์›น ์„œ๋ฒ„๋Š” ๋‹ค๋ฅธ ๊ณณ์— ๋„์›€์„ ์š”์ฒญ → ์›น ์„œ๋ฒ„๊ฐ€ ๋™์  ํŽ˜์ด์ง€๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์„œ๋ธ”๋ฆฟ, ๋™์ ์ธ ํŽ˜์ด์ง€๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์ด CGI(๊ตํ™˜ ๋ฐฉ์‹)
    • ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ: ์„œ๋ธ”๋ฆฟ์„ ๋งŒ๋“ ๋‹ค๊ณ  ์Šค์Šค๋กœ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ์ด x ์„œ๋ธ”๋ฆฟ์„ ์ƒ์„ฑ, ์†Œ๋ฉธ, ๊ด€๋ฆฌํ•ด์ฃผ๋Š” ์—ญํ• ์ด ํ•„์š”. ๊ทธ ์—ญํ• ์ด ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ(์„œ๋ธ”๋ฆฟ๊ณผ ์›น ์„œ๋ฒ„๊ฐ„์˜ ํ†ต์‹  ์ง€์› ๋“ฑ)
    • WS๋Š” ์›น ์„œ๋ฒ„์™€ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋”ฐ๋กœ์ด๊ณ  ๋™์  ํŽ˜์ด์ง€ ์ƒ์„ฑ์„ ์œ„ํ•ด์„œ๋Š” ์ปจํ…Œ์ด๋„ˆํ•œํ…Œ ๋„˜๊ฒจ์ค˜์•ผ๋˜์ง€๋งŒ, WAS๋Š” ์›น ์„œ๋ฒ„์™€ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋ถ™์—ฌ๋†“์€ ๊ฒƒ!!

    ๋Œ“๊ธ€