카테고리 없음

WAS, 웹 서버, 웹 컨테이너 확실히 알아보자!

luana_eun 2022. 2. 24. 11:46
728x90

개발 공부를 하다보면 WAS, Web Server, Web Container 이 세 단어가 많이 보인다. 

대충 서버라는 느낌은 알겠는데... 정확히 무슨차이가 있는지 확실히 알아야 앞으로의 공부를 할 수 있을것 같아서 

이번기회에 제대로 알아봤다.

 

 

웹 서버(Web Server)

정의

웹과 서버가 합쳐진 말. 웹과 서버가 뭔지 간단하게 정의해보자. 

     웹: 인터넷을 기반으로 한 정보 검색, 공유 등을 하는 서비스

     서버: 다른 컴퓨터에 서비스를 제공하는 컴퓨터 

=>그럼 웹 서버는? 웹이라는 서비스를 제공하는 컴퓨터 라고볼 수 있다.

 

웹 서비스를 제공하는 컴퓨터라는건 즉, 우리가 집에서 쓰고있는 컴퓨터도 얼마든지 웹서버가 될 수 있다는 말이다.

웹서버 프로그램을 깔고 포트번호, HTML파일 디렉터리 등을 지정하면 우리가 가지고있는 컴퓨터도 웹서버가 될 수 있다. 

 

웹서버가 하는 일

클라이언트가 주소(URL)와 통신규약(HTTP)를 가지고 내용(HTML)을 요구하면

서버측은 웹에서 처리할 수 있는 정적인 데이터(HTML, CSS, 이미지 등)을 응답한다.

=> 여기서 중요한 건 바로 정적인 데이터를 응답한다는 것이다. 
     HTML은 프로그래밍 언어가 아니기에 DB에서 정보를 가져오는 동적인 데이터는 처리하지 못한다. 
     웹서버가 못하는 동적인 데이터를 처리할 무언가가 필요한데, 그게 바로 Web Container또는 WAS다. 
 

종류)  Apache, Nginx, IIS(Windows 전용 Web 서버) 등


 

웹 컨테이너(Web Container)

정의

Servlet, JSP를 실행할 수 있는 소프트웨어.

JSP와 서블릿을 사용하는 즉, 자바 언어를 사용하는 웹 서버에서 필요한 소프트웨어다. 

하는 일

Servlet은 독자적으로 실행하지못해서 관리해줄 웹 컨테이너가 필요하다고 다른 포스트에서 적은적이 있다. 

              (Servlet이 무엇이며, 어떻게 동작할까? -> https://luanaeun.tistory.com/128 )

- 웹 서버에서 자바언어가 동작할 수 있도록, 서블릿이 동작할 수 있도록 환경을 제공한다. 

- 웹서버에서 건네준 URL에 맞는 서블릿클래스나, JSP파일을 실행하여 그 결과를 다시 웹서버에 넘긴다

   => 웹서버가 못하는 동적데이터 처리를 대신하고 건네주는 것.

 

웹 컨테이너와 웹서버의 관계를 그림으로 표현해봤다. 

웹 서버와 웹 컨테이너의 관계

 


 

WAS( Web Application Server )

정의

Web Server와 Web Container가 합쳐진 것. 

정적인 데이터와 동적인 데이터 둘다 처리가 가능하다. 

DB 조회나 다양한 로직 처리를 요구하는 동적인 컨텐츠를 제공하기 위해 만들어진 Application.

 

초반에는 동적데이터를 위한 목적이 커서 정적 데이터를 처리하는데는 좀 부족했는데,

현재는 WAS가 제공하는 웹서버도 정적데이터를 아주 잘 처리해서 성능상 비슷하다. 

 

 

하는 일

- 웹 컨테이너와 하는일을 포함한다. 

  웹 컨테이너는 자바를 위한 것이고, WAS는 그보다 더 큰 개념이라고 생각하면 된다. 

- 분산 트랜잭션, 보안, 메시징, 쓰레드 처리 등의 기능을 처리하는 분산 환경제공.

 

 

종류

Tomcat, tMax jeus, BEA Web Logic, Oracle, pptivity 등등

WAS = Web Server + Web Container

 

 

궁금증

정적, 동적인 데이터 둘다 처리할 수 있는 WAS가 있는데, 왜 Web Server를 따로 쓸까??

실제로, Web Server와 WAS를 분리해서 많이 사용한다. 

WAS가 혼자 다 할 수 있는데도 따로 분리해서 쓰는 이유는 효율성과 보안이 좋기 때문이다. 

 

일을 나눠서 하면 서버가 부하되는것을 방지한다. 

정적컨텐츠, DB연결, 동적콘텐츠 조회까지 WAS가 담당하기에는 비효율적이고 시간이 지연된다. 

따라서 정적/동적을 나누어 웹서버는 정적만, WAS는 동적만 처리하도록 해서 효율성을 높인다. 

 

보안을 높인다. 

DB에는 중요한 데이터들이 많기때문에 DB와 직접연결하는 서버는 한번 더 감싸는것이 좋다. 

따라서 물리적으로 웹서버와 WAS를 나누어서 클라이언트 사이에 분리를 하여 보안을 높인다. 

Web Server와 WAS 분리

 

728x90