Apache vs Apache Tomcat

 출처 : http://ithub.tistory.com/101

 ■ Apache

- 아파치 재단에서 만든 소프트웨어 입니다.
- 정적인 데이터를 처리하는 웹서버 입니다.
  ㄴ 웹서버는 클라이언트가 GET, POST, DELETE 등등의 메소드를 이용해 요청을 하면 그에 대한 결과를 돌려주는 기능을 합니다.
  ㄴ 정적인 HTML이나 이미지를 제공하는 서버를 웹서버라고 합니다.
- 웹서버로 가장 많이 쓰는 프로그램으로는 Apache재단의 Apache가 있고, Microsoft사의 IIS등이 있습니다.


■ Apache Tomcat
- 아파치 재단에서 만든 소프트웨어 입니다.
- 동적인 데이터를 처리하는 웹서버 입니다.
  ㄴ 동적인 처리를 담당하는 서버를 WAS(Web Application Server)라고 하고, 대표적인 WAS가 아파치톰캣(톰캣이라고도 부름)입니다.
-  WAS(Web Application Server)라고 불리며, 웹서버와 웹 컨테이너의 결합으로 다양한 기능을 컨테이너에 구현하여 다양한 역할을 수행할 수 있는 서버를 말합니다.
- 많이 사용하는 WAS는 BEA사의 Web Logic, IBM사의 Web Sphere, T-max사의 Jeus, Tomcat, Redhot사의 JBoss 등이 있습니다.




■ WAS 구성
- 사용자 요청(웹 브라우저) -> 웹 서버 -> WAS(동적 처리) -> 웹 서버 -> 사용자 응답 메세지(웹 브라우저)






 웹서버
- 클라이언트의 요청을 받아 HTML이나 오브젝트를 HTTP 프로토콜을 이용해 전송하는 일을 합니다.
- 사용자가 요청한 것들 중 웹서버 자체적으로 처리할 수 없는 것들을 톰캣과 같은 컨테이너에게 넘겨 처리 결과를 받아와서 클라이언트에게 넘겨주는 역할도 수행하기도 합니다.
- 웹서버만 구축된 서버는 웹페이지, 이미지 등 정적인 컨텐츠만 제공 가능합니다.
- 컨테이너가 탑재되어 있는 WAS의 경우 동적인 컨텐츠도 제공이 가능합니다.


서블릿(Servlet)과 JSP(Java Sever Pages)

출처 : 

- 서블릿과 JSP 의미 : http://anster.tistory.com/128

- Model1, Model2, Struts 개발 방식의 비교 분석 : http://www.javajigi.net/pages/viewpage.action?pageId=73

 

<서블릿>

  서블릿이란, 요약하자면, java 파일이 WAS(Web Application Server)를 통해 class 파일로 컴파일된 후, 메모리에 적재되어 클라이언트의 HTTP Get, Post 등의 요청을 처리하는 자바 프로그램. (톰캣 위에서 동작하는 java 프로그램.) (웹페이지를 동적으로 생성하는 서버측 프로그램.)

[IMG-1]





[IMG-2]





  톰캣(Tomcat)과 같은 WAS가 java 파일을 컴파일(Compile)해서 class로 만들고 메모리에 올려 servlet 객체를 만들게 되고, servlet 객체는 doPost(), doGet()을 통해 요청에 응답한다.
  [IMG-2]에서 Init, Service, Destroy 등의 이벤트들이 각 시점에 불려지는 것을 볼 수 있다.
  - Init 이벤트는 서블릿이 메모리에 로드될때 실행된다.
  - Service 이벤트는 HTTP Method 타입에 따라 doGet() 또는 doPost()를 호출한다.
  - Destroy는 서블릿이 메모리로부터 언로드되기 전에 실행된다.

  기억해야할 점은, 초기화된 서블릿은 클라이언트의 요청이 있을 때마다 쓰레드(Thread)를 생성하여 병렬적으로 Service를 수행한다는 것이다. 서블릿 객체는 여러개로 생성되지 않는다.



<JSP>

[IMG-3]





[IMG-4]





  서블릿 샘플 소스[IMG-3]를 보면 알겠지만, HTML을 넣기 불편하다. 그래서, [IMG-4]처럼 HTML 내부에 java 코드를 삽입하는 형식인 JSP가 나왔다.
하지만, 로직과 디자인이 한 파일내에 섞여 있어 유지보수하기 어렵다는 단점이 있다. 클래스 단위로 분해해서 객체지향 프로그래밍(Object-Oriented Programming)적으로 코드를 짜기도 어렵다.
  JSP라는 새로운 개발 방법이 나왔지만, 사실 JSP도 내부적으로는 톰캣이 서블릿으로 바꾸어서 돌린다.
  
  JSP 개발 방식으로는 Model 1, Model 2가 있다.


<Model 1>
[IMG-5]





  Model 1은 클라이언트의 요청 발생 시, JSP가 Java Bean(DTO, DAO)을 호출하여 처리한다.
 
  장점으로는
  - 개발 속도가 빠르다.
  - 개발자가 배우기 쉽다.
 
  단점으로는
  - 프리젠테이션 로직과 비즈니스 로직이 혼재되어 있어 코드가 복잡해져 유지보수가 어려워지고 개발자와 디자이너의 분업이 어렵워진다.
 
 
<Model 2>
[IMG-6]





  Model 2는 JSP, 서블릿 양쪽의 장점을 모두 취해 JSP를 뷰(View)로서, 서블릿을 컨트롤러(Controller)로서 사용한다.
  모델(Model) 영역에서는 DTO(Data Type Object), DAO(Data Access Object)를 통해 Mysql DB와 같은 데이터 저장소(Data Storage)에 접근합니다.

 


+ Recent posts