
웹서버는 클라이언트(웹 브라우저)의 요청을 받아들이고, 그 요청에 대한 응답을 제공하는 서버입니다. 웹서버는 인터넷에서 웹페이지를 호스팅하며 주로 HTTP 또는 HTTPS 프로토콜을 통해 클라이언트와 통신합니다.

C10K


리버스 프록시
서버 네트워크의 앞단에 위치한 서버로 로드밸런싱(리소스 풀 전체에 네트워크 트래픽을 균등하게 배포하는 방법), 포트 리워딩, SSL 지원, HTTP 설정 등의 작업을 수행합니다.

동적인 웹 애플리케이션을 실행하고, 사용자 요청을 처리하며, 백엔드 시스템과의 연결을 관리하는 서버입니다. 웹 애플리케이션 서버는 클라이언트(웹 브라우저)와 데이터베이스나 다른 백엔드 시스템 간의 중개 역할을 하며, 주로 비즈니스 로직을 실행하고, 데이터를 처리한 후 클라이언트에게 응답을 제공합니다. WAS는 JSP, Servlet 구동환경을 제공해주기 때문에 웹 컨테이너 혹은 서블릿 컨테이너라고도 합니다. 대표적인 예시로 Tomcat이 있습니다.



웹서버는 CGI(Common Gateway Interface)를 통해 동적 컨텐츠를 웹서버 내에서 제공 가능합니다. 이를 통해 웹서버는 웹어플리케이션서버 없이도 동적인 컨텐츠를 제공 가능합니다. 웹어플리케이션 서버 또한 정적인 컨텐츠를 제공하는 웹서버의 역할을 수행 가능합니다.
하지만 앞서 설명했듯이 웹서버와 웹어플리케이션서버는 용도가 다르며 이를 분리했을 시에 자원을 효율적으로 사용 가능하기에 둘을 함께 이용합니다. 사용자의 요청에 맞게 적절한 동적 컨텐츠를 만들어 제공하기 위해 웹서버만을 이용한다면 사용자가 원하는 요청에 대한 결과값을 모두 미리 만들어두고 서비스를 해야합니다. 이는 자원의 부족을 초래하게 됩니다. 또한 WAS에서 WS 없이 단독으로 사용하게 된다면 정적 컨텐츠 요청까지 처리할 시에 부하가 커지고 동적 컨텐츠 처리가 지연되며 페이지 노출 시간이 늘어나는 등의 서버 부하가 발생할 수 있다.
WAS를 WS와 함께 사용했을 시에 장점
1. 웹서버는 정적 컨텐츠를 도맡고 웹어플리케이션서버는 동적 컨텐츠에 집중시킴으로써 서버 부하를 방지
2. 보안 강화 : SSL에 대한 암복호화 처리에 웹서버를 사용
3. 로드 밸런싱 : 웹 서버는 여러 개의 웹 애플리케이션 서버와 연결하여 트래픽을 분산함
4. 유연한 관리와 확장성: 웹 서버를 통해 트래픽을 관리하면, 새로운 WAS를 쉽게 추가하거나, 특정 WAS에 대한 유지보수 작업을 수행할 때도 클라이언트에게 영향을 최소화할 수 있음
5. 캐싱과 성능 최적화: 웹 서버는 정적 콘텐츠의 캐싱을 통해 클라이언트 요청에 대해 더 빠른 응답을 제공할 수 있음
웹서버에는 Apache가 존재하고 웹어플리케이션서버에는 Tomcat이 존재하는데 Apache Tomcat은 무엇일까라는 의문이 든적이 있을 것입니다. 해당 내용이 정리된 블로그에 따르면 2008년에 릴리즈 된 Tomcat 5.5버전부터 정적 컨텐츠를 처리하는 기능이 추가되었는데, 이 기능이 순수 Apache를 사용하는 것에 비해 성능적 차이가 전혀 없으며 Tomcat이 Apache의 기능을 포함하고 있기 때문에 Apache Tomcat이라고 부르고 있습니다.
https://findmypiece.tistory.com/332
https://thinkj.in/network/%EC%9B%B9%EC%84%9C%EB%B2%84%EC%99%80-nginx.html?mark=nginx
https://developer.mozilla.org/ko/docs/Learn/Common_questions/Web_mechanics/What_is_a_web_server
https://codechasseur.tistory.com/25