지난 번 1편을 쓴 이후에 한 분께서 현재 쓰고 있는 WAP가 자바 언어에 대한 WAP에 대한 것이라는 지적이 있으셨습니다. 결론은 맞습니다. 제가 정리하고자 하는 것은 JWAP에 대한 것 입니다. 여러 이유가 있겠지만 먼저 현재 나와 있는 WAF중 자바 WAF 가 가장 널리 사용되고 있기 때문입니다. 또한 제가 제일 잘 이해하고 있는 분야이기도 하구요...^-^ 현재  WAF 의 언어별 숫자는 다음과 같습니다.

 ASP.NET : 2 ,  ColFusion : 4 , Perl : 5 , Ruby : 7 , Physon : 12 , PHP : 15 , Client-Side : 18 , Java 25
- 출처 위키 : http://en.wikipedia.org/wiki/List_of_web_application_frameworks

그런데 중요한 것은 WAF 가 언어에 따라 엄청나게 다른 것이 아니라는 것 입니다. 물론 차이점이 없다는 것은 아니지만 웹을 개발하는 데 있어 필요한 프레임웍이 모여 있어 이를 이용할 경우 개발자의 생산성이 높아진다는 공통점이 있습니다.

WAF를 이해하기 위해 먼저 S/W 아키텍쳐 - S/W 프레임웍 - S/W 패턴의 관계를 정확히 이해하는 게 중요합니다. S/W 아키텍쳐는 S/W를 개발하는 데 있어 뼈대가 되는 근간 모델을 말합니다. 만약 이를 웹 S/W에 적용한다면 OS - TCP/IP 네트웍 - 자바 이런 식의 참조 모델을 의미할 수도 있고 , 분산 객체 기반의 웹S/W의 경우 CORBA 같은 아키텍쳐를 들 수 있을 것 입니다. 이러한 아키텍쳐하에서 실제 S/W를 개발하다 보면 유사한 문제에 대한 공통적인 해결 방안을 얻을 수 있습니다. 가령, 클라이언트의 요청을 받고 이를 처리하는 PageController 나 널리알려진  MVC 모델 등을 예로 들 수 있습니다. 이러한 웹 개발에 있어 얻은 경험을 바탕으로 반복해서 발생하는 문제를 해결하기 위한 권고안이 바로  S/W패턴입니다. 정답이 아니라 권고안이기 때문에 실제 적용은 개발자의 몫이긴 합니다. 웹 개발에 있어 공통적으로 발생하는 문제들의 해결 패턴들을 하나의 라이브러리로 정리하여 개발에 있어 공통으로 적용하는 것이 바로 웹 개발 프레임웍(WAF)입니다. 따라서 자바로 개발을 하든, 루비로 하든 기본적으로 WAF는 웹 개발에 있어 필요한 공통의 사안이 지원돼야 합니다.  바로 이러한 것들의 차이가 WAF 의 차이라 할 수 있습니다. 언어보다는 패턴과 프레임웍상의 기능 차이가  WAF를 평가하는 주된 기준이라 보는 게 더욱 소프트웨어 개발을 즐기는 시야일 것 입니다.

아키텍쳐 - 프로그램 혹은 컴퓨팅 시스템의 소프트웨어 아키텍처란, 소프트웨어 컴포넌트, 이들 컴포넌트의 가시적인 속성, 그리고 컴포넌트 사이에 관계로 구성된 시스템의 전체적인 구조를 말한다. Bass, Clements, Kazman, 1998

WAF - 웹 응용 프로그램와 서비스 등을 개발하는 데 필요한 공통의 컴포넌트를 제공하여 개발자의 오버헤드를 덜어주고 개발과 유지보수 상의 생산성을 높여주는 프레임웍. - Jhpark, 2007( 접니다. ^-^)

이제  WAF 에 대한 정의가 끝났다면 , 다음으로는  WAF 를 이해하기 위해  WAF 에 적용되는 여러 유용한 패턴들에는 무엇이 있을까요?

하나 , MVC(Model-View-Controller) 모델  :  모델 1, 모델2 , Push& Pull model
둘, Page Controller VS  FrontController 모델
셋 ,  Request  based VS Component Based  모델

이들 패턴들외에 WAF 에는 개발자들에게 유용한 공통의 컴포넌트들을 제공합니다. 이들 공통 컴포넌트로는  Ajax 프레임웍 지원, i18n(internalization) & l10n(localization), O-R mapping , Testing , Security , Template & Form validation , Caching 등 을 들 수 있습니다.  다음은 위의 기준으로 정리한 자바 WAF를 정리한 표 입니다[위키참조].

사용자 삽입 이미지
 
다음에는 위의 패턴들과 공통 컴포넌트를 이해하면서  WAF를 다양한 기준으로 분류해 보겠습니다.


Posted by 박재현
,