๊ด€๋ฆฌ ๋ฉ”๋‰ด

๋ฆฌ์ œ

Web Server 1: Servlet ๊ธฐ์ดˆ์™€ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ตฌ์กฐ ๋ณธ๋ฌธ

๊ฐœ๋ฐœ์ž ํ˜ธ์†Œ์ธ/Server

Web Server 1: Servlet ๊ธฐ์ดˆ์™€ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ตฌ์กฐ

๋ฆฌ์ œ๐Ÿซง 2026. 7. 10. 12:21

1๏ธโƒฃ ์›น ์„œ๋ฒ„(Web Server)์™€ WAS์˜ ์ฐจ์ด

 
 

์›น ์„œ๋ฒ„(Web Server)

  • ํด๋ผ์ด์–ธํŠธ(๋ธŒ๋ผ์šฐ์ €)์˜ ์š”์ฒญ์„ ๋ฐ›์•„ ์ •์ ์ธ ์ž์›(HTML, CSS, JS, ์ด๋ฏธ์ง€)์„ ์‘๋‹ตํ•ด์ฃผ๋Š” ์„œ๋ฒ„
  • ๋Œ€ํ‘œ: Apache, Nginx

 

 


๐Ÿ“Œ WAS

WAS(Web Application Server)

  • ์ •์  ์ž์›๋ฟ ์•„๋‹ˆ๋ผ ๋™์ ์ธ ์ฒ˜๋ฆฌ(DB ์กฐํšŒ, ๋กœ์ง ์‹คํ–‰ ํ›„ ๊ฒฐ๊ณผ ์ƒ์„ฑ)๊ฐ€ ๊ฐ€๋Šฅํ•œ ์„œ๋ฒ„
  • ๋‚ด๋ถ€์— ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์„œ Servlet, JSP ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Œ
  • ๋Œ€ํ‘œ: Tomcat, JBoss, WebLogic
๋ธŒ๋ผ์šฐ์ €

     โ”‚
     โ–ผ

WAS
(Tomcat)

     โ”‚
     โ–ผ

Servlet ์‹คํ–‰

     โ”‚
     โ–ผ

DB ์กฐํšŒ

     โ”‚
     โ–ผ

๊ฒฐ๊ณผ ์ƒ์„ฑ

     โ”‚
     โ–ผ

๋ธŒ๋ผ์šฐ์ € ์‘๋‹ต
 

โœ” ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•ด์„œ ์ƒˆ๋กœ์šด ๊ฒฐ๊ณผ๋ฅผ ๋งŒ๋“ ๋‹ค.

์˜ˆ)

๋กœ๊ทธ์ธ

ํšŒ์›๊ฐ€์ž…

๊ฒŒ์‹œ๊ธ€ ์กฐํšŒ

์ƒํ’ˆ๊ฒ€์ƒ‰
 

2๏ธโƒฃ ์™œ Servlet์ด ํ•„์š”ํ•œ๊ฐ€?

 
 

๋ธŒ๋ผ์šฐ์ €์—์„œ

๋กœ๊ทธ์ธ ๋ฒ„ํŠผ ํด๋ฆญ
 

๋ธŒ๋ผ์šฐ์ €

↓

Tomcat(WAS)

↓

Servlet

↓

DB ์กฐํšŒ

↓

Servlet

↓

Tomcat

↓

๋ธŒ๋ผ์šฐ์ €
 

Servlet์ด ์ค‘๊ฐ„ ๊ด€๋ฆฌ์ž ์—ญํ• ์„ ํ•œ๋‹ค.


3๏ธโƒฃ ์‹ค์ œ ์š”์ฒญ ํ๋ฆ„

โ‘  ๋ธŒ๋ผ์šฐ์ €

"๋กœ๊ทธ์ธ ํ•ด์ฃผ์„ธ์š”"

        โ”‚

        โ–ผ

โ‘ก Tomcat(WAS)

์š”์ฒญ ๋ฐ›์Œ

        โ”‚

        โ–ผ

โ‘ข Servlet ํ˜ธ์ถœ

LoginServlet

        โ”‚

        โ–ผ

โ‘ฃ JDBC

        โ”‚

        โ–ผ

โ‘ค Database

