처음에 면접을 준비하면서 차이를 간단하게 준비하면서 궁금한 점이 생겨서 이렇게 따로 블로그를 준비하게 됐다.
이유는 아래와 같다
차이는 비지니스 로직이 있고 없고의 차이이다!
라고 이렇게 간단하게만 되어있었기 때문에 평소에 무척이나 궁금했고 이러한 부분을 간단하게 나마 글을 통해서 정리하고 좀 더 기억속에 간직하고자 한다.
웹 서버는 클라이언트(사용자)가 브러우저 주소창에 url을 입력하여 어떤 페이지를 요청하면, http 요청을 받아들여 HTML문서와 같은 정적인 콘텐츠를 사용자에게 전달해주는 역할을 한다.
[대표적 임무]
1. 저장된 웹 리소스들을 클라이언트에게 전달하고, 클라이언트로부터 콘텐츠를 전달받아 저장하거나 처리
2. 동적인 요청은 WAS에게 요청
이렇게 말을 한다면 다소 이해하기가 어려울 수 있다. 근데 예시를 들면 설명이 가능하다. 우리가 개발하다 보면 Apache, Nginx가 WS의 종류들인데 이러한 서버를 키면 대표적인 정적 html들을 볼 수 있다.
특히나 Nginx같은 경우 서버를 설치하게 된다면 nginx 홈페이지를 볼 수 있다.
WAS는 WS와 마찬가지로 HTTP기반으로 동작한다. 웹 서버가 할 수 있는 기능 대부분이 WAS에서도 처리가 가능하다. 가능한 이유는 비지니스 로직(서버 사이드 코드)을 통해서 가능하다. 여기서 동적인 컨텐츠를 제공하는 것이 유일한 차이인데 이유는 주로 데이터베이스 서버와 같이 수행되기 때문이다.
즉 웹 애플리케이션과 서버 환경을 만들어 동작시키는 기능을 제공하는 소프트웨어 프레임워크이다.
주로 대표적인 WAS의 종류는 : Tomcat, JBoss, Jeus, Wep Sphere가 있다.
📌 생각해보면 우리가 무심결에 Spring으로 개발할 때 Tomcat과 같은 서버도 함께 내장되어 있다.
위 개념을 인지하고 보면 이 둘의 차이는 그렇게까지 어려운 개념이 아니였다는 생각이다.
WS : 정적인 데이터를 처리하는 서버이며 이미지나 단순 html같은 정적인 리소스들을 전달한다.
WAS : 동적인 데이터를 위주로 처리하는 서버이다.
📌 위 개념을 바탕으로 그렇다면 WAS만 쓰면 되지 않냐는 의문에 빠질 수 있다.
하지만 WAS는 DB조회 및 다양한 로직을 처리하는 데 집중해야 한다. 그렇기에 단순한 정적 콘텐츠는 웹서버에게 맡기고, 기능을 분리해 서버 부하를 방지해야 한다.
만약 정적과 동적 콘텐츠를 모두 한번에 처리를 하게된다면 부하는 커지면서 동적 처리속도는 저하되기 마련이다. 그렇기에 효율성이 크게 떨어지게된다.
우리는 이러한 차이를 알았으니 Apache Tomecat 기반으로 설명을 덧붙여볼려고 한다.
https://velog.io/@kdhyo/Apache-Tomcat-%EB%91%98%EC%9D%B4-%EB%AC%B4%EC%8A%A8-%EC%B0%A8%EC%9D%B4%EC%A7%80
https://yozm.wishket.com/magazine/detail/1780/