Skip to content

Latest commit

ย 

History

History
148 lines (95 loc) ยท 7.22 KB

WebserverWAS.md

File metadata and controls

148 lines (95 loc) ยท 7.22 KB

์›น ์„œ๋ฒ„์™€ WAS

์›น ์„œ๋ฒ„

์ •์˜

ํด๋ผ์ด์–ธํŠธ(eg.์›น ๋ธŒ๋ผ์šฐ์ €)๋กœ๋ถ€ํ„ฐ HTTP ์š”์ฒญ์„ ๋ฐ›์•„๋“ค์ด๊ณ  ์›น ํŽ˜์ด์ง€(HTML ๋ฌธ์„œ)๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ์ปดํ“จํ„ฐ ํ”„๋กœ๊ทธ๋žจ
๋Œ€ํ‘œ์ ์œผ๋กœ Nginx, Appach HTTP Server, IIS๊ฐ€ ์žˆ๋‹ค.

์—ญํ• 

  • ํด๋ผ์ด์–ธํŠธ์˜ HTTP ํ†ต์‹ ์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ๋ฅผ ๋‹ด๋‹นํ•˜๋Š” ์„œ๋ฒ„

  • GET๊ณผ ๊ฐ™์€ HTTP request๊ฐ€ ๋“ค์–ด์˜ค๋ฉด ์ด์— ๋Œ€์‘ํ•˜๋Š” ์ •๋ณด๋ฅผ ๋ฐ˜ํ™˜
    • eg. ์‚ฌ์šฉ์ž๊ฐ€ ํŠน์ • ์›นํŽ˜์ด์ง€์— ์ ‘์†ํ•˜๋ฉด ์›น์„œ๋ฒ„๊ฐ€ ํ•ด๋‹น ์›นํŽ˜์ด์ง€์˜ HTML์„ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ „๋‹ฌ
    • ์ด ๋–„ ์›น์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ์™€ ์—ฌ๋Ÿฌ connection์„ ๋งŒ๋“ค์–ด ์—ฌ๋Ÿฌ ์ •๋ณด(HTML ํ…œํ”Œ๋ฆฟ, ์ด๋ฏธ์ง€, ๊ธฐํƒ€ ๋ฐ์ดํ„ฐ)๋“ค์„ ๋ณ‘๋ ฌ์ ์œผ๋กœ ์ „์†ก

  • POST, PUT ๋“ฑ๊ณผ ๊ฐ™์€ HTTP request๊ฐ€ ๋“ค์–ด์˜ค๋ฉด ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์—๊ฒŒ ์–ด๋–ค ์ •๋ณด๋ฅผ ์ „๋‹ฌํ•˜๊ฒŒ ๋˜๊ณ , ์›น์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ๋กœ๋ถ€ํ„ฐ ์ปจํ…์ธ ๋ฅผ ์ „๋‹ฌ๋ฐ›๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.

์ •์  ์ปจํ…์ธ  vs ๋™์  ์ปจํ…์ธ 

์ •์  ์ปจํ…์ธ 

๋ชจ๋“  ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋™์ผํ•œ ์›นํŽ˜์ด์ง€๋ฅผ ๋ณด์—ฌ์ง€๊ฒŒ ํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธ

๋™์  ์ปจํ…์ธ 

์‚ฌ์šฉ์ž์— ๋”ฐ๋ผ ์›นํŽ˜์ด์ง€๊ฐ€ ๋‹ฌ๋ฆฌ ๊ตฌ์„ฑ๋˜๋Š” ๊ฒƒ์„ ์˜๋ฏธ

๋™์  ์ปจํ…์ธ ๋Š” ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌ๋˜๋Š”๊ฐ€

์›น ์„œ๋ฒ„๊ฐ€ ์‚ฌ์šฉ์ž์˜ ์ •๋ณด์— ๋”ฐ๋ผ HTML์„ ๊ตฌ์„ฑํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์‚ฌ์šฉ์ž์— ๋”ฐ๋ผ ํŠน์ • ์ •๋ณด๋ฅผ DB์—์„œ ๋ถˆ๋Ÿฌ์™€ ๋‚ด๋ถ€ ๋กœ์ง์„ ํ†ตํ•ด ์ •๋ณด๋ฅผ ์ฒ˜๋ฆฌํ•ด์„œ HTML์— ๋„ฃ์–ด์ค˜์•ผ ํ•  ๊ฒƒ์ด๋‹ค.

