Web Server는 웹브라우저 클라이언트로부터 HTTP 요청을 받아 정적인 컨텐츠(*.html, *.jpeg, *.css 등
)를 제공하는 서버이다. 오늘날 Web Server는 정적인 컨텐츠 제공 이외에도 다양한 역할이 있는데, 동적인 컨텐츠 제공을 위한 요청 전달하는 Reverse Proxy 기능을 수행하는데, Application Server를 감춰줄 수 있고 로드밸런싱 같은 역할을 해줄 수 있다.
대표적으로 Nginx, Apache Web Server 가 여기에 해당한다.
DB 조회나 다양한 로직 처리를 요구하는 동적인 컨텐츠를 제공하기 위해 만들어진 Application Server HTTP를 통해 컴퓨터나 장치에 애플리케이션을 수행해주는 미들웨어(소프트웨어 엔진)이다. Web Application Server, 줄여서 WAS는 Web Server의 기능 또한 포함하고 있어서 WAS만 사용할 수 있다.
대표적으로는 Tomcat이 있는데, 동적인 로직처리를 담당하는게 WAS라고 하니 Spring Boot도 그러면 WAS 인가? 라는 의문이 든다면, Spring 프레임워크 안에 WAS(Tomcat)가 포함된 것이다.
파이썬으로 웹서버를 개발하다보면, WSGI라는 단어를 필연적으로 보게 된다. WSGI는 무엇일까? WSGI는 Web Server Gateway Interface의 약자로, Python Application(Python Script)이 웹 서버와 통신하기 위한 표준 인터페이스이다. WSGI는 WAS가 아니고, WAS가 되려면 Flask나 Django와 같은 Python Application과 함께 결합되었을 때 WAS라고 할 수 있다.
대표적인 WSGI는 Gunicorn, uWSGI 이 있다.