본문 바로가기

Books in Life/2005

Expert One-on-One: J2EE Development without EJB


마이크로소프트웨어 2008년 9월호의 "화제의 해외서적"이란 코너에 기고하였던 글을 정리하여 올립니다.

Spring Framework의 확산으로 많은 분들에게 잘 알려진 Rod Johnson이 쓴 "J2EE Developement without EJB"이란 책을 소개합니다.

진정으로 Spring Framework의 사상과 철학을 알기 원하는 독자들에게 매우 유익한 책이 될 것입니다. 또한 과거의 EJB관련 프로젝트에서 많은 고생을 하셨던 분들에게 시원한 해결책을 제시해 주고 있습니다.

이 책이 쓰여진 후 Spring Framework은 더욱 빠르고 견고하게 발전하고 있지만, 이 책에서 말하는 사상이나 해결책은 현재의 Spring Framework의 근간이 되고 있기에 여전히 이 책을 읽는 것은 가치가 있다고 생각합니다.

아쉬운 점은 아직 역서가 없기에 편안하게 Rod Johnson의 사상을 이해하기 어려울 수 있다는 점입니다. 최신 Spring Framwork의 내용을 보강하여 이 책을 번역한다면 많은 분들에게 큰 도움이 될 수 있을 것이라고 확신합니다.

필자가 처음 EJB(Enterprise JavaBeans)를 사용하는 프로젝트에 참여하였을 때 EJB는 모든 것을 해결해줄 수 있는 은탄환과 같은 존재였다. 분산환경을 지원하는 EJB는 매우 훌륭해 보였으며 모든 비즈니스 로직을 무결하게 수행해 줄 수 있는 해결책이었다. 필자와 동료들은 EJB를 적극적으로 활용하기 위한 노력을 계속하였음에도 불구하고 악몽과도 같은 야근과 빡빡한 일정 속에 추가인력이 투입되어서야 겨우 프로젝트를 끝낼 수 있었다.

프로젝트를 마친 후 많은 고민을 하였다.

필자가 참여한 프로젝트는 5000여명의 직원이 인트라넷에서만 사용하는 MIS(Management Information System)를 구축하는 프로젝트였는데, EJB를 활용하여 비즈니스티어를 구성하였으며, EJB의 성능을 보장하기 위하여 BEA WebLogic 5.1과 HP Superdom이란 거대한 서버장비를 도입하였다.

지금 생각해보면 이러한 시스템 아키텍처는 분명히 과도한 기술과 장비의 투입(Over-Engineering)이라고 생각한다. 하지만 무엇이 문제였으며 어떤 부분이 잘못된 부분인지 필자는 정확하게 설명하지 못하였다.

시간이 지난 후 우연히 로드 존슨의 “J2EE Development without EJB”란 책을 읽으면서 필자는 지난 여러 EJB를 활용한 프로젝트의 문제를 하나 하나씩 명확하게 깨우쳐 나갈 수 있었다.

비즈니스 요구사항을 만족시키기보다는 EJB의 이상적인 스펙을 위한 시스템 아키텍처의 설계가 개발자들을 핵심적인 비즈니스 로직 구현에 집중할 수 없게 하였고, 시스템의 복잡성은 늘어갔으며, 테스트의 어려움이 지속적으로 증가하게 되었던 것이다. 이 때문에 프로젝트의 생산성은 극히 낮았으며 유지보수 또한 매우 어렵게 되었고, 성능 좋은 서버장비 구입 및 EJB 컨테이너 구입을 위하여 많은 비용을 지출하여야 했다.

로드 존슨은 이러한 문제를 해결하기 위하여 과감하게 이 책을 통하여 EJB 없는 J2EE 개발방안을 제시하고 있다. 단순하게 문제점만 지적하는 것이 아니라 경량 컨테이너와 IoC(Inversion of Control) 및 오픈 소스를 적극적으로 활용함으로써 EJB 활용의 문제점에 대한 다양한 해결책을 제시하고 있다.

특히 요사이 가장 많이 사용하고 있는 Spring Framework(http://springframework.org/)를 소개하면서 AOP(Aspect Oriented Programming)를 바탕으로 각종 JavaEE 스펙에 치중되지 않는 POJO(Plain Old Java Object) 기반의 개발을 제시하고 있다. 또한 JavaEE에서 해결해야 하는 문제인 트랜잭션 관리, 퍼시스턴트, 웹 티어 디자인, 테스트, 성능과 확장성 등에 관하여 구체적으로 다양한 솔루션들의 장단점들을 비교함으로써 효과적인 시스템 아키텍처를 설계할 수 있는 방안을 제시하고 있다.

여기서 우리가 주목해야 할 점은 로드 존슨의 사상은 매우 구체적이고 실용적이며, 우리가 현재 활용하고 있는 것들이란 것이다. 예를 들어 이 책에서는 효과적인 퍼시스턴스 관리를 위하여 iBATIS SQL Maps 뿐만 아니라 Hibernate 및 JDO에 대한 비교를 통하여 실용적인 처리 방법을 알려주고 있다.

Spring Framework를 진정으로 이해하길 원하는 독자라면 이 책을 꼭 한번 읽어보기를 권한다.

Spring Framework는 결국 효율적인 JavaEE 개발을 위한 로드 존슨의 고민의 결정체이기 때문이다. 그의 치열한 고민에서 나온 해결책들을 바탕으로 현재 우리는 효과적으로 경량 컨테이너를 활용하여 쉽고 빠르게 JavaEE기반의 어플리케이션을 개발하고 있기 때문에 그의 고민이 무엇이었는지 알아보는 것은 더욱 효과적인 JavaEE 기반의 시스템 아키텍처를 설계할 수 있는 좋은 길잡이가 될 것이다.

필자는 이 책을 통하여 로드 존슨의 열정을 독자들도 함께 느낄 수 있기를 희망한다. 열정적인 그는 최근 SpringSource Application Platform를 통하여 분산환경을 효과적으로 지원할 수 있는 방안까지 제공하고 한다.

아직 이 책의 번역서가 없기 때문에 이 책을 읽기가 부담스러운 독자들은 “J2EE 설계와 개발”이란 책을 먼저 읽어보기를 권한다. “J2EE 설계와 개발”은 JavaEE에 대한 그의 철학을 주로 담고 있으며, "J2EE Development without EJB"은 철학을 구체화하는 방안을 주로 담고 있다.

필자에게 한가지 소망이 있다면 독자들에게 이 책에 포함된 로드 존슨의 사상을 쉽고 정확하게 이해할 수 있도록 도와주고 최근 Spring Framework에 대한 내용도 함께 공유할 수 있는 기회를 갖는 것이다.

마이크로소프트웨어 9월호의 PDF를 첨부하오니 PDF로 보시길 원하시는 분들께서는 참고하시기 바랍니다.