본문 바로가기
Spring

WEB Server와 WAS

by 융디's 2024. 6. 4.
728x90
WEB Server와 WAS

WEB Server와 WAS

  1. 클라이언트가 요청
  1. HTTPD웹서버를 부른다
  1. 웹 서버클라이언트가 어떤 데이터(정적/동적)을 요청했는지 판단
  1. 클라이언트가 요청한 것이 정적이면 웹서버에서 바로 응답
    • 모든 응답은 HTML로 진행
  1. 클라이언트가 동적인 것을 요청한 것이라면 웹서버에서 바로 응답 불가능
  1. 서블릿 컨테이너(웹 컨테이너)를 깨워 그 안에 있는 서블릿이라는 프로그램이 연산 시작
  1. 서블릿이 다 처리하면 결과는 정적으로 생성하여 웹서버에게 전달
  1. 웹서버클라이언트에게 응답

브라우저

웹 페이지를 열고 사용자와 상호작용하는 클라이언트 측 소프트웨어
  • 역할
    • HTTP 요청 전송
      • 웹 서버에 HTTP 요청을 보내고 응답을 받는다.
    • HTML 렌더링
      • 받은 HTML, CSS, JavaScript 파일을 해석하여 웹 페이지를 표시
  • 예시 : 구글 크롬, 마이크로소프트 엣지, 사파리 등
  • 브라우저는 클라이언트 측에서 웹 페이지를 표시하고 사용자가 상호 작용할 수 있도록 한다.
  • 웹 서버는 브라우저의 요청을 받아 정적 파일을 브라우저로 응답
  • WAS는 서버 측에서 비지니스 로직을 처리하고 동적 콘텐츠를 생성하는 역할

WEB(World Wide Web)

인터넷을 통해 사용자가 정보를 공유하고 접근할 수 있는 전 세계적인 정보 공간
  • HTTP(Hypertext Transfer Protocal) 프로토콜을 사용
    • 클라이언트와 서버간의 데이터를 전송
  • HTML(Hypertext Markup Langauge) 사용
    • 문서를 표현
  • 사용자가 웹 브라우저를 통해 웹 페이지를 요청하고, 웹 서버로부터 웹 페이지를 받아와 화면에 표시하는 과정을 포함

WEB Server

클라이언트로부터 HTTP 요청을 받아들이고, 요청된 웹 페이지나 파일을 제공하는 소프트웨어
  • 대표적인 WEB 서버 : Apache, Nginx 등
  • 웹 서버는 HTTP 프로토콜 지원
  • 주로 정적인 콘텐츠(HTML, File, Image, CSS)를 제공하는 데 사용
  • 단순히 요청된 파일을 전달하는 역할만 수행 → 모든 사람에게 똑같은 정보를 보여준다.

WAS(Web Application Server)

동적인 웹 애플리케이션을 실행하기 위한 소프트웨어 플랫폼으로 웹 서버와 웹 컨테이너가 서로 소통할 수 있는 환경을 조성
  • WAS를 설치했다면 웹 서버를 설치한 후 두 개를 연동해야 한다 → Apache Tomcat
  • 대표적인 WAS 서버 : Tomcat, JBoss 등
  • WAS의 구조는 다양하지만, 대표적으로 서블릿 컨테이너가 구성요소로 존재
  • 클라이언트 요청(HTTP 요청)에 따라 동적으로 페이지를 생성하여, 결과를 전송하고

    데이터 베이스와의 상호 작용, 트랜잭션 관리, 보안, 세션 관리를 담당 → 서블릿 컨테이너 역할
  • 애플리케이션을 실행하기 위한 환경을 제공하지만! 그 자체로 애플리케이션을 실행할 수 없다!
    • WAS 위에 우리가 만든 애플리케이션을 배포하여 실행하는 방식으로 동작
      • WAS는 웹 애플리케이션을 호스팅하고 관리하는 역할
      • 버 위에 배포 및 실행함으로써 해당 애플리케이션은 서버의 기능과 리소스를 활용할 수 있게 된다.

Container

무언가를 담거나 포함하는 객체로, 여러 개의 다양한 객체의 생명주기, 의존성 관리, 인스턴스화를 담당한다.
  • Docker에서 말하는 컨테이너와 아주 다른 용어!
  • 간단하게 컨테이너객체를 생성하는 주체며, 관리한다.
  • 개발자가 설정(.xml)만 해주면 new는 컨테이너가 스스로 관리함
  • 객체 생성 및 관리를 스스로 처리함

Servlet

동적인 웹 콘텐츠를 생성하기 위한 자바 클래스로, 주로 HTTP 요청에 대한 응답을 생성하는 데 사용
  • javax.servlet.Servlet 인터페이스를 구현하는 클래스로 작성
  • 주로 웹 애플리케이션의 비즈니스 로직을 포함
  • 웹 컨테이너(WEB Application Server) 내에서 실행된다.
  • 클라이언트로부터의 HTTP 요청을 받아들이고, 요청에 따른 동적인 콘텐츠를 생성하여 클라이언트에게 응답한다.

< 주요 메서드 >

  • init()
    • 서블릿의 초기화를 담당
    • 서블릿이 처음 요청될 때 한 번만 호출
  • service()
    • 클라이언트의 요청을 처리하고 응답을 생성을 담당
    • 실제로 클라이언트 요청을 처리
  • destory()
    • 서블릿이 소멸될 때 호출되는 메서드
    • 서블릿이 사용한 자원을 정리하는 등의 작업을 수행

WEB Container = Servlet Container

웹 애플리케이션을 클라이언트의 요청에 따라 동적으로 처리하고, 서블릿을 실행하여 콘텐츠를 생성하며, 클라이언트에게 응답을 전송하는 역할
  • 웹 애플리케이션 실행 환경 제공
  • 서블릿의 생명주기 관리
  • Tomcat은 서버와 동시에 "서블릿 컨테이너"의 역할 해줌
  • @WebServlet() 이 있다면 new를 자동으로 해줌

< 주요 역할 >

  • 클라이언트 요청 처리
    • 클라이언트로부터 HTTP 요청을 받아들이고, 해당 요청을 처리하기 위해 적절한 서블릿 또는 JSP 페이지로 라우팅
  • 동적 페이지 생성
    • 서블릿이나 JSP 페이지를 실행하여, 동적으로 웹 페이지를 생성
    • 클라이언트에게 요청에 따라 적절한 동적 콘텐츠를 제공 가능
  • 데이터베이스와의 상호작용
    • 서블릿 컨테이너는 데이터베이스와의 연동을 지원
    • 데이터베이스에 접근하여, 데이터를 조회, 수정, 삭제하는 등의 작업 수행
    • 데이터베이스와의 상호작용을 통해 동적인 콘텐츠를 생성하고 제공
  • 트랜잭션 관리
    • 트랜잭션을 관리하고, 데이터베이스와의 상호작용을 트랜잭션 단위로 처리
  • 보안
    • HTTPS 프로토콜 지원
    • 사용자 인증 및 권한 부여를 위한 보안 기능 제공
  • 세션 관리
    • 세션 관리를 지원하여 사용자의 세션을 추적하고 유지
    • 이를 통해 사용자 상태를 유지하고, 다양한 기능을 제공

728x90

'Spring' 카테고리의 다른 글

Spring Boot 실행 클래스 분석하기  (0) 2024.06.06
Spring Boot Project 생성하기(Gradle)  (0) 2024.06.05
Spring Framework과 Spring Boot  (0) 2024.06.03
Library와 Framework, API  (0) 2024.06.02