본문 바로가기

프로그래머로 살아가기/Java

빠른 개발 생산성을 위한 Spring roo 와 OpenXava framework 그리고 스캐폴딩

현대 프로그래밍 언어나 프래임웍중에 스캐폴딩이라는 개념이 있다. 


이게 원래의 사전적인 의미는 다음과 같다.



출처: http://experientia.co.kr/?p=244


스캐폴딩(scaffolding)의 개념

– 스캐폴딩이란 교수자가 학생에 대하여 적절한 교수학습적 도움을 제공함으로써 유의미한 학습을 수행할 수 있도록 하는 것으로, 특히 학습자들로 하여금 자신의 현재 기능수준을 넘어서 다음단계의 수준까지 이르도록 돕기 위해 제공되는 지원


프로그래밍 언어에서의 스캐폴딩은 Data Model을 이용해서 CRUD(Create/Read/Update/Delete) 동작을 자동으로 제어해주는 코드를 생성해주거나 기능을 제공하는 것을 이야기한다.  Ruby on rails 에서 이런 기능을 제공하면서 인기를 끌게 되면서 다른 언어나 프레임웍에서도 비슷한 기능들을 제공하기 시작했다. 


PHP yii 프레임웍이나 나 groovy on grails에서도 이런 비슷한 기능들이 제공된다. 


사전적 의미에서 처럼 이런 기능을 제공하는 의미는 기본적인 코드를 제공함으로써 생산성 향상과 튜토리얼의 의미 모두를 만족시키기 위함이 아닐까 생각이 된다. 


웹개발에서 이런 CRUD개발이 50%이상의 시간을 쓰는점을 본다면 이 코드를 기반으로 개발을 시작하게 되면 좀더 빠른 생산성을 가져갈수 있을것이다.


또한 관리자툴 같은곳에서는 이 기능만 활용해도 거의 대부분의 기능을 구현해 낼수가 있다. 


현재 진행하는 프로젝트에서도 운영자툴을 위하여 이러한 솔루션을 몇가지 검토를 해보았는데, 


Spring Roo와 OpenXava 이 두가지가 가장 좋아 보였다. 



두 프로젝트 모두 Model 클래스를 통하여 CRUD기능을 하는 화면까지 생성을 해준다. 


OpenXava의 경우는 코드를 생성해주는 방식은 아니고 모델을 런타임에 분석하여 해당 기능들을 제공하는 방식이다. 





이 프로젝트들의 단점은 무엇보다 도큐먼트의 부족이다.


특히 Spring roo의 도큐먼트는 매우 부족한 수준이다. 

그리고 프로젝트 초기에 이런 프레임웍으로 개발하겠다고 결정하고 시작을 해야 생산성 향상에 도움이 될것 같다. 프로젝트 중간에 이런 툴들을 integration시키려면 여러가지 문제가 속출해서 그것을 해결하다가 보니 오히려 생산성 저하가 오는것 같다. 


여러가지 이유로 OpenXava를 도입하려고 했었는데 이것도 이것 자체가 웹프레임웍이라서 spring MVC와 연동을 하기에는 쉽지 않고, 커스터마이징 기능을 개발하기에도 이미 개발해놓은 코드들을 재사용하지 못해 불편함이 따른다. 


관리자툴 개발에 시간을 절약하기 위하여 도입검토를 한건데 이런식이니 그냥 간단하게 비슷한 역할을 해주는 것을 개발하기로 결정했다. 


향후 시작하는 프로젝트에서는  시작전에 미리 검토를 하고 시작해야 겠다.