Web Server와 WAS
Web Server는
클라이언트로 부터 HTTP 요청을 받아 HTML 문서나 각종 정적 컨텐츠(.html, .png, .css)를 전달하는 서버이다. 클라이언트에서 요청이 올 때 가장 앞에서 요청에 대한 처리를 한다. 클라이언트의 요청을 기다리고 요청에 대한 데이터를 만들어서 응답하는 역할 (정적 데이터)
정적 컨텐츠를 요청(request)했으면
- 정적 컨텐츠를 확인하고 => .html, .png 등 응답(response)
- 정적 컨텐츠가 아니면 웹 서버에서 간단히 처리 못해서 WAS에게 처리를 부탁한다. => 결국 WAS가 처리해준 컨텐츠를 받은 웹 서버는 응답(response)을 해준다
WAS(Web Application Server)는
동적 컨텐츠를 제공하기 위해 만들어진 애플리케이션 서버 (DB조회, 로직처리가 요구되는 컨텐츠) Web Server + Web Container 이다. 즉, 이 말은 정적인 컨텐츠와 동적인 컨텐츠 둘다 다룰 수 있는 개념이다.
정적인 페이지에서 처리할 수 없는 비즈니스 로직이나 db 조회 같은 동적인 컨텐츠를 제공한다.
보통 웹 서버 따로 WAS 따로 둔다.
그러면 WAS가 정적인 것과 동적인 걸 둘 다 다루고 있는데 웹 서버를 사용할 필요가 있나? 라고 의문을 가질 수 있다.
따로 써야하는 이유는?
- 기능을 분리하여 서버 부하 방지할 수 있다.
WAS는 DB 조회등 페이지를 만들기 위한 다양한 로직을 처리하는데, 단순한 정적 컨텐츠를 WAS에서 제공한다면 다른 작업에 사용하는 리소스들로 인해 지연이 생겨날 수 있다. 그러므로 정적인 데이터를 처리하는 서버와 동적인 데이터를 처리할 WAS를 따로 둠으로써 서버 기능의 부하를 방지 할 수 있다.
근데 시간이 갈수록 WAS에 있는 웹서버를 사용할 때와 웹서버만 사용하는 아파치 같은 웹서버가 성능차이가 줄어들고 있다.
- 물리적으로 분리하여 보안을 강화할 수 있다. SSL에 대한 암복호화 처리할 때 웹 서버를 사용한다. 즉, 공격에 대해 웹 서버를 앞 단에 두어 중요한 정보가 담긴 DB나 로직까지 (WAS까지) 전파되지 못하게 한다.
- 여러대의 WAS를 연결 가능 웹 서버를 따로 두면 웹 서버 하나에 여러 대의 was를 연결 가능하다. fail over는 웹 서버 하나 두고 was를 여러 개 사용할 수 있는데 하나의 was가 작동을 중지하게 되면 다른 was로 돌릴 수 있으니 다른 서버로 다시 돌린다는 개념이다. fail back은 여러 대의 WAS를 사용할 때 작동이 중지된 서버?(was아니고?)를 재 작동 시킨다.
- 로드밸런싱 서버에 가해지는 부하(=로드)를 분산(=밸런싱)해주는 장치 또는 기술을 통칭한다.
즉, WAS에 웹 서버와 웹 컨테이너가 있는데
실제로는 웹 서버를 따로 두고 WAS에 웹 컨테이너만 넣어서 사용한다.
참고로
컨테이너(Container)는 다른 프로세스와 분리되어 실행되며 하나의 인스턴스라 할 수 있다