Web Server 와 Web Application Server
WS(웹서버) 는
인터넷에서 웹사이트와 같은 웹 애플리케이션을 호스팅하기 위한 소프트웨어이다.
주로 클라이언트에서 요청하는 웹페이지, 이미지, 동영상 등의 정적 컨텐츠를 제공 하는 역할을 하며 기타 부가기능도 제공한다.
- 로드 밸런싱
- 로드 밸런싱 기능을 사용하여 여러 대의 서버를 관리하고, 트래픽 부하를 분산시켜 웹사이트의 가용성과 성능을 향상시키는데 도움을 준다.
- 캐싱
- 이전에 요청된 자원을 캐시하여 다음 요청 시 빠른 응답을 제공할 수 있다.
- 웹 보안
- SSL 인증서를 사용하여 데이터 암호화를 지원하거나 웹사이트에 대한 액세스 제어를 위해 사용자 인증 및 권한 부여를 구현할 수 있다.
- 로깅 및 모니터링
- 웹서버는 요청 및 응답 데이터를 로그 파일에 기록하고, 서버 및 애플리케이션의 상태를 모니터링하여 문제가 발생하면 적시에 대처할 수 있도록 한다.
웹서버의 종류로는 Apache, NginX, IIS 등이 있다.
WAS(웹 애플리케이션 서버) 는
인터넷에서 웹 애플리케이션을 실행하기 위한 소프트웨어이다.
데이터베이스와 상호작용하여 비즈니스 로직을 처리하고 HTML 페이지 / XML 문서 / JSON 데이터 같은 콘텐츠를 동적으로 생성하여 반환하는 역할을 한다.
WAS는 웹서버와 함께 사용되기도 하며 함께 사용할 경우 웹 애플리케이션의 안정성이 높아진다.
사실 웹서버로 알려진 Apache, NginX, IIS 도 WAS의 역할을 수행할 수 있어서 웹서버와 WAS의 경계가 모호하다.
부가 설명
일반적으로 WAS는 Web Server의 기능과 Web Container의 기능을 모두 제공하는 소프트웨어를 말한다.
서블릿 기술을 이용하는 Web Container 를 Servlet Container 라고 하며 서블릿 기술을 이용하지 않으면 Web Container 는 동적인 콘텐츠를 제공할 수 없다.
Web Container 가 서블릿 기술을 이용하지 않고 동적인 콘텐츠를 제공하려면 PHP, Python 과 같은 스크립트 언어로 CGI (Common Gateway Interface) 기능을 하는 프로그램을 개발해야 한다.
따라서 django, node.js 같은 Java 언어가 아닌 다른 언어로 웹 애플리케이션을 개발하는 것들은 WAS로 분류할 수 없다.
결론은 Tomcat / Jetty / Undertow 같은 WAS 로 서블릿을 사용하지 않는다면 Apache / NginX + django / node.js 환경이 낫다.