web server vs was, 그리고 Nginx 간단 정리

2023. 3. 18. 21:54

Web server란?

Client 로부터 HTTP 요청을 받아 정적 컨텐츠를 제공하는 프로그램

정적 컨텐츠란?

  • 어느 사용자 요청이든 항상 동일한 컨텐츠(ex html, image 등)

웹 서버의 기능

  • 클라이언트로부터 HTTP 요청을 받을 수 있다.
  1. 정적 컨텐츠 요청 시 → 정적 컨텐츠 제공
  2. 동적 컨텐츠 요청 시 → WAS(Web Application Server)로 전달하여 WAS가 처리한 결과를 클라이언트에 전달

대표적인 웹서버 Nginx

Nginx는 웹 서버이며 리버스 프록시, 로드밸런서, HTTP cache로도 쓰일 수 있는 대표적인 웹 서버이다.

이벤트 기반 구조(event driven)를 채택하여 다수의 요청을 빠르게 처리하며 CPU 자원 소모가 적다.

클라이언트의 request에 맞추어 connection을 생성하기 위해 process를 새로 생성한 Apache 서버와 달리 이미 연결된 connection에 event들을 queue에 넣어 비동기적으로 처리한다.

 

WAS 란?

DB 조회나 다양한 로직 처리를 요구하는 동적인 컨텐츠를 제공하기 위해 만들어진 프로그램

Web Application Server의 약자

WAS의 기능

  • 클라이언트로부터 HTTP 요청을 받을 수 있다(대부분의 WAS는 Web Server 내장)
  • 요청에 맞는 정적 컨텐츠를 제공할 수 있다.
  • DB 조회나 다양한 로직 처리를 통해 동적 컨텐츠를 제공할 수 있다.

WAS의 예

  • Tomcat, JBOSS 등

WAS가 있는데 Web Server가 필요한 이유는?

  • 분할을 통한 서버 부하 방지
    • 정적 컨텐츠는 Web Server, 동적 컨텐츠는 WAS가 담당
  • 여러 대의 WAS 연결 가능
    • WAS가 처리해야하는 요청을 여러 WAS가 나누어서 처리할 수 있도록 설정
    • WAS 끼리의 Load Balancing 수행
    • 여러 대의 WAS Health Check(서버에 주기적으로 HTTP 요청을 보내 서버의 상태를 확인하는 기능)
  • 보안 강화
    • 리버스 프록시를 통한 실제 서버를 외부에 노출하지 않을 수 있다.

'Computer Base' 카테고리의 다른 글

Framework vs Library  (0) 2023.03.17
캐싱, 웹캐싱, 쿠키  (0) 2023.03.13
Forward Proxy & Reverse Proxy  (0) 2023.03.13
[Computer Architecture] Multilevel Cache & Virtual Memory  (0) 2022.07.05
Concurrent Processing vs Parallel Processing  (0) 2022.05.10

BELATED ARTICLES

more