ํšŒ์› ํ™•์ธ

        โ”‚

        โ–ผ

โ‘ฅ ๊ฒฐ๊ณผ ๋ฐ˜ํ™˜

        โ”‚

        โ–ผ

โ‘ฆ ๋ธŒ๋ผ์šฐ์ € ํ™”๋ฉด ์ถœ๋ ฅ
 

4๏ธโƒฃ Servlet์ด ์—†์œผ๋ฉด?

Servlet์ด ํ•ด์•ผ ํ•˜๋Š” ์ผ์€ ์—„์ฒญ ๋งŽ๋‹ค.

HTTP ์š”์ฒญ ์ฝ๊ธฐ

↓

GET์ธ๊ฐ€?

POST์ธ๊ฐ€?

↓

URL ํ™•์ธ

↓

Body ์ฝ๊ธฐ

↓

ํŒŒ๋ผ๋ฏธํ„ฐ ๋ถ„๋ฆฌ

↓

๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ์‹คํ–‰

↓

์‘๋‹ต ์ƒ์„ฑ
 

๊ฐœ๋ฐœ์ž๊ฐ€ ์ „๋ถ€ ์ง์ ‘ ๊ตฌํ˜„ํ•ด์•ผ ํ•œ๋‹ค.


ํ•˜์ง€๋งŒ Servlet์„ ์‚ฌ์šฉํ•˜๋ฉด

HTTP ์ฒ˜๋ฆฌ

↓

Servlet์ด ์ž๋™

↓

๊ฐœ๋ฐœ์ž๋Š”

ํšŒ์›์กฐํšŒ

์ƒํ’ˆ์กฐํšŒ

๊ฒŒ์‹œ๊ธ€๋“ฑ๋ก

๋งŒ ๊ตฌํ˜„
 

ํ•˜๋ฉด ๋œ๋‹ค.


5๏ธโƒฃ HttpServletRequest์™€ HttpServletResponse

 
 
 

Tomcat์€ ์š”์ฒญ์ด ๋“ค์–ด์˜ค๋ฉด

๋ธŒ๋ผ์šฐ์ € ์š”์ฒญ

↓

Tomcat

↓

HttpServletRequest ์ƒ์„ฑ

HttpServletResponse ์ƒ์„ฑ

↓

Servlet ํ˜ธ์ถœ
 

Servlet์—์„œ๋Š”

 
protected void doGet(
        HttpServletRequest request,
        HttpServletResponse response)
 

์ด์ฒ˜๋Ÿผ ์ด๋ฏธ ๋งŒ๋“ค์–ด์ง„ ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋œ๋‹ค.


์˜ˆ๋ฅผ ๋“ค์–ด

/login?id=apple
 

์ด๋ฉด

 
String id = request.getParameter("id");
 

ํ•œ ์ค„์ด๋ฉด ๋๋‚œ๋‹ค.


6๏ธโƒฃ Servlet Container๋ž€?

Tomcat ์•ˆ์—๋Š”

Tomcat

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ ServletContainer โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
 

๊ฐ€ ๋“ค์–ด์žˆ๋‹ค.

์–˜๊ฐ€

Servlet ์ƒ์„ฑ

↓

Servlet ํ˜ธ์ถœ

↓

Servlet ์ข…๋ฃŒ

↓

๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ
 

๋ฅผ ๋ชจ๋‘ ๋‹ด๋‹นํ•œ๋‹ค.

์ฆ‰

๊ฐœ๋ฐœ์ž๋Š”

new LoginServlet();
 

์„ ๊ฑฐ์˜ ํ•˜์ง€ ์•Š๋Š”๋‹ค.

Tomcat์ด ๋Œ€์‹  ๋งŒ๋“ค์–ด์ค€๋‹ค.


7๏ธโƒฃ Servlet์€ ํ•˜๋‚˜๋งŒ ๋งŒ๋“ค์–ด์ง„๋‹ค (Singleton)

๋ธŒ๋ผ์šฐ์ € A

       โ”‚

๋ธŒ๋ผ์šฐ์ € B

       โ”‚

๋ธŒ๋ผ์šฐ์ € C

       โ”‚

       โ–ผ

ํ•˜๋‚˜์˜ LoginServlet
 

