티스토리 뷰

Web

Apache Tomcat과 Apache

nooblette 2021. 8. 14. 17:52
반응형

스프링 강의를 듣는 중인데

 

  • 스프링에는 내장된 tomcat 서버
  • 스프링 컨테이너
  • jsp와 서블릿
  • 등..

 

이런것들이 다 무슨 기능을 수행하며 무엇을 의미하는지 몰라서 그런지 전반적인 강의 내용 이해도 제대로 되지 않았다.

한 번씩 들어보긴 했던 단어들인데 확실하게 이해해두는 편이 좋을 것 같아 관련 내용들을 찾아보았다.


위 내용들을 이해하기위해선 웹 서버와 WAS의 차이를 알아야한다.

 

  • 웹 서버(Web Server)

서버에서 클라이언트의 요청을 기다리고, 요청이 오면 받아들이고, 그 요청의 Data를 보내는 프로그램.

이때 보내는 Data는 정적인 Data(html, css, js, image)로 한정.

-> apache가 가장 많이 쓰임

 

정적(static)이라는 것을 간단히 말하면 접속할 때 마다 변하지 않고 똑같은 Data만 보낸다는 것입니다.

만약에 네이버가 정적이라면 네이버는 접속할 때 마다 똑같은 페이지를 보이게 될 것입니다. 

 

 

  • WAS(Web Application Server)

동적(dynamic)인 Data를 보내는 서버

-> WAS를 구동하기 위해 apache Tomcat이 많이 쓰임

 

다시 말해,

웹 서버 ➡️ 정적인 데이터를 처리하는 서버.

이미지나 단순 html,css,js 파일과 같은 리소스를 제공하는 서버는 웹 서버를 통하면 WAS를 이용하는 것보다 빠르고 안정적입니다.

 

WAS  ➡️ 동적인 데이터를 처리하는 서버.

DB와 연결되어 데이터를 주고 받거나 프로그램으로 데이터 조작이 필요한 경우에는 WAS를 활용 해야 합니다.


  • JSP(Java Server Page)

HTML 코드에 JAVA 코드를 넣어(html 코드 내에 java 코드) 동적 웹페이지를 생성하는 웹어플리케이션 도구.

 

JSP 가 실행되면 -> 자바 서블릿(Servlet) 으로 변환 -> 

웹 어플리케이션 서버에서 동작되면서 필요한 기능을 수행 -> 생성된 데이터를 웹페이지와 함께 클라이언트로 응답.



  • Java Servlet

웹페이지를 동적으로 생성하기 위해 서버측 프로그램.

서블릿은 Java 코드내에 HTML 코드가 있어서 읽고 쓰기가 굉장히 불편하기 때문에 작업의 효율성이 떨어진다.


  • apache

apach라는 소프트웨어 단체에서 후원하는 오픈소프 프로젝트 커뮤니티에서 만든 http 웹서버를 지칭.

apache http서버는 http 요청을 처리하는 아파치 웹 서버인 것입니다. 

다시말해, 클라이언트가 GET, POST, DELETE 등등의 메소드를 이용해 요청을 하면 이 프로그램이 어떤 결과를 돌려주는 기능을 하고 아파치는 웹 서버입니다.

 

  • apache tomcat

tomcat은 흔히 WAS(Web Application Server)라고 말합니다. 

WAS는 웹 서버와 웹 컨테이너의 결합 으로 다양한 기능을 컨테이너에 구현하여 다양한 역할을 수행할 수 있는 서버.

클라이언트의 요청이 있을 때 내부의 프로그램을 통해 결과를 만들어내고 이것을 다시 클라이언트에 전달해주는 역할을 하는 것이 바로 웹 컨테이너입니다. 

앞에서 본 아파치 웹 서버와 차이는 이 컨테이너 기능이 가능을 하느냐 하지 않느냐의 차이가 가장 크다고 생각합니다.

 

출처 : https://webclub.tistory.com/333

 


 

  • 아파치와 톰캣의 연동

 

아파치 : 웹 서버로서 사용자의 요청을 받아 처리.

아파치가 요청을 받은 것이 JSP문서 또는 서블릿이라고 한다면 이를 톰캣으로 전송하게 되는 것입니다

JSP 코딩시에는 톰캣만 이용하여 충분히 가능하지만 톰캣의 웹 서버는 기능도 적고 많은 사용자가 요구를 할 때 부하가 많이 걸립니다. 

따라서 일반적인 목적 (JSP를 실행하는 웹 서버)에서는 아파치를 웹 서버로 이용하고 단지 톰켓은 JSP/서블릿 컨테이너 기능만 수행하게 하여 이용을 하는 것입니다.

 

톰캣 : JSP/서블릿 컨테이너 중에 하나로서, 사용자에게 JSP요청을 받으면 서블릿으로 바꾸어 이를 실행하는 역할을 합니다.

(그리고 서블릿 요청을 받으면 이를 실행을 한다.)

 

쉽게 말하여 JSP페이지를 웹 서버에 요청을 하면 이 페이지를 해석하고 실행하는 역할을 하는 것입니다.

더 쉽게 말하면, 웹 서버에 있는 JSP문서를 실행시키면 이를 작동하는 것이 톰캣이라고 보면 될 것입니다.

 

아파치는 JSP를 처리하지 못하므로 클라이언트로부터 JSP를 받으면

이를 톰캣으로 보내어 (톰캣이) 이 JSP 요청을 변환 작업을 통해 서블릿 파일(.java)을 생성한다.

생성된 서블릿은 .class로 컴파일되어 실행되고

그 후 html 파일을 생성하여 이를 톰캣으로 보낸다.

 

  1. 클라이언트가 어떤 동작을 함으로써 hello.jsp 를 요청하였다.
  2. 아파치는 jsp를 처리하지못하므로 이를 톰캣(jsp container)으로 보낸다.
  3. 톰캣은 이 jsp요청을 서블릿(.java)으로 변환한다.
  4. 서블릿을 .class로 컴파일 한다.
  5. .class를 실행하고 JSP 태그를 분해하고 추출한다.
  6. 그 후 순수한 HTML로 변환하여 HTTP 프로토콜을 통해 HTML 페이지를 클라이언트 에게 전달한다.

간단하게 아파치는 JSP를 처리를 못하기 때문에, JSP를 받아서 톰캣에서 처리하고 다시 아파치로 넘겨준다.

 


출처: https://javacpro.tistory.com/43 [버물리의 IT공부]

출처: https://webclub.tistory.com/333 [Web Club]

 

반응형

'Web' 카테고리의 다른 글

JPA에서 데이터 접근  (0) 2021.09.09
JPA, ORM, Hibernate, JPQL  (0) 2021.09.09
웹 브라우저의 기본 원리  (0) 2021.07.26
URL과 URI의 차이  (0) 2021.07.26
HTTP 프로토콜  (0) 2021.07.21
Comments