웹 서버와 웹 애플리케이션 서버의 차이점

박채은·2023년 2월 8일
0

네트워크

목록 보기
6/6

"웹 서버와 웹 애플리케이션 서버의 차이점"은 매우 기본적인 백엔드 개발자 면접 질문이라고 한다.

이 차이점을 이해하기 위해서, 먼저 Static Page와 Dynamic Page의 차이점을 알아야 한다.

Static Page vs Dynamic Page


[출처] https://medium.com/@chrisjune_13837/web-%EC%9B%B9%EC%84%9C%EB%B2%84-%EC%95%B1%EC%84%9C%EB%B2%84-was-app%EC%9D%B4%EB%9E%80-692909a0d363

Static Page

  • image, HTML, CSS, javascript 파일과 같이 정적인 파일들을 말한다.
  • 항상 동일한 페이지를 반환하는 파일

Dynamic Page

  • 들어온 요청에 맞게 동적으로 만들어진 컨텐츠를 말한다. (들어온 요청은 "인자"라고 할 수 있다.)
  • 데이터베이스, 서버 내 로직 등을 통해 페이지가 동적으로 형성된다.

웹 서버 vs 웹 애플리케이션 서버


[출처] https://gmlwjd9405.github.io/2018/10/27/webserver-vs-was.html

[출처] https://medium.com/@chrisjune_13837/web-%EC%9B%B9%EC%84%9C%EB%B2%84-%EC%95%B1%EC%84%9C%EB%B2%84-was-app%EC%9D%B4%EB%9E%80-692909a0d363

웹 서버

  • Web Server
  • HTTP 요청을 받아, Static contents를 제공하는 서버
  • WAS를 거치지 않고, 정적 컨텐츠를 제공한다.
    • 다른 로직이 필요하지 않다. DB에 존재하는 해당 파일을 그냥 가져오면 된다!
  • 동적 컨텐츠에 대한 요청이 들어오면 요청을 WAS에게 보내는 역할을 한다.(직접 처리 x)
    WAS가 요청을 처리해서 클라이언트에게 전달한다.
  • 예시) Apache, IIS, NginX

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

  • Web Application Server
  • 클라이언트 요청을 다양한 서버 내 로직이나 DB 조회 등을 통해 처리하여 동적인 컨텐츠를 제공하는 서버
  • 서블릿 컨테이너라고도 불린다.
  • WAS = 웹 서버 + Web Container

✔️ Web Container란?
웹 서버가 보낸 JSP, PHP, ASP.net 등의 파일들을 실행하고 수행 결과를 다시 웹 서버로 보내주는 역할을 한다.

  • 웹 서버에서 요청을 받아, 이를 웹 컨테이너로 보내 로직을 수행하고 그 결과를 다시 웹 서버로 보내 웹 서버가 최종적으로 클라이언트에게 보내준다.
  • 예시) Tomcat, WebLogic, WebSphere

정리해보자면, 들어오는 요청을 모두 웹 서버가 먼저 받는다.
그리고 정적 컨텐츠라면 웹 서버에서 처리하고, 동적 컨텐츠라면 WAS에게 요청을 보낸다.
WAS는 Web Container를 통해 로직을 실행한 후에 그 결과를 다시 웹 서버로 보낸다.
웹 서버가 이를 다시 클라이언트에게 전해주게 된다.


Web Server와 WAS가 분리되어 있는 이유?

자원의 효율성을 위해서이다!
블로그에 작성되어 있는 것처럼 자원의 효율성 외에도 다양한 이유들이 있다. (장애 극복, 배포 및 유지보수의 편의성 등)

우선 자원의 효율성에 대해서만 생각해보자!

서버가 클라이언트에게 제공해야될 것은 정적 페이지와 동적 페이지가 있다.
정적 페이지는 별다른 로직이 필요하지 않기 때문에 빠르게 전달할 수 있고, 동적 페이지는 로직이 필요하기 때문에 비교적 시간이 더 걸린다.

Web Server와 WAS가 분리되어 있지 않고 하나로 구성되어 있다고 가정해보자.
동적 페이지에 대한 요청이 들어오고 나중에 정적 페이지에 대한 요청이 들어오면, 서버는 동적 페이지에 대한 요청을 먼저 처리할 것이고 나중에 들어온 정적 페이지에 대한 요청은 별다른 로직이 필요없어서 빨리 처리할 수 있음에도 불구하고 동적 페이지를 처리하느라 지연될 것이다.
그러므로 수행 속도가 느려질 것이다.

따라서 정적 페이지와 동적 페이지를 처리하는 Web Server와 WAS를 따로 둔 것이다.
Web Server를 통해서 정적 파일들을 WAS를 거치지 않고 빠르게 클라이언트에게 전달할 수 있다.
WAS를 거치지 않으니 WAS에 대한 서버의 부담을 줄일 수 있다.
WAS를 통해서 필요한 동적 파일들을 그때그때 만들어 제공할 수 있다.


[참고]

https://binux.tistory.com/32
https://gmlwjd9405.github.io/2018/10/27/webserver-vs-was.html

0개의 댓글