๋ชจ๋“  ์‚ฌ์šฉ์ž๊ฐ€

๊ฐ™์€ Servlet ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

๊ทธ๋ž˜์„œ

 
private int count;
 

๊ฐ™์€ ๊ณต์œ  ๋ณ€์ˆ˜๋Š” ๋งค์šฐ ์กฐ์‹ฌํ•ด์•ผ ํ•œ๋‹ค.


8๏ธโƒฃ ๋™์‹œ ์š”์ฒญ์€ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ• ๊นŒ?

 
 

๋ธŒ๋ผ์šฐ์ € ์—ฌ๋Ÿฌ ๋ช…์ด ๋™์‹œ์— ์ ‘์†ํ•œ๋‹ค.

A ์‚ฌ์šฉ์ž

B ์‚ฌ์šฉ์ž

C ์‚ฌ์šฉ์ž

D ์‚ฌ์šฉ์ž
 

Tomcat

Thread Pool

[Thread1]

[Thread2]

[Thread3]

[Thread4]
 

๊ฐ™์€ Servlet
 

DB


์ฆ‰

์‚ฌ์šฉ์ž๋งˆ๋‹ค

Servlet์ด ์ƒ๊ธฐ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ

Thread๊ฐ€ ํ•˜๋‚˜์”ฉ ์ƒ๊ธด๋‹ค.
 

โญ ํ•œ ์žฅ์œผ๋กœ ์ •๋ฆฌ

๋ธŒ๋ผ์šฐ์ €

      โ”‚

      โ–ผ

Web Server
(์ •์  ํŒŒ์ผ)

      โ”‚

      โ–ผ

Tomcat(WAS)

      โ”‚

      โ–ผ

Servlet Container

      โ”‚

      โ–ผ

Servlet

      โ”‚

      โ–ผ

JDBC

      โ”‚

      โ–ผ

Database

      โ”‚

      โ–ผ

๊ฒฐ๊ณผ ์ƒ์„ฑ

      โ”‚

      โ–ผ

๋ธŒ๋ผ์šฐ์ €
 

๊ธฐ์–ตํ•ด์•ผ ํ•  ํ•ต์‹ฌ

  • Web Server → HTML, CSS, JS, ์ด๋ฏธ์ง€ ๊ฐ™์€ ์ •์  ํŒŒ์ผ ์ œ๊ณต
  • WAS(Tomcat) → Java ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ๋™์  ํŽ˜์ด์ง€ ์ƒ์„ฑ
  • Servlet → ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ์„ ๋ฐ›์•„ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์ˆ˜ํ–‰ํ•˜๋Š” Java ํด๋ž˜์Šค
  • Servlet Container → Servlet์˜ ์ƒ์„ฑ, ํ˜ธ์ถœ, ์†Œ๋ฉธ์„ ๊ด€๋ฆฌ
  • Thread Pool → ์—ฌ๋Ÿฌ ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ์„ ๋™์‹œ์— ์ฒ˜๋ฆฌํ•˜๋ฉฐ, ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ๋ฅผ ์ง์ ‘ ๊ด€๋ฆฌํ•  ํ•„์š”๊ฐ€ ์—†๋„๋ก ํ•ด์ค€๋‹ค.

 

๊ตฌ๋ถ„ GET POST

๋ฐ์ดํ„ฐ ์œ„์น˜ URL ์ฟผ๋ฆฌ์ŠคํŠธ๋ง์— ๋…ธ์ถœ (?name=๊ฐ’) HTTP Body์— ๋‹ด๊น€ (๋…ธ์ถœ ์•ˆ ๋จ)
๋ฐ์ดํ„ฐ ํฌ๊ธฐ ์ œํ•œ์  ์ƒ๋Œ€์ ์œผ๋กœ ์ž์œ ๋กœ์›€
์šฉ๋„ ์กฐํšŒ, ๊ฒ€์ƒ‰ ๋“ฑ ๋กœ๊ทธ์ธ, ํšŒ์›๊ฐ€์ž… ๋“ฑ ๋ฏผ๊ฐํ•œ ๋ฐ์ดํ„ฐ
๋‹ด๋‹น ๋ฉ”์„œ๋“œ doGet() doPost()