스프링 프레임워크 역사(배경)
역사
로드 존슨이 2002년 10월에 출판한 자신의 저서인 Expert One-on-One J2EE Design and Development 에 작성한 코드를 기반으로 최초 버전을 만들게 됨.
(이후 유겐 휄러와 함께 Expert One-on-One J2EE Development without EJB 라는 제목의 저서를 발간함)
2006년에 1.2.6 버전으로 Jolt Productive Award 와 Jax Innovation Award 를 수상하였음.
버전 | 날짜 |
---|---|
5.0 M5 | 2017년 2월 |
4.3 | 2016년 6월 |
4.2 | 2015년 7월 |
4.1 | 2014년 9월 |
4.0 | 2013년 12월 |
3.2 | 2012년 12월 |
3.1 | 2011년 12월 |
3.0 | 2009년 12월 |
2.5 | 2007년 11월 |
2.0 | 2006년 10월 |
1.0 | 2004년 3월 |
배경
1. 엔터프라이즈 애플리케이션 개발의 어려움
엔터프라이즈 애플리케이션이란 기업과 조직의 비즈니스를 처리해주는 시스템을 의미함.
엔터프라이즈 애플리케이션 개발이 어려운 원인은 개발의 복잡성(complexity)이 증가했기 때문임.
- 과거에 비해 사회는 점점 복잡해졌으며, 이에 따라 IT 시스템에 대한 의존도가 높아져 시스템에서 다루어야 하는 업무의 복잡도가 높아짐.
- 많은 사용자의 요구를 빠르고, 안정적이면서, 확장 가능한 형태로 유지하기 위해서 필요한 로우레벨 수준의 기술적 처리가 필요해짐.
참고
과거 J2EE 프로젝트가 왜 실패하는지에 대한 토론을 참고하면 당시의 상황을 이해하는 데 도움이 될 수 있음.
엔터프라이즈 애플리케이션 개발의 복잡성은 크게 비즈니스 복잡성과 기술 복잡성으로 나눌 수 있음.
비즈니스(업무) 복잡성 | 기술 복잡성 |
---|---|
|
|
위와 같은 복잡성을 해결하기 위해서는 비즈니스 복잡성과 기술 복잡성을 나누어서 정복하는 전략(Divide and Conquer)이 필요함.
2. Java EE와 EJB
2.1. Java EE (Java Platform, Enterprise Edition)
커뮤니티(JCP, Java Community Process)에서 주도하는 엔터프라이즈 소프트웨어의 표준 [1]
참고
2.2. EJB (Enterprise JavaBeans)
Java EE를 위한 서버사이드 컴포넌트 아키텍처 [2]
EJB의 목표는 애플리케이션을 쉽게 작성하는 것에 있었음 [3]
2.1 Overall goals
We have set the following goals for the Enterprise JavaBeans (EJB) architecture:
- ...
The Enterprise JavaBeans architecture will make it easy to write applications: Application
developers will not have to understand low-level transaction and state management details,
multi-threading, connection pooling, and other complex low-level APIs.- ...
2.1 목표
우리는 엔터프라이즈 자바빈즈 (EJB) 아키텍처에 대해 다음과 같은 목표를 가진다.
- ...
- 엔터프라이즈 자바빈즈 아키텍처는 애플리케이션 작성을 쉽게 할 수 있다 : 애플리케이션 개발자는 로우 레벨의 트랜잭션이나 상태 관리, 멀티 스레딩, 커넥션 풀링, 그리고 기타 복잡한 로우 레벨의 API를 이해하지 않아도 된다.
- ...
2.3 또 다른 문제
EJB는 침투적인(invasive) 기술로 소스코드 측면에서의 강제사항(EJB 관련 클래스를 반드시 사용)과 개발환경 측면에서의 강제사항(EJB 컨테이너 사용) 떄문에 아래와 같은 문제가 발생하였음.
- 개발 생산성 저하
- 유지 보수성 저하
- 테스트 용이성이 떨어짐
- 배포의 어려움
참고
EJB를 이용한 예제코드는 아래에서 참고할 수 있음.
- [작성중] EJB 예제코드(github)를 작성하여 이곳에 링크를 추가할 것.
3. 스프링 프레임워크의 등장
EJB에서 문제가 되었던 부분을 해결하기 위해 비 침투적인(non-invasive) 방식을 도입하였고, 엔터프라이즈 애플리케이션 개발을 좀 더 쉽게 하기 위한 목적으로 만듦.
이러한 사상은 Spring Mission Statement에 잘 나타나 있음.
[1] ^ http://www.oracle.com/technetwork/java/javaee/overview/index.html
[2] ^ http://www.oracle.com/technetwork/java/javaee/ejb/index.html