개발/web

웹서버와 was

Classical Developer 2024. 4. 24. 16:22

일을 하다 구글링을 하다보면 웹서버(ws)와 웹 어플리케이션 서버(was)라는 단어가 많이 나온다.

처음 봤을때는 그냥 무심하게 지나쳐서 똑같은 건줄 알았는데 공부를 해보니 다른 차이가 있어서 이렇게 블로그를 써본다.

 

Webserver는 클라이언트가 url을 입력하여 페이지를 요청하게 되면 http 요청을 받아들여 html 문서와 같은 정적인 콘텐츠를 사용자에게 전달해 주는것이 특징이다. 동적인 콘텐츠 요청을 받게 되면 자체적으로 처리하기 힘들어 요청을 WAS로 요청하게 된다. 하지만 아예 하지 못한다는 것은 아니고 CGI를 사용해 동적인 요청 처리가 가능하지만 성능 및 보안 문제로 인해 대체 기술이 선호 된다.

 

Web Application Server는 웹서버와 같이 HTTP기반으로 동작하는데 동적인 컨텐츠를 생성하고 실행하기 위한 환경을 제공한다. WAS는 웹 서버와 데이터베이스 서버 사이에서 웹 서버로부터 서버사이드 코드를 받아 클라이언트에게 동적인 콘텐츠를 반환해 준다.

 

즉, 웹 서버는 정적 콘텐츠(HTML 파일, 이미지, CSS파일 등)을 제공하고, WAS는 DB와 연결되어 사용자와 데이터를 주고받고 조작이 필요한 동적인 데이터를 위주로 처리한다.

 

여기서 정적,동적이 어떤 것이냐 찾아봤는데

정적 콘텐츠는 서버에 저장된 파일로, 클라이언트에게 항상 동일한 내용을 제공하는 html파일, 이미지, css, javascript 파일, 폰트 등이 있고,

동적 콘텐츠는 서버에서 생성되거나 계산되어 사용자의 요청이나 외부 요인에 따라 콘텐츠가 동적으로 생성된다. 주로 데이터베이스에서 가져온 정보를 기반으로 생성되는 페이지 등이 포함된다.

 

그렇다면 모두 다 가능한 WAS만 쓰면 되냐?

WAS는 데이터베이스 연결, 트랜잭션 관리, 보안, 스레드 관리 등과 같은 고급 기능을 실행하게 되는데 정적 콘텐츠 요청까지 처리하게 된다면 부하가 커지고 동적 컨텐츠 처리가 지연되어 페이지 노출 시간이 늘어나는 문제가 발생하여 효율성이 크게 떨어지게 된다. 그래서 가장 이상적인 형태는 Clinet -> 웹서버 -> WAS -> DB 형태이다. 그래서 JAVA가 가장 견고한 언어라고 한다.

 

 

그런데 지금에서는 웹 서버와 WAS의 구분이 모호 해졌다고 말한다, 웹 서버에서는 발전된 스크립팅 언어(asp, jsp, php) 플러그인을 지원하고 WAS에서는 웹 서버 기능을 함께 사용해서 구축하는것이 일반적으로 됐기 때문이다. 하지만 규모가 클수록 자원 문제나 "장애 극복 기능"(시스템이 장애 상황에서 계속해서 작동하도록 보장하는 기능)도 있기 때문에 분리하는게 좋을 것 같다.

 

공부를 하면서 적는 거라서 틀린게 있으면 댓글 남겨주세요.

읽어주셔서 감사합니다.