ํ•˜์ง€๋งŒ ๊ธฐ๋Šฅ์— ๋”ฐ๋ผ ์—ฌ๋Ÿฌ DB์— ๋”ฐ๋ผ ๋‹ค๋ฅด๊ฒŒ ์งˆ์˜๋ฅผ ํ•˜๊ณ  ๋‹ค๋ฅด๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€๊ณตํ•ด์„œ ์ „๋‹ฌํ•ด์•ผ ํ•œ๋‹ค.

์ฆ‰ ์›น ์„œ๋ฒ„ ์•ˆ์—๋Š” ๋™์  ๋ฐ์ดํ„ฐ ์ƒ์„ฑ์„ ํ•˜๊ธฐ ์œ„ํ•œ ๋ถ€๋ถ„๊ณผ client ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๊ณ  ์ด์— ๋Œ€ํ•œ ์‘๋‹ต์„ ํ•˜๋Š” ๋ถ€๋ถ„์ด ๊ณต์กดํ•˜๊ฒŒ ๋˜๊ณ , ์„œ๋ฒ„์˜ ๋ถ€ํ•˜๊ฐ€ ์ปค์ง€๊ฒŒ ๋œ๋‹ค.

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

์›น ์„œ๋ฒ„

  1. HTTP ํ”„๋กœํ† ์ฝœ์„ ํ†ตํ•œ ์ •์ ์ธ ์ฝ˜ํ…์ธ  ์ œ๊ณต
  2. ๋™์ ์ธ ์š”์ฒญ์ด ๋“ค์–ด์™”์„ ๋•Œ, ํ•ด๋‹น ์š”์ฒญ์„ ์›น ์„œ๋ฒ„์—์„œ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ปจํ…Œ์ด๋„ˆ(Container)๋กœ ๋ณด๋‚ด์ฃผ๋Š” ์—ญํ• 

์ปจํ…Œ์ด๋„ˆ(Container)

  • ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ์ด ๋“ค์–ด์˜ค๋ฉด ์›น ์„œ๋ฒ„๋Š” ์ •์ ์ธ ์š”์†Œ๋งŒ ํด๋ผ์ด์–ธํŠธ ์ธก์— ๋ณด๋‚ผ ์ˆ˜ ์žˆ๊ณ , ๋™์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋Š” ๋ถ€๋ถ„์€ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์—†๋‹ค.
  • ์ปจํ…Œ์ด๋„ˆ๋Š” ์ด๋Ÿฐ ๋ถ€๋ถ„์„ ๋Œ€์‹  ์ฒ˜๋ฆฌํ•ด์„œ ์›น ์„œ๋ฒ„์— ์ •์ ์ธ ํŒŒ์ผ๋กœ ๋งŒ๋“ค์–ด์„œ ๋ณด๋‚ด์ฃผ๋Š” ์†Œํ”„ํŠธ์›จ์–ด ๋ชจ๋“ˆ
    eg. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์กฐํšŒ, ๋กœ์ง ์ฒ˜๋ฆฌ ๋“ฑ
  • ํด๋ผ์ด์–ธํŠธ ์ธก์—์„œ ์–ด๋– ํ•œ ์š”์ฒญ์„ ๋ณด๋‚ด๋ฉด, ํ•ด๋‹น ํŒŒ์ผ์—์„œ ์ฒ˜๋ฆฌํ•ด์•ผํ•  ๋ถ€๋ถ„์„ ์ฒ˜๋ฆฌํ•˜๊ณ  ์ •์  ํŒŒ์ผ๋กœ ๋งŒ๋“  ํ›„์— ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋ณด๋ƒˆ๋‹ค๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.
  • jsp, servlet์„ ์‹คํ–‰์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” ์†Œํ”„ํŠธ์›จ์–ด
  • ์ž๋ฐ” ๊ณ„์—ด์—์„  ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปจํ…Œ์ด๋„ˆ(์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋ฐฐํฌ๋˜๋Š” ๊ณต๊ฐ„)๋ผ ๋ถ€๋ฅธ๋‹ค.

