Web Server & Web Application Server

Mina Park·2023년 6월 14일

1. Web Server

  • Http 기반으로 동작
  • 정적 리소스 제공: 정적 html, css, js, 이미지, 영상
  • ex) nginx, apache

2. WAS(Web Application Server)

  • Http 기반으로 동작
  • 웹서버 기능 포함(정적 리소스 제공도 가능)
  • 프로그램 코드를 실행해서 동적인 애플리케이션 로직 수행
    - 동적 html, http api(json)
    • servlet, jsp, spring mvc
  • ex) tomcat, jetty, undertow

3. 그래서 무슨 차이일까?

  • web server는 정적 리소스, WAS는 애플리케이션 로직
  • 둘의 경계가 다소 모호하긴 하지만 WAS는 애플리케이션 코드 실행에 더 특화되어있음

4. 웹 시스템 구성

  • 정적 리소스만 제공하는 웹 서버는 다소 견고한 편
  • 반면, 애플리케이션 로직을 실행하는 WAS는 잘 죽는 편
  • 때문에 웹 서버를 따로 두고 WAS, DB 장애 발생시 웹 서버에서 오류 화면을 제공하곤 함

📌 [참고] Nginx 는 무엇이고, 왜 사용할까?
https://www.youtube.com/watch?v=6FAwAXXj5N0

(1) 웹서버의 터줏대감, APACHE

  • 인터넷 트래픽이 증가하면서 서버에 동시에 연결된 커넥션 수가 증가
  • 아파치 서버는 구조상 커넥션이 생길때마다 커넥션을 형성하는 구조
    • 수많은 동시 커넥션을 감당하기에 구조적인 문제가 발생, 성능개선 이슈

(2) 아파치를 보완하기 위한 새로운 구조, Nginx

  • 아파치 서버 앞단에 Nginx 를 둬서 아파치 서버의 부하를 줄이고자 했음
  • 그 자체로 웹서버인 Nginx는 정적 리소스 처리가 가능하기 때문에, 동적 처리 커넥션을 받았을 때만 뒤에 있는 아파치 서버의 리소스를 가져다 씀
  • 동작 원리
    • 커넥션 생성/제거/처리와 같은 이벤트 기반으로 동작(event-driven-model)
    • 로드 밸런서의 역할 수행 가능: 동시 커넥션을 유지한 채 기존요청을 계속 처리하면서 뒷단에 서버를 추가
  • 대규모 사이트 운영에 적합

(3) 요약

  • APACHE: 호환성, 확장성
  • Nginx: 웹서버 보완(동시 커넥션 문제), 로드밸런서 역할

0개의 댓글