
클라이언트로부터 HTTP 요청을 받아들이고, 해당 요청에 대한 정적인 컨텐츠(이미지, 영상, 웹페이지, ...)를 제공하는 소프트웨어이다. 동적 데이터에 대한 요청을 받을 시에는 요청을 WAS(Web Application Server)로 전달하여 처리한다.
대표적인 웹 서버로는 Apache, Nginx 등이 존재한다.
클라이언트의 요청을 받아 내부에 구현된 비즈니스 로직, 데이터베이스의 상호작용 등에 따라 생성된 동적인 컨테츠를 제공하는 소프트웨어이다.
대표적인 웹 애플리케이션 서버로는 Tomcat, Red Hat JBoss 등이 존재한다.
DB와 상호작용하고, 데이터를 가공하여 제공하는 역할을 담당한다.
대표적으로 Spring Boot, Django, Flask 등이 존재한다.
cf. 스프링 부트에는 Tomcat, Jetty, Undertow 같은 WAS가 내장되어 있어 별도의 WAS 설정 없이 스프링 애플리케이션을 실행할 수 있다.
WAS는 주로 데이터베이스와의 상호작용을 통해 컨텐츠들을 제공하는데, 굳이 데이터베이스와의 상호작용이 필요한지 않은 정적 데이터를도 WAS에서 처리하게 되면 서버의 부하가 발생할 가능성이 크다.
따라서 정적 컨텐츠는 Web Server에서, 동적 컨텐츠는 WAS에서 처리하는 것이 효율적이다.
출처 : https://velog.io/@ikswary/%EC%9B%B9%EC%84%9C%EB%B2%84-%EA%B5%AC%EC%A1%B0