WAS(Web Applciation Server)

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

  • ์›น ์„œ๋ฒ„: Apache HTTP Server, nginx, IIS
  • WAS(Application Server): Apache Tomcat, Jeus

ํ”„๋กœ์„ธ์Šค: WAS๊ฐ€ ์›น ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ์ฒ˜๋ฆฌ ์š”์ฒญ์„ ๋ฐ›์œผ๋ฉด, ํ”„๋กœ๊ทธ๋žจ์˜ ์‹คํ–‰๊ฒฐ๊ณผ๋ฅผ ์›น ์„œ๋ฒ„์— ์ „๋‹ฌ โžก๏ธ ์›น ์„œ๋ฒ„๋Š” ํ•ด๋‹น ๊ฒฐ๊ณผ๋ฅผ ์›น ํด๋ผ์ด์–ธํŠธ์— ์ „์†ก

Client - ์›น ์„œ๋ฒ„ - WAS ์˜ ๊ตฌ์กฐ




CGI

๊ณต์šฉ ๊ฒŒ์ดํŠธ์›จ์ด ์ธํ„ฐํŽ˜์ด์Šค์˜ ์•ฝ์ž๋กœ ์›น ์„œ๋ฒ„๋“ค ๊ฐ„์˜ ์ •๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š” ์ผ์ข…์˜ ๊ทœ์น™

  • ์›น ์„œ๋ฒ„๋„ ์ข…๋ฅ˜๊ฐ€ ์—ฌ๋Ÿฌ๊ฐ€์ง€์ด๊ณ , ํ”„๋กœ๊ทธ๋žจ ์—ญ์‹œ ๋‹ค์–‘ํ•˜๊ฒŒ ์กด์žฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋กœ ์ž…์ถœ๋ ฅ์„ ์ฃผ๊ณ  ๋ฐ›์„ ํ‘œ์ค€์ด ํ•„์š”ํ•˜๋‹ค.
  • WAS๋Š” CGI ๊ทœ๊ฒฉ์— ๋งž๊ฒŒ ์„ค๊ณ„๋œ ์„œ๋ฒ„๋ผ๊ณ  ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๋‹ค.

์‹ค์ œ CGI๋ฅผ ํ†ตํ•ด ๋™์ ์ธ ์ฝ˜ํ…์ธ ๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ์„ ๊ฐ„๋‹จํ•˜๊ฒŒ ์‚ดํŽด๋ณด์ž

  • ์„œ๋ฒ„์˜ cgi-bin์ด๋ผ๋Š” ํด๋”๋ฅผ ๋งŒ๋“ค์–ด๋†“๊ณ , ๊ทธ ๋‚ด๋ถ€์˜ ์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด๋†“๋Š”๋‹ค.

  • ์›น ์„œ๋ฒ„๊ฐ€ CGI๋ฅผ ํ†ตํ•ด cgi bin์— ์ ‘์†ํ•ด์„œ ๊ทธ ๋‚ด๋ถ€์˜ ํŒŒ์ผ์„ ์‹คํ–‰์‹œํ‚ค๊ณ , ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ํด๋ผ์ด์–ธํŠธ์— ๋ณด๋‚ธ๋‹ค.

  • CGI๋ฅผ ๊ตฌ๋™ํ•˜๋Š” ๋Œ€ํ‘œ์ ์ธ ๋ฐฉ๋ฒ•์€ Apache HTTPd


์•„ํŒŒ์น˜์™€ ํ†ฐ์บฃ

์•„ํŒŒ์น˜

์›”๋“œ์™€์ด๋“œ ์›น ์„œ๋ฒ„์šฉ ์†Œํ”„ํŠธ์›จ์–ด. ์ด๋ฅผ ํ†ตํ•ด ์›น์„ ๊ตฌ์ถ•ํ•˜๋ ค ํ•  ๋•Œ ์‰ฝ๊ฒŒ ์›น ์„œ๋ฒ„๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

ํ†ฐ์บฃ

์•„ํŒŒ์น˜๋ฅผ ๋งŒ๋“  ์•„ํŒŒ์น˜ ์†Œํ”„ํŠธ์›จ์–ด ์žฌ๋‹จ์—์„œ ๋งŒ๋“  WAS ์ด๋‹ค.

์•„ํŒŒ์น˜์™€ ํ†ฐ์บฃ์˜ ์ฐจ์ด์ 

