Non EJB 아키텍처

2010. 8. 15. 14:38plming/Java - Spring

Non EJB 아키텍처: EJB를 사용하지 않는 애플리케이션의 모든 아키텍처를 통칭
"EJB를 사용하지 않는다"는 것을 의미
서블릿 컨테이너 기반으로 개발



UI계층은 JSP/Servlet, MVC(Struts, Webwork) 프레임워크가 담당
비즈니스 계층은 자바빈(POJO기반의 Singleton 패턴 이용)
퍼시스턴스 계층은 OR Mapping 프레임워크(Hibernate, iBatis)

※ POJO (Plain Old Java Object)는 일반적으로 지금까지 자바빈이라고 불러왔던 클래스들을 일컫는다.
    서블릿, EJB와 같이 인터페이스에 종속되어 특정 컨테이너 내부에서만 사용할 수 있는 클래스를 제외한 모든 클래스를 POJO라고 말할 수 있다.


Non JEB 아키텍처는 자바(JDBC API 사용)와 JSP에 대한 지식만으로 웹 애플리케이션을 개발하는 것이 가능

- 장점
1. 추가적인 교육 없이도 초보 개발자들이 쉽게 이해하고 개발하는 것이 가능하다.
2. 초기 개발속도가 빠르므로 단기적으로 가시적인 성과를 낼 수 있다.
3. 굳이 값비싼 EJB컨테이너가 아닌 서블릿 컨테이너만으로 운영하는 것이 가능하다.
4. EJB 컨테이너보다 서블릿 컨테이너의 이식성(Portability)이 훨씬 좋다.
   추후에 컨테이너가 바뀌더라도 손쉽게 대응할 수 있다.
5. 개발주기가 EJB보다 짧기 대문에 개발 생산성의 향상을 가져올 수 있다.
   EJB의 경우 애플리케이션이 변경될 경우 개발,빌드,배포,테스트 과정을 거쳐야하지만,
   이 개발 방식은 개발,테스트 과정을 통하여 개발하는 것이 가능하다.

- 단점
1. 초기 개발 속도가 빠르지만 프로젝트가 진행되면서 추가 요청사항이나 변경사항이 발생할 경우 대응속도가 느려 프로젝트 후반으로 갈수록 개발 속도가 느려지게 된다.
   명확한 계층 분리와 견고한 설계가 바탕이 된다면 극복할 수 있다.
2. 명확한 계층 분리를 하기 어렵다.
   계층 분리가 명확하지 않기 때문에 중복되는 코드가 많이 발생할 확률이 높고, 이로 인한 유지보수 비용이 높다.
3. 사내에 일관된 개발 방식을 가지기 어렵다.
   프로젝트마다 서로 다른 아키텍처로 개발을 진행하는 경우가 많기 대문에 유지보수 비용의 증가를 가져온다.
4. 분산 환경을 지원할 수 없다.
   외부시스템과 인터페이스하기 위하여 분산 환경 지원이 필요할 경우 지원하기 힘들다.
   비즈니스 계층을 명확하게 독립적으로 분리하여 개발되어 있지 않다면, 외부시스템 인터페이스를 지원하기 위해 애플리케이션 전체를 재개발해야 되는 경우도 발생한다.
5. 비즈니스 로직을 구현하고 있는 비즈니스 객체의 생명주기를 프로그램에서 직접 관리해야 한다.
   서블릿과 EJB의 경우 빈의 생명주기를 컨테이너에서 관리하는 것이 가능하다.
   그러나 POJO에 대한 생명주기는 프로그램에서 개발자들이 직접 관리할 수 밖에 없다.
6. EJB가 지원하고 있는 선언적인 Transaction과 같은 기능을 사용할 수 없다.
   프로그램에서 직접 작성하여 트랜잭션을 처리할 수 밖에 없다.

이와 같은 한계 때문에 EJB가 등장하면서 EJB 아키텍처에 관심을 가지게 되었지만,
다시 Non EJB로 바뀌고 있다.


EJB에서 Non EJB로 바뀌면서 달라진 점은
과거처럼 아무것도 없는 상태에서 프로젝트를 진행하는 것이 아니라
다양한 프레임워크를 기반으로 프로젝트를 진행하는 방식으로 바뀌었다는 것이다.
Non EJB 아키텍처에서도 프레임워크를 사용하기 위해 추가적인 시간과 교육이 필요하게 되었다.

그러나 모든 웹 애플리케이션 개발이 프레임워크 기반하에서 진행되어야 하는 것은 아니다.
프레임워크를 이용할 경우, 프레임워크에서 제공하는 많은 기능들을 재개발 없이 사용할 수 있기 대문에 장점이 될 수 있지만, 이 기능들을 익히는데 소요되는 시간과 비용을 고려하여 결정하면 된다.

소규모의 애플리케이션 개발에서는 프레임워크에 종속되지 않아도 상관없다.
단, 유지보수와 향후 확장성을 높이기 위해 명확하게 계층을 분리하는 것이 좋다.


[출처] Spring 프레임워크 워크북
[출처] http://www.javajigi.net/pages/viewpage.action?pageId=28377090

'plming > Java - Spring' 카테고리의 다른 글

Lightweight 컨테이너 아키텍처 = Spring Framework  (0) 2010.08.15
EJB 아키텍처  (0) 2010.08.15
DataSource Lookup  (0) 2010.08.15
(Domain) Model Class  (0) 2010.08.15
JBoss 관리자 개발 가이드  (0) 2010.07.17