
Web ?
URL(주소), HTTP(통신 규칙), HTML(내용)Server?
WebServer?
즉 웹서버는 클라이언트가 브라우저에 url을 입력하여 페이지를 요청하면, http 요청을 받아들여 HTML 문서와 같은 정적인 콘텐츠를 사용자에게 전달해주는 역할을 합니다.
여기서 정적컨텐츠?

위의 그림과 같이 Web Server는 Client 로 부터 HTTP 요청을 받을 수 있고 요청에 맞춰 /path/index.html의 파일의 내용을 읽고, HTML 코드 Ex: <h1> 안녕하세요 <h1>의 를 클라이언트에게 전송하여 사용자가 브라우저에서 볼 수 있도록 해야합니다.
즉 WebServer 만으로는 동적인 컨텐츠를 생성할 수 없습니다. 동적인 컨텐츠는 요청에 따라 변화하는 내용으로, 주로 데이터베이스와 상호작용하여 생성됩니다!
따라서 동적인 컨텐츠를 생성하기 위해 WAS를 이용합니다.
사용자가 동적 컨텐츠를 요청할시, Web Application Server(WAS)로 전달하여 WAS가 처리한 결과를 클라이언트에게 전달합니다.
여기서 동적 컨텐츠?
바뀔 수 있는 컨텐츠를 의미합니다.데이터베이스의 조회를 필요로 합니다. 변화하는 내용을 제공하는 웹 페이지의 요소를 의미합니다.
여기서 위의 그림을 보시면 접근하는 ID에 따라서 반응하는 것이 동적으로 달라지는 것을 확인할 수 있습니다.
WAS의 기능?
대부분의 WAS는 WebServer도 내장하고 있습니다)정적 컨텐츠 (html, jpeg, css)를 제공할 수 있습니다. 정적 컨텐츠는 WebServer, 동적 컨텐츠는 WAS가 담당하도록 합니다.로드 밸런싱을 통하여 WAS가 처리해야 하는 요청을 여러 WAS가 나누어서 처리할 수 있도록 할 수 있습니다.여기서 로드 밸런싱이란?
로드밸런싱은 들어오는 클라이언트 요청을 여러 WAS 서버에 분산하여 서버 부하를 균등하게 나누는 기법입니다.
이를 위해 WebServer가 프록시 서버 역할을 하여 클라이언트의 요청을 여러 대의 WAS로 나눠서 전달합니다.
WAS를 여러대 사용?
하나의 물리적 서버 또는 가상 서버에서 Tomcat등을 여러번 설치하고, 각각의 인스턴스를 서로 다른 포트 번호 (예: 8080, 8081, 8082등) 에서 실행합니다.
각 인스턴스는 독립적으로 동작하고 서로 다른 요청을 처리할 수 있습니다.
WebServer(Nginx, Apache)는 들어오는 요청을 여러 개의 Tomcat 인스턴스에 분산하는 역할을 합니다
전체적인 흐름
이를 통해 모든 사용자의 요청을 보다 빠르고 안정적으로 처리할 수 있습니다.
또한 리버스 프록시를 통해 실제 서버를 외부에 노출하지 않을 수 있습니다.
리버스 프록시?
클라이언트의 요청을 받아 내부 서버로 전달하고, 서버의 응답을 클라이언트에 반환하는 중개 서버 역할을 하는 기술입니다.
실제 서버의 IP 주소와 포트 번호를 클라이언트에게 숨길 수 있어 리버스 프록시의 IP 주소만 알게 되므로, 내부 인프라에 대한 공격을 어렵게 만들 수 있습니다.
결론
서비스 확장성과 안정성을 고려한다면 앞 단에 Web Server를 두는 것이 유리합니다.