본문 바로가기
넓고 얕은 웹 지식

웹 서버와 웹 애플리케이션 서버(WAS) 1분 요약

by 팡펑퐁 2023. 2. 5.
728x90

📌 웹 서버와 정적 페이지

정적 페이지(Static Pages)

  • 저장된 콘텐츠 그대로 사용자에게 전달하는 웹 페이지이다.
  • image, html, css, javaScript 파일 등이 있다.

웹서버(Web Server)

  • 하드웨어에서 웹 서버는 웹 서버가 설치되어 있는 컴퓨터를 의미한다.
  • 소프트웨어에서 웹 서버는 웹 브라우저 클라이언트로부터 HTTP 요청을 받아 정적인 콘텐츠를 제공하는 프로그램을 의미한다.
  • 기능
    • 클라이언트의 요청을 받아 정적인 콘텐츠를 제공한다.
      • 이때 WAS를 거치지 않고 자원을 제공한다.
    • 동적인 콘텐츠 제공을 위해 WAS에 요청을 전달하고, WAS가 처리한 응답을 클라이언트에 전달한다.
      • 여기서 클라이언트는 일반적으로 웹 브라우저를 의미한다.
    • ex) : Apache Server, Nginx(엔진엑스)

 

📌 웹 애플리케이션 서버와 동적 페이지

동적 페이지(Dynamic Pages)

  • 동적인 콘텐츠를 반환한다.
  • 예를 들어 Java Program을 통해 로직이 수행되고 나온 결과물을 말한다.

 

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

  • 정적인 콘텐츠뿐만 아니라 DB 조회 등 다양한 로직 처리를 요구하는 동적인 콘텐츠도 제공하는 Application Server이다.
  • 웹 컨테이너(Web Container), 서블릿 컨테이너(Servlet Container)라고도 불린다.
  • 역할
    • 사실 웹서버와 WAS는 서로의 기능을 포함하거나 제공하기 때문에 그 경계가 모호하다고 할 수 있다.
    • WAS가 애플리케이션 코드를 실행하는 데에 더 특화되어 있다.
  • 주요 기능
    • 프로그램 실행 환경과 DB에 접속하는 기능
    • 비즈니스 로직 수행 기능
  • ex) : Tomcat, Web Sphere

 

💡 여기서 드는 자연스러운 생각,
모든 요청을 WAS가 처리하면 되지 않을까? 정적인 콘텐츠와 동적인 콘텐츠 모두 처리가 가능하잖아?

📌 웹 서버가 필요한 이유?

  • 웹 서버와 WAS는 각각 독립적으로 존재할 수 있다. 웹 시스템의 구성은 웹 서버 - WAS - DB가 일반적이다.
  • 예를 들어 클라이언트가 정적인 콘텐츠를 요청했다고 가정하자. 이때 웹서버를 이용하면 웹 서버 내의 정적인 콘텐츠를 클라이언트로 바로 보낼 수 있다. 즉, 웹서버를 정적인 콘텐츠만 처리하도록 하여 WAS까지 요청이 가지 않아 WAS의 부담을 줄일 수 있는 것이다.
  • 웹 서버를 WAS의 앞단에 배치하여 WAS의 내부를 외부에 노출시키지 않아 보안이 강화되는 이점도 얻을 수 있다.
  • 정적 콘텐츠만 제공하기 때문에 웹 서버는 잘 죽지 않는다. 따라서 WAS, DB 장애 시에 웹 서버가 오류 화면을 제공할 수 있다.

 

🤔 WAS만 쓰면 안 되는 거야?

WAS는 DB 조회, 로직 처리에 집중하는 것만으로도 벅차다. 따라서 정적인 콘텐츠의 처리를 웹 서버에 맡겨 서버의 부하를 줄이는 것이 좋다.

 

🤔 만약 WAS, DB만으로 웹 시스템을 구성하게 된다면?

 앞서 언급했듯이 WAS가 혼자 너무 많은 역할을 담당하게 되어 서버의 과부하가 우려된다. 만약 WAS가 장애를 일으켜 처리가 불가능하게 되면 클라이언트에게 오류 메시지를 보여줄 수도 없다.

 

 

💡 가장 이상적인 웹 시스템 구성은?

  • 정적 리소스는 웹 서버가 처리한다.
  • 웹서버는 애플리케이션의 로직 수행 같은 동적인 처리가 필요하면 WAS에 클라이언트의 요청을 위임한다.
  • WAS는 중요한 로직 처리를 전담한다.
  • 정적 리소스가 많이 사용된다면 웹 서버를 증설하고, 애플리케이션 리소스가 많이 사용되면 WAS를 증설하는 효율적인 관리가 필요하다.

 

참고 :

김영한 님의 스프링 MVC 1편

https://gmlwjd9405.github.io/2018/10/27/webserver-vs-was.html

https://velog.io/@yanghl98/Web-Web-Server%EC%99%80-WAS

728x90