CGI ๊ทœ๊ฒฉ์„ ๋งž์ถœ ์ˆ˜ ์žˆ๋Š” ์–ธ์–ด๋Š” PHP, Perl, Python ๋“ฑ์ด ์žˆ๊ณ  Java๋Š” CGI ๊ทœ๊ฒฉ์„ ๋ฐ”๋กœ ๋งž์ถœ ์ˆ˜ ์—†๋‹ค.
๊ทธ๋Ÿฌ๋‚˜ ๋งŽ์€ ์„œ๋ฒ„๋“ค์ด Java๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๊ณ , Java ๋˜ํ•œ ์ด๋Ÿฌํ•œ CGI ๊ทœ๊ฒฉ์„ ๋งž์ถ”๊ธฐ ์œ„ํ•œ ๊ธฐ์ˆ ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”๋ฐ ์ด๊ฐ€ ๋ฐ”๋กœ ์„œ๋ธ”๋ฆฟ ์ด๋‹ค.

  • ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ(Servlet Container)๋Š” ์„œ๋ธ”๋ฆฟ์„ ๊ด€๋ฆฌํ•ด์ฃผ๋Š” ์ปจํ…Œ์ด๋„ˆ

  • ์‚ฌ์šฉ์ž๊ฐ€ URL์„ ์ž…๋ ฅํ•˜๋ฉด HTTP request๊ฐ€ Servlet Container๋กœ ์ „์†กํ•œ๋‹ค.

  • ์š”์ฒญ์„ ์ „์†ก๋ฐ›์€ Servlet Container๋Š” HttpServletRequest, HttpServletResponse ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

  • web.xml์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์‚ฌ์šฉ์ž๊ฐ€ ์š”์ฒญํ•œ URL์ด ์–ด๋Š ์„œ๋ธ”๋ฆฟ์— ๋Œ€ํ•œ ์š”์ฒญ์ธ์ง€ ์ฐพ๋Š”๋‹ค.

  • ํ•ด๋‹น ์„œ๋ธ”๋ฆฟ์—์„œ service ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•œ ํ›„ ํด๋ผ์ด์–ธํŠธ์˜ GET, POST ์—ฌ๋ถ€์— ๋”ฐ๋ผ doGet() ๋˜๋Š” doPost()๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค.

  • doGet() or doPost() ๋ฉ”์†Œ๋“œ๋Š” ๋™์  ํŽ˜์ด์ง€๋ฅผ ์ƒ์„ฑํ•œ ํ›„ HttpServletResponse ๊ฐ์ฒด์— ์‘๋‹ต์„ ๋ณด๋‚ธ๋‹ค.

  • ์‘๋‹ต์ด ๋๋‚˜๋ฉด HttpServletRequest, HttpServletResponse ๋‘ ๊ฐ์ฒด๋ฅผ ์†Œ๋ฉธ์‹œํ‚จ๋‹ค.

์„œ๋ธ”๋ฆฟ์€ ์™œ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ํ•„์š”ํ• ๊นŒ

์„œ๋ธ”๋ฆฟ์€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋™์  ์ปจํ…์ธ ๋ฅผ ์ƒ์„ฑํ•  ๋•Œ๋งˆ๋‹ค ์ƒ๊ธฐ๊ฒŒ ๋œ๋‹ค.
์ฆ‰ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋งŽ์•„์งˆ์ˆ˜๋ก ์ˆ˜๋งŽ์€ ์„œ๋ธ”๋ฆฟ์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์€ ์–ด๋ ต๊ธฐ ๋–„๋ฌธ์—, ์ด๋Ÿฌํ•œ ์„œ๋ธ”๋ฆฟ์„ ๊ด€๋ฆฌํ•ด์ฃผ๋Š” ๋ถ€๋ถ„์„ ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ๋ผ๊ณ  ํ•œ๋‹ค.

์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ์˜ ํŠน์ง•

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

[ref]
https://me-analyzingdata.tistory.com/entry/%EC%9B%B9-%EC%84%9C%EB%B2%84%EC%99%80-WAS
https://velog.io/@seanlion/cgi
https://melonicedlatte.com/web/2019/06/23/210300.html
https://www.youtube.com/watch?v=NyhbNtOq0Bc