Spring 프레임워크의 이해 1.Architecture
고객의 요구사항 변화 High Quality
고객의 요구사항 변화 테스트 중요도 증가
고객의 요구사항 변화 테스트 용이성
고객의 요구사항 변화 개발 기간 단축
고객의 요구사항 변화 유지보수 비용 감소
고객의 요구사항 변화 일관된 Platform 도입
기술적 변화 AOP Web Service 안정화
MVC Framework 대중화 (Struts, Webwork) 기술적 변화 MVC Framework 대중화 (Struts, Webwork)
ORM Framework 안정화 (Ibatis, Hibernate) 기술적 변화 ORM Framework 안정화 (Ibatis, Hibernate)
기술적 변화 WEB 2.0 RIA(AJAX, Flex)
Architecture – Classic EJB Architecture
장점!! Architecture – Classic EJB Architecture 정형화된 Service Layer 제공 선언적인 Transaction 관리와 같은 EJB 서비스 제공 Business Object를 여러 서버에 분산이 가능 많은 개발자들이 개발에 익숙한 상태
단점!! Architecture – Classic EJB Architecture 실행속도와 개발속도등 여러 부분에서 상당한 overhead가 발생함. OO(Object Oriented)의 제한된 구현만이 가능함. 테스트하기 어려움. 항상 EJB Container에서만 테스트가 가능함.
Architecture – Local EJB Architecture
장점!! Architecture – Local EJB Architecture 분산환경을 제외한 Remote EJB 아키텍처의 모든 강점을 제공 RemoteException을 처리하지 않아도 됨
단점!! Architecture – Local EJB Architecture Remote 분산환경을 제공하지 않음 테스트하기 어려움. 항상 EJB Container에서만 테스트가 가능함. 아키텍처가 여전히 복잡함
Architecture – Non EJB Architecture
장점!! Architecture – Non EJB Architecture Servlet Engine에서 서비스 가능. - Cheaper License, Easier administration. Application Server, Servlet Engine에 대해 더 좋은 Portability. Simpler Implemenation - POJO business Object, No JNDI lookup 번거로웠던 Deployment descriptors가 필요없음 Quicker code-deployment cycle. 단지 war파일 하나만 deploy하면 됨
단점!! Architecture – Non EJB Architecture Remote 분산환경에 대한 지원이 부족. 표준화된 환경과 관리 부족. 유지 보수의 어려움. Business Service Layer에 대한 불명확함. EJB의 선언적인 Transaction 관리와 같이 미리 제공하는 기능이 없음. 필요한 기능이 있을 때마다 구현 필요. Application이 점점 커짐에 따라 Application의 일관성 부재 Testability가 EJB보다 좋을 수 있으나 경우에 따라 다름.
Architecture – Lightweight Container Architecture
장점!! Architecture – Lightweight Container Architecture A simple but powerful Horizontal scalability는 높음. EJB보다 배우기 쉬우며, Configuration 또한 쉽다. AOP의 지원으로 인해 선언적인 Transaction 관리와 같이 EJB에서 지원하던 기능들의 지원이 가능함.
장점!! Architecture – Lightweight Container Architecture Servlet Engine에서 실행이 가능함. Application Server와 Servlet Engine의 Portability 높음. IoC(Inversion of control)을 통한 Business Object의 관리가 용이함. POJO임으로 Testability가 높음. OOP의 제한이 없음.
단점!! Architecture – Lightweight Container Architecture Remote 분산환경을 지원하지 않음. Web service를 통하여 해결 가능. 현재 Lightwegiht Container에 대한 표준이 없음. EJB 아키텍트와 개발자들에 친숙하지 않음.
Architecture – Lightweight Container Architecture