역시나 기초지식이 전무하기에 간단하게 상위 개념부터 알아보겠다.
우리는 웹 브라우저에 https://www.tistory.com/skin 과같은 URL을 치면 티스토리 웹 페이지가 화면에 딱 나온다.
어떤 과정을 거쳐 나오게 되는 걸까?
간단한 용어 정리
클라이언트 : 네트워크에서 요청하는 쪽 ex) URL을 요청하는 웹 브라우저 또는 그런 브라우저를 돌리는 컴퓨터
서버 : 요청을 받아 알맞은 기능이나 데이터를 제공하는 쪽 ex) 요청을 받아 응답을 하는 웹 서버 또는 서버 프로그램이 실행되는 컴퓨터
웹 브라우저에 URL을 입력하면 웹 서버라 불리는 프로그램이 웹 브라우저에 웹 페이지를 제공한다. 하지만 웹 브라우저와 웹 서버는 각각 다른 컴퓨터에 위치한다. 예를 들어, 집 PC에서 웹 브라우저에 URL을 요청하면 그 URL을 받을 웹 서버는 다른 컴퓨터에서 실행 되고 있다. 그래서 웹 브라우저가 웹 서버에 연결하려면, 웹 서버가 실행중인 컴퓨터의 IP주소를 알아야 한다.
IP 주소는 숫자로 구성되어 있고 ex)180.70.134.239 그래서 외우기가 힘들다. 이런 이유로 tistory.com 와 같이 도메인 이름을 사용한다. 하지만 연결하기 위해서는 IP주소가 필요하므로 DNS를 이용한다 DNS는 도메인 이름과 IP주소를 저장하고 있는 데이터 베이스로 웹 브라우저가 URL을 요청할 때 그 도메인에 맞는 IP주소를 제공한다.
이러한 과정으로 클라이언트가 요청을 하면 그 요청에 맞게 웹 서버가 응답한다.
처음에 웹 서버에 대해 알아볼 때 어떻게 클라이언트와 웹 서버가 통신을 하는지 궁금해서 알아본 내용이다.
이제부터 본격적인 주제인 웹 서버와 웹 어플리케이션 서버 (WAS)에 대해 알아보자!
웹 서버 (Web Server)
클라이언트(웹 브라우저)로 부터 HTTP 방식으로 정적인 자원을(html, css, 이미지 등) 요청 받아 그에 맞는 응답을 제공해주는 프로그램 이다. 또 자체적으로 처리할 수 없는 동적인 자원(JSP, PHP, ASP.net, DB연동 등)을 웹 컨테이너로 넘겨주고 컨테이너에서 처리한 결과를 다시 받아 클라이언트에게 제공해주는 역할을한다.
대표적으로 Apache, IIS(Internet Information Server), WebtoB 등이 있다.
*정적/동적 자원의 차이: 전자는 네이버에서 네이버 로고같이 파일이 바뀌기 전까지 같은 내용을 보여주는 것 이고
실시간 검색순위 같이 시간이나 특정 조건에 따라 응답 데이터가 달라지는 자원을 후자라고 한다.
컨테이너 (Containner)
웹 서버가 보낸 JSP, PHP, ASP.net등의 파일을 실행하고 수행 결과를 다시 웹 서버로 보내주는 역할을 한다.
대표적으로 자카르타 톰캣, RESIN, 웹로직, 웹투비 등이 있다.
웹 어플리케이션 서버 (Web Application Server)
웹 서버와 웹 컨테이너가 합쳐진 형태.
인터넷 상에서 HTTP를 통해 어플리케이션을 수행해 준다. 동적 서버 콘텐츠를 수행하는 것으로 일반적인 웹 서버와 구별이 되며 주로 데이터베이스 서버와 같이 수행이 된다.
대표적으로 톰캣 BEA사의 Web Logic, IBM사의 Web Sphere, T-max사의 Jeus, Redhot사의 JBoss 등이 있다.
웹 서버와 WAS는 동적 컨텐츠를 직접 수행할 수 있는가? 로 차이점을 둘 수 있겠다.
그럼 WAS 만 쓰면 되지 않는가????
많이 쓰는 아파치 톰캣으로 설명 하겠다.
WAS 에는 웹 서버와 웹 컨테이너가 모두 있어 문제가 없어보인다. 하지만 과거 톰캣5.5 이하때는 WAS 가 단독으로 정적,동적 처리를 하면 부하가 많이 걸려 서버의 부담이 늘어 속도 저하가 있었다. 그래서 대규모의 서버는 톰캣을 단독으로 사용하지 않고 아파치를 앞에 두었다.
하지만 5.5버전 이상의 톰캣은 httpd의 native 모듈을 사용하여 정적인 페이지를 처리하는 기능을 제공하기에 완전히 아파치와 동급의 속도를 자랑한다. 그러면 단독으로 써도 되지 않는가????
답은 아니다.
톰캣은 특성상 java언어만 해석 가능하기 때문에 JSP같은경우 처리를 하지만 PHP는 실행이 불가능하다. 따라서 하나의 서버에서 JSP PHP를 모두 사용하고 싶다면 아파치와 톰캣 모두 사용해야 한다.
++로드밸런싱을 위해서도 같이 사용한다는데 추후 알아볼예정
참고
http://jeong-pro.tistory.com/84
'개념' 카테고리의 다른 글
[Windows10] 윈도우10 hosts파일 수정하기 (0) | 2019.01.22 |
---|---|
Jsp Php Asp ? (1) | 2018.07.27 |
TCP 3 Way-Handshake (0) | 2018.06.27 |
유니코드와 utf-8 utf-16 (3) | 2018.06.26 |
Base64 (0) | 2018.06.26 |