WEB

[Tomcat] Web Server와 WAS, Apache Tomcat

쥬쥬코드 2024. 11. 10. 16:42

정적 웹페이지

  • 서버에 미리 저장된 파일(HTML, Image, JavaScript 등)이 그대로 전달되는 웹페이지
  • 서버는 사용자 요청에 해당하는 저장된 웹페이지를 보냄
  • 사용자는 서버에 저장된 데이터가 변경되지 않는 한 고정된 웹페이지를 보게 됨
  • 모든 사용자는 같은 결과의 웹페이지를 서버에 요청하고 응답 받음
  • EX) image, html, css, javascript 파일과 같이 컴퓨터에 저장되어 있는 파일들

동적 웹페이지

  • 서버에 있는 데이터들을 스크립트에 의해 가공 처리한 후 클라이언트에게 전송하는 웹페이지
  • 사용자는 상황, 시간, 요청 등에 따라 달라지는 웹 페이지를 보게됨
  • 같은 페이지라도 사용자마다 다른 결과의 웹페이지서버에 요청하고 받을 수 있음
  • 대부분의 웹페이지는 동적 웹 페이지
    ex) 네이버 블로그, 티스토리 등

정적 웹페이지는 요청에 대한 파일만 전송하면 되므로

빠르고, 비용이 적게 들지만, 저장된 정보만 보여주므로 서비스가 한정적, 관리 힘듦

 

동적 웹페이지는 다양한 정보를 조합하여 동적으로 정보를 제공하므로 다양한 서비스를 제공할 수 있음 → 관리가 쉽다

 

BUT 사용자에게 웹페이지를 전달하기 전에 처리하는 작업이 필요

 

⇒ 정적 웹페이지보다 리며, 웹서버 외에 추가 처리를 위한 WAS(web application server)가 필요하다는 단점이 있음

 


 

Web Server

웹 브라우저를 클라이언트로부터 HTTP요청을 받아들이고 HTML문서와 같은 웹페이지를 반환하는 컴퓨터 프로그램

  • 정적 콘텐츠 제공
  • 동적 콘텐츠를 위한 요청 전달

클라이언트가 웹 브라우저에서 어떠한 페이지 요청을 하면 웹 서버에서 그 요청을 받아 정적 콘텐츠(즉시 응답 가능한 컨텐츠)를 제공하는 서버

또 동적 콘텐츠 제공을 위한 요청 전달의 기능도 담당한다.

클라이언트의 요청을 WAS에 보내고, WAS가 처리한 결과를 클라이언트에게 전달한다.

 

WAS(Web Application Server)

인터넷 상에서 HTTP프로토콜을 통해 사용자 컴퓨터나 장치에 어플리케이션을 수행해주는 미들웨어

주로 동적 서버 컨텐츠를 수행하는 것으로 웹서버와 구별됨

 

데이터 베이스 서버같이 수행

  • DB 조회다양한 로직 처리를 요구하는 동적 콘텐츠를 제공하기 위해 만들어진 Application Server
  • 웹 서버 기능들을 구조적으로 분리하여 처리하고자 하는 목적으로 제시됨
  • WAS = Web Server + Web Container
    ex) Tomcat

WAS는 웹서버 단독으로는 처리할 수 없는 DB 조회나 다양한 로직처리가 필요한 동적 콘텐츠 제공

⇒ 사용자의 다양한 요구에 맞춰 웹서비스를 제공 가능

(JSP, Servlet 등 구동환경을 제공해주기 때문에 웹컨테이너 / 서블릿 컨테이너라고도 불림)

 

 


 

Web Server와 WAS를 구분하는 이유

자원 이용의 효율성 + 장애 극복 , 배포 및 유지 보수의 편의성 때문

