티스토리 뷰

Network

[Network]Web Server & WAS

heyhyo 2018. 7. 2. 12:57

클라이언트가 서버에게 어떤 페이지를 요청한다. 그럼 서버는 그 페이지를 클라이언트에게 전송해준다. 클라이언트가 요청하는 페이지는 크게 두 종류가 있다.



정적 페이지(Static Page)


HTML파일과 CSS파일, 이미지파일과 같이 어떠한 클라이언트에서 요청해도 동일한 결과를 보여주는 페이지이다.


동적 페이지(Dynamic Page)


PHP파일, JSP파일이 대표적으로 존재하며, 일정한 데이터의 처리가 필요한 페이지이다. DB에 저장된 특정한 정보를 가져와서 동적으로 생성된 페이지를 뜻한다. 이 페이지는 사용자마다의 데이터가 구별되어 다른 페이지를 보여주게 된다.


서버에서 위의 두 페이지를 처리하는 방식이 같을 수는 없을 것이다. 정적 페이지는 어떤 특정한 처리과정이 없어 전송만 해줘도 되지만, 동적 페이지는 DB에서 데이터를 가져와서 페이지를 생성해줄 필요가 있어진다. 그래서 웹 서버와 WAS가 나타난 것이다.




웹 서버(Web Server)



웹 서버(Web Server)는 클라이언트의 요청에 정적인 컨텐츠들을 HTTP 프로토콜을 이용하여 제공해주는 서버를 뜻한다. 여기서 정적인 컨텐츠라고 하면 위에서 말했듯이 HTML파일과 CSS파일 그리고 이미지나 동영상 같은 데이터들이 있다. 그리고 클라이언트의 요청이 정적인 컨텐츠가 아닌 동적인 페이지를 요구한다고 하면, 그것들을 처리할 수 있는 컨테이너(Container)로 전달해주는 역할도 한다.


Web Server에는 대표적으로 Apache HTTP Server, IIS가 있다.




컨테이너(Container)



컨테이너는 동적인 데이터들을 처리하여 정적인 페이지로 생성시켜주는 소프트웨어 모듈이다. 웹 컨테이너(Web Container), 서블렛 컨테이너(Servlet Container)라고도 부른다. 위에서 말했듯 PHP, JSP, ASP등의 요청은 웹 서버에서는 처리할 수 없는 형태의 파일이기 때문에 이를 서버로 부터 전달받아 처리된 결과를 다시 웹 서버로 전달하는 역할을 한다.


* 서블렛(Servlet)이란 웹페이지를 동적으로 생성해주는 소프트웨어이다. 위의 컨테이너와 동일한 개념으로 이해할 수 있다. 보통 자바 서블렛이라는 말을 많이 사용한다.




WAS



WAS(Web Application Server)는 웹 서버로 부터 오는 동적인 요청들을 처리할 수 있는 서버를 뜻한다. 클라이언트에서 .php파일이나 .jsp파일 등을 요청하게 되면 데이터베이스에 접근하여 데이터를 가져와야하는 동적인 처리가 필요하게 된다. 따라서 이런 것들을 처리하여 정적인 HTML페이지를 생성하고 클라이언트에게 응답하는 역할을 한다. 웹 서버의 기능을 WAS에 포함하고 있다고 한다. 따라서 WAS의 형태는 아래와 같다.






WAS = Web Server + Container


즉 WAS는 정적인 데이터를 웹 서버를 통해 처리할 수 있고, 동적인 데이터를 웹 컨테이너에서 처리할 수 있다.


WAS는 대표적으로 자바 서블릿을 지니고 있는 Apache Tomcat과 php기반으로 구성된 php-fpm이 존재한다.




동작방식



1. 클라이언트에서 HTML파일을 요청





클라이언트에서 정적인 컨텐츠(HTML)를 요청하면 웹 서버는 정적인 데이터를 제공해 줄 수 있기 때문에 클라이언트에게 직접 전송해 줄 수 있다.




2. 클라이언트에서 PHP파일을 요청





클라이언트에서 동적 컨텐츠(PHP)를 요청하면 웹 서버에서는 처리할 수 없다. 그래서 이 동적 컨텐츠를 처리할 수 있는 웹 컨테이너로 이 파일을 전달하게 되고, 이를 처리하여 정적 컨텐츠(HTML)를 다시 웹 서버에게 전송해준다. 이 과정이 되면 웹 서버는 이 생성된 정적 컨텐츠를 클라이언트에게 전송해준다.




