lunchScreen/Interview_Questions

웹 서버와 웹 어플리케이션 서버(WAS)의 차이는 무엇인가요?

Opened this issue · 2 comments

웹 서버와 웹 어플리케이션 서버(WAS)의 차이는 무엇인가요?
  • Web server는 HTTP 요청을 받아 static contents를 제공합니다. 이에 반해 WAS는 dynamic contents를 제공합니다.
  • 일반적으로 WAS = Web server + Web Container라고 보고 있습니다.
  • Web Server와 WAS를 분리하는 이유는
    • 기능으 분리하여 서버부하를 방지하고
    • 물리적 분리로 보안은 강화하고
    • 여러 대의 WAS를 연결해 load balancing 용도로 사용하고
    • 여러 언어의 Web application을 service하기 위함입니다.

웹서버

  • 일반적으로 '서버'라고 하면 서버역할을 하는 컴퓨터를 뜻한다.
  • 하지만 어떤 컴퓨터가 서버역할을 하도록 도와주는 소프트웨어도 서버라는 이름으로 부른다. (=웹서버)
  • 웹서버는 이름 그대로 웹사이트를 제공하는 소프트웨어로 html,css,js 및 기타 asset 파일 등을 사용자에게 보내는 역할을 한다.
  • apache-php-mysql(apm)과 같이 기초적인 구조의 동적 웹은 처리할 수도 있지만 다른 구조는 처리할 수 없는 경우가 많다.
  • 대표적으로 ApacheNginX가 있다.

WAS

  • Web Application Server의 약자
  • 단순히 웹을 제공해주는 것이 아닌 동적 웹페이지 생성과 같이 프로그래밍되어 내장된 작업을 수행한 후 전달하는 기능까지 보유하고 있다.
  • Tomcat을 예를 들자면, 스프링으로 코딩한 웹앱을 .war파일로 빌드하면 그 안에 .class,jsp,이미지,css,js 등이 압축되어 있다. 이를 웹서버에 전달해 사용자에게까지 전달될 수 있도록 하는 것이다. (cf. 요즘은 spring을 톰캣이 들어있는 .jar 파일로 빌드해 배포한다.)
  • 이렇게 WAS는 내장된 웹사이트를 동적으로 변경하는 작업을 주로 수행한다.
  • 대표적으로 TomCat,Node.js,Django 등이 있지만, 정확히 구분하자면 TomCat을 제외한 것들은 WAS가 아니다. 사실 다 정의하기 나름인데, 진영마다 배포구조가 다 달라서 특정 진영의 어떤 프로그램이 WAS라고 콕 찝어서 말하기는 어렵기 때문이다. 다른 소프트웨어들은 그 외에도 많은 기능을 수행한다.

정리 및 결론

  • 보통 웹서버가 제일 앞단에 위치하며 웹파일을 받아 사용자한테 보내주는 역할을하고, 그 뒤에서 WAS(혹은 비슷한 타기능의 소프트웨어)가 웹을 처리하여 이를 웹서버에 전달한다.
  • 참고로 WAS도 리소스 전달은 할 수 있다. 앞서 언급했듯이 웹서버도 웹페이지 빌드 및 처리가 가능하다. 즉, 기능이 겹치는 부분도 존재한다는 것이다. 하지만 각 소프트웨어가 더 잘하는 것을 특화하여 관리하도록 하기 위해 둘 모두를 사용하는 경우가 더 많다.
  • 또한 웹서버에는 WAS에는 존재하지 않는 reverse proxy기능, WAS가 정상적으로 돌아가고 있는지 체크하는 기능 등이 존재하기 때문에 더욱 가치가 높다.
  • cf. reverse proxy : 서버의 주소를 직접적으로 노출하지 않도록 외부 주소를 하나 생성해놓는 것 / 보안상 내부 구조(리소스위치, 서비스포트위치)를 감출 때 사용 / 로드밸런싱이나 캐싱 가능