웹동작원리(Q. 웹서버와 웹어플리케이션의 차이는?/Q. 서블릿이란?)

굥굥이·2022년 4월 27일
0
post-thumbnail

1. Static Pages와 Dynamic Pages

  • Static Pages : 바뀌지 않는 page ( ex : GET /path/index.html)
  • Dynamic Pages : 인자에 따라 바뀌는 page ( ex : GET /srv/pkg.Servlet?uid=Alice)
    • 서블릿을 이해하기 위한 흐름 : html -> servlet(+Container) -> jsp
      (HTML은 정적인 웹페이지만 구현이 가능했는데, 이를 Java를 통해 동적 웹페이지를 작성하기 위해 나온 것이 Servlet class이다.)
    • Servlet : Dynamic Web Page를 만들 때 사용되는 자바 기반의 웹 애플리케이션 프로그래밍 기술이다. html이 정적 데이터 전달 도구로서의 형식이었다면, 서블릿은 자바클래스의 일종으로서 동적으로 서비스를 제공한다. 참고로 서블릿이란 단어는 Server와 Applet의 합성으로, '클라이언트에게 서비스를 제공하는 작은 단위의 서버 프로그램'을 뜻한다.
    • JSP(Java Server Page) : 서블릿의 기능 중 화면 부분을 디자이너가 쉽게 작업하기 위해 JSP가 등장하였다. JSP 파일에서는 HTML로 작성된 문서 안에 <% %> , <%= %> 등의 바구니 안에 자바코드를 삽입할 수 있다.
      서블릿과의 간단한 차이를 말하고자 하면, 서블릿은 JAVA코드안에 HTML코드를 넣는거고, JSP는 HTML코드안에 JAVA코드를 넣는 것이다.

2. 웹서버(Web Server)와 웹어플리케이션서버(Web Application Server)

  • 웹 클라이언트(Web Client) : 사용자가 웹에 접근하는 프로그램이다. (ex : Internet Explorer, Chrome, ...)
    • 브라우저에 url을 입력하고 엔터키를 누르면, 클라이언트는 url에 대한 정보를 찾아 HTTP 메시지 형태로 서버에게 요청(Request)한다.
    • 사용자가 검색창에 특정 사이트의 주소를 입력하면, 웹 클라이언트가 DNS에게 특정 사이트의 (도메인)주소를 요청하면, DNS가 웹 브라우저에게 사이트의 IP주소를 응답하고, 이 IP주소를 웹서버에게 요청한다!
  • 웹 서버(WS : Web Server) : 클라이언트의 요청을 서비스 하는 기능을 담당하고, 정적인 컨텐츠를 응답하는 서버. (ex : Apache Web Server, GWS, IIS)
    • HTTP 프로토콜을 기반으로 한다. HTTP 메시지를 확인한 후, 이에 맞는 데이터를 처리한 뒤에 다시 클라이언트에게 응답(Response)한다.
    • 기능 1 : WAS를 거치지 않고, 정적인 컨텐츠 제공(ex : HTML, CSS, JS, Image)
    • 기능 2 : 동적인 컨텐츠 제공을 위한 요청 전달(요청을 WAS에 보내고, WAS가 처리한 결과를 클라이언트에게 전달)
  • 웹 어플리케이션 서버(WAS : Web Application Server) : DB 조회나, 다양한 로직 처리를 요구하는 동적인 컨텐츠를 응답하는 서버. (ex : Tomcat, JBoss, Jeus, Web Sphere)
    • 웹 서버와 컨테이너를 붙여놓은 서버라고 보면 된다.
    • 컨테이너(웹 컨테이너) : 동적인 데이터들을 처리하여 정적인 페이지로 생성해주고, Servlet Class 또는 JSP 파일을 실행하기 위한 실행 환경을 제공하는 역할을 한다.
      (Servlet Class에 대한 Web Container를 Servlet Container, JSP 파일에 대한 Web Container를 JSP Container 이라고 한다. 하지만 보통 둘을 혼용해서 Web Container라고 한다.) 추가로 서블릿을 컨트롤(제어)한다.
      WAS별로 다양한 종류의 컨테이너를 내장하고 있다. (Tomcat은 JSP / Servlet Container의 기능을 구현했으나 EJB Container로서의 기능은 없다.)
  • DB(Data Base) : 데이터의 정보를 저장하는 곳이며 WAS에서 데이터를 요청하면 필요한 데이터를 응답한다. WAS에서 로직을 수행하다가 DB접근이 필요하면 SQL질의를 통해 데이터를 요청하고, DB는 요청사항에 맞는 응답을 보낸다.

3. 배운 지식을 정리하고, 보충해보자.

웹 서버와 웹 어플리케이션 서버의 차이는 어떤 차이의 컨텐츠(동적, 정적)를 제공하냐는 것이고, 웹 서버와 웹 어플리케이션 서버는 각각 독립적으로 존재할 수 있다. 대부분의 웹 어플리케이션 서버는 정적인 컨텐츠를 제공해주고 있기 때문에, 웹 서버 없이 웹 어플리케이션 서버만 존재할 수 있다.
=> 즉, 웹 어플리케이션 서버(AWS)는 웹 서버를 포함하는 개념이라고 할 수 있다.

그럼에도 불구하고 같이 사용하는 이유는, 1. WAS가 해야할 일의 부담을 줄이기 위해서이고, 2. WAS의 환경 설정 파일을 외부에 노출시키지 않도록 하기 위해서이다.
=> 우리가 웹을 개발할 때 사용하는 Apache Tomcat 은 WAS(Tomcat)가 웹 서버(Apache) 기능을 포함하고 있기 때문에 Apache Tomcat 이라고 부르기도 하고, 실제로 WAS 앞에 웹 서버를 두어서 Apache Tomcat 이라고 부르기도 한다.



+ 참고

https://gmlwjd9405.github.io/2018/10/27/webserver-vs-was.html
https://swimjiy.github.io/2019-11-03-How-Web-Works
https://doozi316.github.io/web/2020/09/13/WEB26/
http://melonicedlatte.com/web/2019/06/23/210300.html
https://kit2013.tistory.com/79
https://yongblog.tistory.com/2

profile
아자아자 파이띵굥!

0개의 댓글