Web Server를 WAS 앞에 두고 필요한 WAS들을 Web Server에 플러그인 형태로 설정하면 더욱 효울적인 분산처리 가능

  1. 기능을 분리하여 서버 부하 방지
    was : DB 조회나 로직 처리로 바쁨 → web server가 단순 정적 콘텐츠 제공
  2. 물리적으로 분리하여 보안 강화
    SSL에 대한 암복호화 처리에 WebServer 사용
  3. 여러 대의 WAS 연결 가능
    대용량 웹 어플리케이션의 경우(여러개의 서버 사용) WAS와 웹서버를 분리하여 무중단 운영을 위한 장애 극복에 쉽게 대응 가능
    ex) 앞단의 웹서버에서 오류가 발생한 WAS를 이용하지 못하도록 한 후 WAS를 재시작함으로써 사용자는 오류를 느끼지 못하고 이용가능
  4. 여러 웹 어플리케이션 서비스 기능
    ex) 하나의 서버에서 PHP Application과 JAVA Application을 함께 사용하는 경우

 


 

 

 

⚠️
1. Client → Web Server → DB
2. Client → WAS → DB
3. Client → Web Server → WAS → DB

 

▶️ Client → Web Server → WAS → DB 구조 동작 과정

2. Web Server는 클라이언트 요청(request)을 WAS에 보낸다.
3. WAS는 관련된 Servlet을 메모리에 올린다.
4. WAS는 web.xml을 참조하여 해당 Servlet에 대한 Thread를 생성한다.
5. HTTPServletRequest와 HTTPServletResponse 객체를 생성하여 Servlet에 전달한다.
5-1. Thread는 Serlet의 Service() 메서드를 호출한다.
5-2. service() 메서드는 요청에 맞게 doGet() 또는 doPost() 메서드를 호출한다.
5-3. protected doGet(HTTPServletRequest request, HTTPServletResponse response)
6. doGet() 또는 doPost() 메서드는 인자에 맞게 생성된 적절한 동적 페이지를 Reponse 객체에 담아 WAS에 전달한다.
7. WAS는 Response 객체를 HTTPResponse 형태로 바꾸어 Web Server에 전달한다.
8. 생성된 Thread를 종료하고, HTTPServletRequest와 HTTPServletResponse 객체를 제거한다.

 

 


Apache(아파치) : 월드와이드 웹서버용 소프트웨어

HTTP 아파치 서버라고도 불리는 HTTP 웹 서버

  • 리눅스나 윈도우 등 거의 모든 운영체제에서 사용할 수 있음
  • 구축이 쉽고, 다양한 추가 기능을 가지고 있어서 가장 인기 있는 웹 서버로 이용됨

아파치 : 소프트웨어 단체 이름

아파치 서버 : http 요청을 처리하는 웹 서버

 

* 클라이언트가 GET, POST, DELETE 등등의 메소드를 이용해 요청을 하면 이 프로그램이 어떤 결과를 돌려주는 기능을 함

Tomcat(톰캣)

아파치 소프트웨어 재단에서 개발한 서블릿 컨테이너(또는 웹 컨테이너)만 있는 WAS

  • 컨테이너 : JSP, Servlet을 실행시킬 수 있는 소프트웨어
  • 서블릿(Servlet) : 클라이언트의 요청을 받고 요청을 처리하여 결과를 클라이언트에게 제공하는 자바 인터페이스

톰캣은 웹 서버와 연동하여 실행 할 수 있는 자바 환경을 제공하여 자바 서버 페이지(JSP)와 자바 서블릿이 실행할 수 있는 환경을 제공

DB처리와 같은 동적인 기능들을 가공하여 HTML파일로 만들어 클라이언트에게 제공(8080포트)

Apache Tomcat(아파치 톰캣)

기본적으로 아파치와 톰캣의 기능은 나눠져 있지만 Tomcat 5.5버전 부터 정적 콘텐츠 처리기능이 추가되고, Tomcat이 Apache의 기능을 포함하고 있어서 아파치 톰캣이라고 부름

 

'WEB' 카테고리의 다른 글

스프링 객체지향과 다형성  (0) 2024.11.25
서블릿(Servlet)  (0) 2024.11.15
[pandas] csv 데이터 api 연동, 처리  (2) 2024.11.03
[JWT]쿠키/세션/JWT 비교, jwt 구현 (nodejs)  (0) 2024.10.29
스프링 의존성 주입에 관하여  (2) 2024.10.27