Web Application (1)

SIHA·2025년 1월 22일

Web Server

웹서버는 HTTP기반으로동작하며 정적 리소스(HTML, CSS, JS, 이미지 등)를 제공함

  • 대표적 : NGINX, Apache

WAS (Web Application Server)

HTTP 기반으로 동작하며 웹 서버의 기능을 포함함. 추가적으로 코드를 실행해서 Application 로직을 수행하고 DB와 상호작용하여 동적 컨텐츠를 생성함

  • 대표적 : Tomcat, Jetty, Undertow

Web Server vs WAS

  1. 실제로는 Web Server도 Application 로직을 포함할 수 있다
  2. WAS는 Application 코드 실행에 더욱 특화되어 있다
  3. Java에서 Servelet Container 기능을 제공하면 WAS이다

Web System 구성

WAS만 사용하는 경우


1. WAS가 너무 많은 역할을 담당해 서버 과부하 발생 가능성이 높아진다.
2. 실행에 중요한 Application 로직이 정적 리소스로 인해 수행되지 않을 수 있다.
3. WAS에 장애가 생기면 클라이언트에게 응답할 수 없다 (오류 페이지)

실제 웹 시스템 구성


Web Server에서 정적 리소스만 처리하고 Application 로직이 필요한 요청만 WAS에 전달한다.

장점

  1. 효율적인 리소스 관리
    • 정적 자원이 많이 사용된다면 Web Server를 ScaleOut함
    • Application 관련 자원이 많이 사용된다면 WAS를 ScaleOut
  2. 오류 화면 제공 가능
    • Web Server는 오류 발생 확률이 낮음
    • WAS는 오류 발생 확률이 높고, 장애 발생이 잦음
    • WAS는 DB와 상호작용 하기 때문에 DB에 문제가 생겨도 문제가 발생함

Servlet

HTTP 프로토콜 기반 요청(request) & 응답(response) 처리에 사용됨

서버의 처리 과정

without Servlet

  1. 서버와 TCP/IP 연결
  2. HTTP Request Message 필요한 형태로 변환하여 읽기
  3. 분석한 결과를 통해 프로세스 실행
  4. 비지니스 로직 실행
  5. HTTP Response Message 생성
  6. 응답 전달
  7. 연결 종료

Servlet 지원하는 WAS

  1. 비즈니스 로직 실행
    (HTTP에 대한 처리는 Servlet이 처리)

Servlet 동작 순서

  1. WAS는 HTTP 요청 메세지를 기반으로 새로운 Request, Response 객체 생성
  2. WAS는 만들어진 Request, Response 객체를 서블릿 컨테이너에 넘겨주며 ExampleServlet 객체 호출
  3. ExampleServlet에서 비지니스 로직 처리
  4. 응답에 필요한 정보를 개발자가 입력
  5. WAS는 Response 객체 정보(개발자가 입력한 정보)로 HTTP 응답 메세지 생성

개발자 업무:
1. Requst 객체 내 HTTP 요청 정보를 꺼내서 사용
   ( 요청정보를 토대로 비즈니스 로직(기능) 수행)

Servlet Container

서블릿을 초기화, 생성, 관리, 호출, 종료하는 역할을 수행

  • 생명 주기
    - Servletdms은 서블릿 컨테이너가 생성 관리하므로 WAS(서블릿 컨테이너 포함) 종료시에 종료됨
  • Servlet 객체 생성 시점
    - 개발자에 의해 인스턴스화 X, 작성된 코드에 따라 서블릿 컨테이너가 생성
  • Servlet 객체는 싱글톤으로 관리됨
  • 동시 요청 처리로 Multi Thread 지원

profile
뭐라도 해보자

0개의 댓글