본문 바로가기
개발일지/Web(웹)

Web Server와 WAS

2022. 4. 13.

Web Server

클라이언트로 부터 HTTP 요청을 받아 HTML 문서나 각종 정적 컨텐츠(.html, .png, .css)를 전달하는 서버이다. 클라이언트에서 요청이 올 때 가장 앞에서 요청에 대한 처리를 한다. 클라이언트의 요청을 기다리고 요청에 대한 데이터를 만들어서 응답하는 역할 (정적 데이터)

정적 컨텐츠를 요청(request)했으면

  1. 정적 컨텐츠를 확인하고 => .html, .png 등 응답(response)
  2. 정적 컨텐츠가 아니면 웹 서버에서 간단히 처리 못해서 WAS에게 처리를 부탁한다. => 결국 WAS가 처리해준 컨텐츠를 받은 웹 서버는 응답(response)을 해준다

Web Server가 필요한 이유는

클라이언트는 HTML 문서를 먼저 받고 그에 맞게 필요한 이미지 파일들을 다시 서버로 요청하면 그때서야 이미지 파일을 받아온다.
Web Server를 통해 정적인 파일들을 Application Server까지 가지 않고 앞단에서 빠르게 보내줄 수 있다.
따라서 Web Server에서는 정적 컨텐츠만 처리하도록 기능을 분배하여 서버의 부담을 줄일 수 있다.

 

WAS(Web Application Server)는

동적 컨텐츠를 제공하기 위해 만들어진 애플리케이션 서버 (DB조회, 로직처리가 요구되는 컨텐츠) Web Server + Web Container 이다.

즉, 이 말은 정적인 컨텐츠와 동적인 컨텐츠 둘다 다룰 수 있는 개념이다.

정적인 페이지에서 처리할 수 없는 비즈니스 로직이나 db 조회 같은 동적인 컨텐츠를 제공한다.

 

WAS가 필요한 이유는

웹 페이지는 정적 컨텐츠와 동적 컨텐츠가 모두 존재하는데 사용자의 요청에 맞게 적절한 동적 컨텐츠를 만들어서 제공해야 한다.
이때, Web Server만을 이용한다면 사용자가 원하는 요청에 대한 결과값을 모두 미리 만들어 놓고 서비스를 해야 한다.
하지만 이렇게 수행하기에는 자원이 절대적으로 부족하다.
따라서 WAS를 통해 요청에 맞는 데이터를 DB에서 가져와서 비즈니스 로직에 맞게 그때 그때 결과를 만들어서 제공함으로써 자원을 효율적으로 사용할 수 있다.

 

보통 웹 서버 따로 WAS 따로 둔다.

그러면 WAS가 정적인 것과 동적인 걸 둘 다 다루고 있는데 웹 서버를 사용할 필요가 있나? 라고 의문을 가질 수 있다.

따로 써야하는 이유는?

 

webServer와 was

  1. 기능을 분리하여 서버 부하 방지할 수 있다.

WAS는 DB 조회등 페이지를 만들기 위한 다양한 로직을 처리하는데, 단순한 정적 컨텐츠를 WAS에서 제공한다면 다른 작업에 사용하는 리소스들로 인해 지연이 생겨날 수 있다. 그러므로 정적인 데이터를 처리하는 서버와 동적인 데이터를 처리할 WAS를 따로 둠으로써 서버 기능의 부하를 방지할 수 있다.

근데 시간이 갈수록 WAS에 있는 웹서버를 사용할 때와 웹서버만 사용하는 아파치 같은 웹서버가 성능차이가 줄어들고 있다.

  1. 물리적으로 분리하여 보안을 강화할 수 있다. SSL에 대한 암복호화 처리할 때 웹 서버를 사용한다. 즉, 공격에 대해 웹 서버를 앞 단에 두어 중요한 정보가 담긴 DB나 로직까지 (WAS까지) 전파되지 못하게 한다.
  2. 여러대의 WAS를 연결 가능 웹 서버를 따로 두면 웹 서버 하나에 여러 대의 was를 연결 가능하다. fail over는 웹 서버 하나 두고 was를 여러 개 사용할 수 있는데 하나의 was가 작동을 중지하게 되면 다른 was로 돌릴 수 있으니 다른 서버로 다시 돌린다는 개념이다. fail back은 여러 대의 WAS를 사용할 때 작동이 중지된 서버?(was아니고?)를 재 작동 시킨다.
  • 로드밸런싱은 서버에 가해지는 부하(=로드)를 분산(=밸런싱)해주는 장치 또는 기술을 통칭한다.

즉, WAS에 웹 서버와 웹 컨테이너가 있는데

실제로는 웹 서버를 따로 두고 WAS에 웹 컨테이너만 넣어서 사용한다.

참고로

컨테이너(Container)는 다른 프로세스와 분리되어 실행되며 하나의 인스턴스라 할 수 있다

 

Web Server 종류

Apache Server, Nginx 등

WAS 종류

tomcat, JBoss, JEUS 등

 

https://gmlwjd9405.github.io/2018/10/27/webserver-vs-was.html

'개발일지 > Web(웹)' 카테고리의 다른 글

카프카 커넥트 설치 및 설정하기(Windows)  (1) 2022.09.01
CORS란  (0) 2022.02.13