본문 바로가기
Homo Coding

프레임워크 사용을 위한 프레임워크

by javauser 2008. 3. 4.

Matt Raible 이라는 사람이 있다. 이 사람이 Equinox 라는 것을 만들었다.
EquinoxMatt Raible 이 만든 AppFuse 로부터 파생되었다. Equinox 홈페이지에는 Equinox 를 다음과 같이 설명하고 있다.

Equinox is lightweight version of AppFuse.

그럼 Equinox 를 잘 알려면 AppFuse 를 조금은 알 필요가 있다. AppFuse 에 대해서 내가 처음 접한 사연 이렇다. 프로젝트를 위해서 StrutsHibernate를 사용한 예제나 프레임웍이 필요했다. 실제로 나는 Google 에서 StrutsHibernate 를 키워드로 검색을 했고, 바로 AppFuse를 처음 접하게 되었다. AppFuse 의 사이트에는 다음과 같이 설명해놓고 있다.

AppFuse is an application for "kickstarting" webapp development.

정말로 한국인이면 좋아할 문구라고 생각된다. 나도 한국 사람이지만, 특히나 프로그램을 개발하는 입장에서는 무엇인가 결과를 빨리 얻고자 한다. 그래서 그런지 몰라도, 요즘에 이 개발 프레임웍이 각광을 받는 이유 중에 하나인 것 같다.

그럼 Matt Raible 이라는 사람에 대해서 한번 알아보자. TheServerSide.COM 에 가면 Matt Raible의 Tech Interview 가 있다. [인터뷰]
위의 사이트에 들어가면 이 사람의 모습과 함께 인터뷰 내용이 나와 있다. 그 내용 중에 AppFuse 에 대한 설명은 중간 부분에 다음과 같이 적혀있다.

AppFuse basically started when I was writing couple of chapters for Apress book JSP 2.0 and I wanted to develop a sample. It's the first time I had ever written in a book or anything like that. All the sample apps that I saw basically people threw away. They developed it, threw it away, now it became a download on a site somewhere and I want something that I could actually use. I started developing a resume entry application where I could enter my resume and then the goal was to eventually develop where I could render in PDF or Word or what have you, what people are looking for and as I got more into it, I noticed I was pulling a lot of things in from previous projects where I had worked at companies before and I thought of this idea before and so it hit me that what I really wanted was not only a place to enter my resume, but an application that I could use to start other applications, that had all my learning's from the past years and like a playing ground as well where I could test out new technologies and stuff like that. I took my learnings over the past few years and stuck them into there. I pumped out the sample app, which is my resume entry application and then I extracted out AppFuse and it became a starter application to build other applications. Because of my experience, the hard part is setting up your database, configuring your app server, and all that. If I can make that easier for developers, I am going to make it easier for myself and then you save two weeks doing that kind of stuff on a new project.

Matt RaibleAppFuse 를 사용하면 새로운 프로젝트를 시작할 때 적어도 2주라는 기술에 대한 세팅으로 인한 시간을 절약할 수 있다고 말하고 있다. 아마도 AppFuse 에서 사용하고 있는 기술을 웬만큼 이해하고 적용했던 사람들은 이 2주라는 시간을 확실하게 벌 수 있을 것이다.

AppFuse 가 각광을 받는 이유 중에 하나는 바로 Spring을 사용하고 있다는 것이다. Spring에 대해서는 Matt Raible을 썼지만, 많은 들이 봇물을 쏟아내듯이 출판되고 있다. 국내에도 이제는 이 Spring 에 대한 많은 관심을 가지게 되는 상황인 것 같으며, 이에 따라 AppFuse 라는 프레임웍도 같이 주목을 받는 것 같다. 하지만, 무엇보다도 AppFuseSpring 영역이 주목을 받는 이유는 또 다른 원인에서 찾을 수 있다. 바로, 이 모든 것이 open source 이며 무엇보다도 EJB 를 대체할 수 있다는 데에 있다. 즉, J2EE 진영에서의 무겁고 복잡한 (혹은 돈이 드는) 아키텍처 구조를 작고 단순하고 (혹은 무료인) 아키텍처 구조로 대체할 수 있다는 데에 있다. Rod Johnson 이 쓴 expert one-on-one J2EE Development without EJB 에서 J2EE 를 대체하는 여러 오픈 소스 프레임웍을 소개하고 있으며, 프로젝트 성공에 대한 핵심적인 가치 (저자는 theme 이라는 용어를 사용함.) 를 다음과 같이 6가지로 분류하고 있다.

단순성. 아키텍처와 그에 대한 구현은 항상 가능한 한 단순해야 한다.
생산성. J2EE 는 수많은 API와 개발 복잡성으로 인해 비즈니스 로직에 초점을 맞춰야 하는 개발 시간을 잡아먹고 있다. (새로 나온 EJB 3.0 에서는 이러한 부분에 대해서는 많이 개선이 된 상태이다. 하지만, 이 마저도 Spring 이나 Hibernate 진영에서 추가하는 방향을 모방한 느낌이 든다.)
객체지향에 대한 기본적인 중요성. 진정한 자바의 본질인 객체지향에 충실할 수 있어야 한다.
요구사항에 대한 최우선. 어플리케이션 아키텍처는 사용하는 기술로부터가 아닌 비즈니스 요구사항으로부터 기반을 다져야 한다.
경험적인 프로세스. 아키텍처에 대해서 수많은 비용과 노력을 투자하기 이전에 가설로 세운 아키텍처에 대해서 컴퓨터가 어떻게 생각하고 있는지를 먼저 물어봐야 한다. (즉, iterative 방법론으로 아키텍처도 마찬가지로 접근해야 한다.)
테스트성. TDD 를 의미하며, EJB는 테스트하기가 너무 어렵다.

위의 여섯가지 주제를 사용해서 이책 역시 저자가 만든 Spring 프레임웍을 중심으로 lightweight 프레임웍과 컨테이너들을 소개 및 적용에 대한 설명을 하고 있다.

반응형