CS스터디

[Web] Web Server와 WAS

Codult 2024. 2. 6. 10:50
728x90

동적 웹 페이지

웹 서버에 의해 실행되는 프로그램을 통해 만들어진 결과물

데이터를 가공하여 각 사용자에게 맞춤형으로 화면을 보여주기 때문에, 데이터베이스와 웹 애플리케이션 서버가 필요하다.

클라이언트의 요청에 따라, 웹 어플리케이션 서버에서 데이터베이스 조회 or 외부 서버에서 데이터를 읽어와 HTML을 렌더링한다.

※ 이와 같이 서버가 동적으로 HTML을 생성하는 개념이 '서버사이드 렌더링(SSR)'

 

장점

  • 동적 콘텐츠를 보여줄 수 있다.

단점

  • 매우 복잡하고 용량이 크다.
  • 동적 데이터를 보여주기 때문에, 캐시를 사용하는 것이 쉽지 않다.

 

이러한 장단점으로 인해, 동적 웹페이지는 많은 컨텐츠가 실시간으로 업데이트 되는 웹페이지에 적합하지만, 내용이 자주 바뀌지 않는 컨텐츠를 보여주는 서비스에는 적합하지 않다.

 

정적 웹 페이지

클라이언트가 요청 시 서버에서 저장되어 있는 HTML을 그대로 보내주는 구조로, 내용이 자주 바뀌지 않는 정적 콘텐츠를 보여줄 때 활용한다.

장점

  • 환경을 구성하고 구축하기 쉽다. ( 동적 요소가 없으므로 데이터베이스가 필요없음)
  • 서버 간 통신이 거의 없어, 전송 속도가 매우 빠르다. (단순하게 문서로만 구성되어 HTML만 전송하면 되기 때문에)
  • HTML을 바로 보내주기 때문에 동적 웹 페이지와 달리, 동적 웹 페이지보다 빠르게 의미있는 첫 화면(First Meaningful Paint)을 볼 수 있다.

※ First Meaningful Paint (FMP)
: 웹 페이지 초기 렌더링 직후, 기본 화면 레이아웃이 변경되고 웹 글꼴이 로드된 후의 페이지로, FMP는 로딩이 끝날 때까지 흰 화면 대신, 의미있는 부분을 먼저 보여주기 때문에 사용자에게 긍정적인 인상을 남길 수 있다. 하지만, FMP는 페이지 로드의 작은 차이에도 민감하게 반응하여 일관성 없는 결과를 초래하거나 측정 지표의 정의가 브라우저별 구현 세부 정보에 의존하기 때문에 모든 웹 브라우저에서 표준화 및 구현할 수 없다는 단점이 있다.

※ Largest Contentful Paint (LCP)

: FMP의 부정확성의 대안으로, 페이지가 처음으로 로드를 시작한 시점을 기준으로 뷰포트 내에 있는 가장 큰 이미지 또는 텍스트 블록의 렌더링 시간을 보고한다. 페이지에서 가장 용량이 큰 컨텐츠가 표시되는 시점을 나타낸다. FMP를 측정하는 것이 복잡하기 때문에, 가장 용량이 큰 컨텐츠가 렌더링되는 시긴인 LCP를 주요 컨텐츠가 로드되는 시기로 판단하는 것을 권장하고 있다.

  • 정적인 데이터를 다루기 때문에, 캐시를 매우 공격적으로 활용할 수 있다.

따라서, 정적 웹 페이지는 정적인 데이터를 빠르게 보여주는 서비스에 많이 사용한다.

 

Web Server와 WAS

Web Server

HTTP 프로토콜을 기반으로 하여, 클라이언트의 요청을 서비스하는 기능을 담당한다.

  • Web Server가 설치되어 있는 컴퓨터인 하드웨어와 클라이언트로부터 HTTP 요청을 받아 정적인 컨텐츠를 제공하는 컴퓨터 프로그램인 소프트웨어로 구분된다.
  • 클라이언트의 요청에 따라, 정적인 컨텐츠와 동적인 컨텐츠를 제공한다.
    정적 컨텐츠에 대하여 WAS를 거치지 않고 Web Server가 바로 자원을 제공하지만, 동적인 컨텐츠의 경우, 클라이언트의 요청을 WAS에 전달하고 WAS가 처리한 결과를 받아 클라이언트에게 전달하는 과정으로 제공된다.

예) Apache Server, Nginx, IIS(Windows 전용서버)

 

WAS (Web Application Server)

DB 조회나 다양한 로직 처리를 요구하는 동적 컨텐츠를 제공하기 위해 만들어진 애플리케이션 서버이다.

= HTTP를 통해 컴퓨터나 장치에 애플리케이션을 수행해주는 미들웨어(소프트웨어 엔진)

 

웹 컨테이너(Web Container), 서블릿 컨테이너(Servlet Container)라고도 한다.
(Container: JSP, Servlet을 실행시킬 수 있는 소프트웨어 -> 즉, WAS는 JSP, Servlet 구동 환경을 제공한다.)

 

WAS의 역할

WAS = Web Server + WEB Container

  • Web Server의 기능들을 구조적으로 분리하여 처리하고자 하는 목적으로 제시되었다.
  • 분산 트랜잭션, 보안, 메시징, 스레드 처리 등의 기능을 처리하는 분산 환경에서 사용된다.
  • 주로 DB 서버와 같이 수행된다.
  • 현재는 WAS가 가지고 있는 Web Server도 정적인 컨텐츠를 처리하는 데 있어, 성능상 큰 차이가 없다.

기능

  • 프로그램 실행 환경과 DB 접속 기능 제공
  • 여러 개의 트랜잭션 관리 가능
  • 업무를 처리하는 비즈니스 로직 수행

예) Tomcat, JBoss, Jeus, Web Sphere

 

Web Server가 필요한 이유

정적 컨텐츠만 처리하도록 기능을 분배하여, 서버의 부담을 줄일 수 있다.

 

WAS가 필요한 이유

Web Server만을 이용한다면 웹 페이지의 모든 동적 컨텐츠를 미리 만들어놓고 서비스해야 하는데, 이는 자원 효율성과 확장성 면에서 매우 비효율적이며 현실적으로 거의 불가능하다.

따라서, WAS를 통해 요청에 맞는 데이터를 가져와, 요청에 적합한 결과를 만들어 제공함으로써 자원을 효율적으로 사용할 수 있다.

 

WAS와 Web Server을 분리하여 사용하는 이유

자원 이용의 효율성 및 장애 극복, 배포 및 유지보수의 편의성을 위해 Web Server와 WAS를 분리하여 사용한다.

  • 기능을 분리하여 서버 부하를 방지한다.
  • 물리적으로 분리하여 보안을 강화한다. (SSL에 대한 암복호화 처리에 Web Server를 이용)
  • 여러 대의 WAS를 연결할 수 있다.
  • Load Balancing을 위해 Web Server를 사용한다. (fail over, fail back 처리에 유리)
    ex) 앞 단의 Web Server에서 오류가 발생한 WAS를 이용하지 못하도록 한 후, WAS를 재시작함으로써 사용자는 오류를 인식하지 못하고 이용할 수 있다. 
  • 여러 웹 애플리케이션 서비스가 가능하다.
    ex) 하나의 서버에서 PHP Application, Java Application을 함께 사용하는 경우
  • 기타: 접근 허용 IP 관리, 2대 이상의 서버에서의 세션 관리 등도 Web Server에서 처리하면 효율적이다.

 

출처

https://rust-cub-503.notion.site/Web-Server-WAS-1f7e39b2a4184d2eb77c4f79824384b1

728x90