나뭇잎, 식물체나 동물체의 구조에서부터 자연의 법칙에 따라 생성되는 각종 작용들… 예를 들어 결정체의 형성, 수면위로 퍼지는 잔물결, 파도나 바람의 영향으로 침식되어 새겨진 흔적처럼 일상이나 자연 속에서 우리는 다양한 패턴을 관찰할 수 있다. 따라서 건축물이나 소프트웨어의 아키텍처가 자연의 패턴을 모방하여 지어졌다 하더라도 그건 그렇게 놀랄만한 일이 아니다.
윌리암 크로포드(William Crawford)와 조나단 카플란(Jonathan Kaplan)이 집필한
『J2EE Design Patterns』는 효율적인 소프트웨어 설계 이면에 숨겨진 패턴에 대한 책이다. 저자인 크로포드와 카플란의 지적대로 디자인 패턴은 흔히 볼 수 있는 순환 문제에 대한 순환 해결책을 기술하는 방법이다. 프로그래밍적 관점에서 다시 풀어 쓴다면, 패턴이란 알려진 문제점을 해결하기 위해 일반적인 객체에 적용될 수 있는 특정 상호작용을 모아둔 것이라 할 수 있다.
또한 저자들은 다음과 같은 말도 덧붙였다. “해결하기 까다로운 문제에 대해 실무에서 효율적으로 사용할 수 있는 입증된 최고의 해결책을 설명해놓은 것이 바로 디자인 패턴이다. 흔히 사용하는 언어를 사용해 디자인 패턴을 적용하여 복잡한 주제를 묘사하면 모호함으로 인해 야기될 수도 있는 문제가 감소되기 때문에 프로그래머들은 서로 효율적으로 의사소통 할 수 있다. 이는 지금까지 디자인 패턴을 잘 적용해온 사례들을 보면 충분히 확인할 수 있는 것으로, 프로그래머들은 불필요한 노력을 들이지 않아도 될 뿐만 아니라, 더 자신감을 가지고 업무에 임할 수 있다.”
이 책은 디자인 패턴과 엔터프라이즈 설계를 잘 융합해놓은 책이다. 패턴을 설명하는 책들은 이미 시중에 많이 나와있기 때문에 저자들은 기존의 책들과는 확연히 구별되는 책을 만들어보고자 새로운 형식으로 패턴에 접근하는 방식을 취했다. 즉, 패턴을 자세하게 설명하는 방식을 취하면서 독자들이 패턴 자체에 집중할 수 있도록 각 챕터별로 뚜렷한 구별이 가도록 구성했다. 확장성, 신뢰성이라는 주제가 각 장마다 기본으로 흐르고 있으며, 특히 J2EE 애플리케이션이라는 더 큰 의미속에서의 패턴을 제시하고 있기 때문에 독자들은 효율적인 자바 엔터프라이즈 아키텍처에 대해 완벽하게 이해할 수 있다.
저자 중 한 명인 크로포드는 이 책에 대해 다음과 같이 말했다. “이 책을 통해 독자들은 타이밍, 확장성, 성능, 신뢰성들을 어떻게 효율적으로 조합해야 하는지, 엔터프라이즈 개발 프로젝트에서 가장 중요한 고려사항에 대해 살펴볼 안목을 갖출 수 있게 될 것이다. 따라서 실제 개발에서는 훨씬 더 빠르게 실행할 수 있을 뿐만 아니라 흔히 저지를 수 있는 실수도 피할 수 있을 것이다.”
이 책은 다음과 같은 주제들을 다루고 있다.
- 프리젠테이션 계층(Presentation tier) 패턴
- 비즈니스 계층(Business tier) 패턴
- 비즈니스 계층과 프리젠테이션 계층간의 상호작용
- 영속성 패턴
- 병행성에 대한 패턴
- 엔터프라이즈 메시징에 대한 패턴
- 패턴 자체가 갖게 되어버린 문제점
이 책에 수록된 대다수의 패턴은 J2EE 개발과 관련된 확장성, 유연성 및 성능에 초점을 맞추고 있다. 어떤 패턴은 처음 접하는 낯선 것일 수도 있으며, 또 다른 어떤 것은 아주 친숙한 것일 수도 있다. 그렇지만 이전에 패턴을 알고 있던 독자든 그렇지 않은 독자이든 간에 이 책은 실제 J2EE 애플리케이션에 패턴을 적용하는 방법을 보여주는 유일한 서적임에는 틀림없다.