웹 서버(Web Server)와 웹 애플리케이션 서버(WAS)

조아·2025년 2월 13일
0

1. 웹과 HTTP 통신

  • 웹은 HTTP 프로토콜을 기반으로 동작.
  • 웹 브라우저가 서버에 URL 요청을 하면, 서버는 HTML을 생성하여 응답.
  • 모든 데이터는 HTTP 메시지를 통해 주고받음.
  • HTTP를 통해 주고받는 데이터의 예시:
    • HTML, 텍스트
    • 이미지, 음성, 영상, 파일
    • JSON, XML(API 통신)
    • 서버 간 데이터 전송도 대부분 HTTP 사용

2. 웹 서버(Web Server)란?

  • HTTP를 기반으로 동작하는 서버.
  • 정적 리소스를 제공.
    • HTML, CSS, JS, 이미지, 영상 등 정적 파일 제공.
  • 기타 부가 기능 포함.
  • 대표적인 웹 서버:
    • NGINX, Apache
  • 기본적인 요청-응답 흐름:
    1. 클라이언트가 HTTP 요청을 보냄.
    2. 웹 서버가 요청된 정적 파일(index.html 등)을 응답.

3. 웹 애플리케이션 서버(WAS - Web Application Server)란?

  • HTTP를 기반으로 동작하는 서버.
  • 웹 서버 기능 포함 + 프로그램 실행 기능 추가.
  • 애플리케이션 로직 수행이 가능.
    • 예: 사용자의 로그인 상태 확인, 데이터베이스 조회 후 HTML 생성.
  • 동적인 HTML과 HTTP API(JSON, XML) 제공.
  • 대표적인 WAS:
    • Tomcat, Jetty, Undertow
  • 기본적인 요청-응답 흐름:
    1. 클라이언트가 HTTP 요청을 보냄.
    2. WAS가 애플리케이션 로직을 실행하여 동적 HTML 또는 API 응답을 생성.

4. 웹 서버와 웹 애플리케이션 서버(WAS)의 차이

항목웹 서버(Web Server)웹 애플리케이션 서버(WAS)
역할정적 리소스 제공애플리케이션 로직 실행
제공 데이터HTML, CSS, JS, 이미지동적 HTML, API(JSON, XML)
기능HTTP 요청을 처리하고 정적 파일 제공프로그램 코드 실행 가능
대표 예시Nginx, ApacheTomcat, Jetty, Undertow
  • 웹 서버도 일부 프로그램 실행 기능을 포함할 수 있음.
  • WAS도 정적 리소스 제공 기능을 포함할 수 있음.
  • Java 환경에서는 서블릿 컨테이너를 포함하면 WAS로 분류.

5. 웹 시스템 기본 구성

(1) 단순한 시스템 구성: WAS + DB

  • WAS가 모든 역할(정적 리소스 + 애플리케이션 로직) 담당.
  • 단점:
    • WAS의 부담이 큼.
    • 정적 파일을 처리하는 데에도 높은 시스템 리소스를 사용.
    • WAS 장애 발생 시 전체 서비스 중단.

(2) 효율적인 웹 시스템 구성: Web Server + WAS + DB

  • 웹 서버는 정적 리소스를 처리.
  • WAS는 애플리케이션 로직만 처리.
  • 웹 서버가 처리할 수 없는 요청은 WAS로 전달.
  • 장점:
    • 서버 부하 분산 가능.
    • 정적 리소스를 빠르게 제공하여 성능 향상.
    • WAS 장애 발생 시에도 웹 서버가 오류 페이지 제공 가능.

6. 확장 가능한 웹 시스템 설계

  • 정적 리소스 요청이 많으면 웹 서버(Nginx 등)를 증설.
  • 애플리케이션 로직 요청이 많으면 WAS(Tomcat 등)를 증설.
  • 장애 대응:
    • 정적 리소스를 제공하는 웹 서버는 거의 죽지 않음.
    • WAS는 복잡한 로직을 처리하므로 상대적으로 장애 발생 확률이 높음.
    • WAS 장애 발생 시에도 웹 서버가 오류 화면을 제공 가능.

7. 추가적인 개선 방법

  • CDN(Content Delivery Network) 활용:
    • 정적 리소스를 캐싱하여 빠르게 제공.
    • 서버 부하를 줄이고 응답 속도를 향상.
  • API 서버만 제공하는 경우:
    • 화면(UI)은 제공하지 않고, JSON, XML 데이터만 반환하는 경우 WAS만 사용해도 충분.

8. 정리

  • 웹 서버(Web Server): 정적 리소스 제공 (NGINX, Apache).
  • 웹 애플리케이션 서버(WAS): 애플리케이션 로직 수행 (Tomcat, Jetty).
  • 웹 서버 + WAS 조합: 성능 최적화, 부하 분산, 장애 대응 가능.
  • 웹 서버는 안정적, WAS는 상대적으로 장애 위험이 큼.
  • 대규모 시스템에서는 웹 서버와 WAS를 분리하여 운영하는 것이 일반적.
profile
프론트엔드 개발자

0개의 댓글