WAS는 만능이다?



위의 경우를 보면 굳이 웹 서버는 사용할 필요가 없어보인다. 웹 서버는 단지 정적인 컨텐츠만 제공할 수 있기 때문이다. 최근 웹 서비스들을 보면 모두 사용자 중심의 동적인 페이지로 제작되는 것이 일반적이다. 그렇다면 정말 웹 서버는 필요없는 존재인가?


하물며 WAS안에 정적 컨텐츠, 동적 컨텐츠 모두를 처리할 수 있도록 웹 서버와 웹 컨테이너가 포함되어 있고, 정적인 컨텐츠를 처리하는데에 웹 서버보다 성능이 떨어지는 것도 아니다. 그렇다면 구지 웹 서버를 따로 두는 이유는 무엇일까 정리해 보았다.


1. WAS를 설치하면 그 WAS에서 처리할 수 있는 언어가 한정되어 있다.


만약에 서버에 WAS의 한 종류인 Apache Tomcat만 설치했다고 가정하면, 이 웹 서버는 오로지 자바 서블릿을 통한 JSP만을 처리할 수 있다. 서버에서는 때에 따라서 다양한 언어를 사용하기 마련이다. 이 웹 서버에서는 다른 언어인 PHP를 처리할 수 없다. 따라서 이런 경우에는 웹 서버(Apache)를 두고 PHP를 처리할 수 있는 컨테이너를 설치하여 클라이언트로 부터 들어온 요청이 어느 것인가에 따라서 처리하는 컨테이너를 다르게 지정해 줄 필요가 있다. 이럴 경우에 웹 서버는 반드시 필요하게 된다.


2. 로드 밸런싱으로 부하를 분산한다.


로드 밸런싱이라는 기술은 서버로 들어오는 여러 클라이언트의 요청을 여러개의 동일한 서비스가 설치된 서버가 나누어서 처리하는 것이다. 이 기술을 사용할 때 각 요청을 분산시켜주는 서버를 하나 앞에 두게 된다. 이 서버는 단지 요청이 들어오면 여러개의 서버중 어느 서버로 연결해줄 것인지를 결정해 주는 역할만 하기 때문에 컨테이너가 필요없다. 따라서 웹 서버만 설치하여 정적 데이터만 처리하도록하면 충분하다. 굳이 WAS를 설치하여 리소스의 낭비를 할 필요가 없다.







참고



http://gap85.tistory.com/entry/WAS-%EC%99%80-%EC%9B%B9%EC%84%9C%EB%B2%84-%EC%9D%98-%EC%B0%A8%EC%9D%B4

http://jeong-pro.tistory.com/84

http://sungbine.github.io/tech/post/2015/02/15/tomcat%EA%B3%BC%20apache%EC%9D%98%20%EC%97%B0%EB%8F%99.html

http://unabated.tistory.com/entry/WAS%EC%99%80-%EC%9B%B9%EC%84%9C%EB%B2%84Web-Server-%EC%9D%98-%EC%B0%A8%EC%9D%B4

http://parkbrother.tistory.com/entry/Web-%EC%84%9C%EB%B2%84%EC%99%80-Was-%EC%84%9C%EB%B2%84%EC%9D%98-%EC%B0%A8%EC%9D%B4%EC%97%90-%EB%8C%80%ED%95%B4%EC%84%9C-%EC%95%8C%EC%95%84%EB%B3%B4%EC%9E%90

https://ko.wikipedia.org/wiki/%EC%9E%90%EB%B0%94_%EC%84%9C%EB%B8%94%EB%A6%BF

https://ko.wikipedia.org/wiki/%EC%95%84%ED%8C%8C%EC%B9%98_HTTP_%EC%84%9C%EB%B2%84

https://ko.wikipedia.org/wiki/%EC%95%84%ED%8C%8C%EC%B9%98_%ED%86%B0%EC%BA%A3

http://server-talk.tistory.com/118

'Network' 카테고리의 다른 글

[Network]DNS Server(Domain Name System Server)  (0) 2018.09.05
[Network]네트워크 클래스(Network Class)  (0) 2018.08.31
[Network]서브넷(Subnet)  (15) 2018.08.31
[Network]IP 주소(IP Address)  (2) 2018.07.10
[Network]3-Way Handshake  (0) 2018.06.27
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함