Rod Johnson의 J2EE Development without EJB를 연말선물로~~!

3장에서는 아키텍처부분을 집중적으로 살펴본다.
J2EE아키텍처를 이루고 있는 부부은 크게 3가지로 나눠진다. 잘 알고 있는 3-tier구조의 아키텍처이다.

저자가 주목하고 있는 부분은 Business Service Layer이다. 좋은 아키텍처는 잘 만들어진 Business Service Layer를 가지고 있어야 한다. 비즈니스 로직을 사용자, Web-UI, 리모트 클라이언트에게 제공하는 관문이 되기 때문이다.

좋은 Business Service Layer가 가져야 할 조건은 매우 많다. 기본적으로 J2EE아키텍처의 핵심가치들을 모두 충족해야 함은 물론이고 그 외에도 Presentation layer에 독립적이어야 하고, 트랜잭션 관리가 가능해야 하며, 개발생산성이 높아야 하고, 그 뒤에 있는 Data access layer가 감춰져 있어야 하며, 필요에 따라서 scale out이 가능해야 하고, 테스트성이 좋아야 한다.

대표적인 business service layer들에는 Session EJB, .NET Serviced Component, MVC Web Actions, Service Layer in Lightweight Container등이있다. 결국 이 책에서 얘기하고자 하는 – 지지하고자 하는 – 것은 마지막 service layer running in lightweight container라고 볼 수 있다.

왜 lightweight container의 service layer를 가진 아키텍처가 좋은 가에 대해서 크게 4가지의 대표적인 J2EE Architecture들을 비교해가면서 그 장단점을 설명하고 있다.

첫째는 Class J2EE architecture using remote EJBs. 뭐 더 말할 것도 없이 대부분의 경우에 최악의 아키텍처 되겠다. 그 최악의 복잡함은 수많은 단점을 파생시킨다. 거의 없겠지만 꼭 필요한 케이스가 아니라면 절대 선택하지 말아야 할 아키텍처이다.

둘째는 Local EJB Architecture이다. Remote EJB가 가지는 단점을 많이 축소시켜준 EJB의 타협판인데 – 처음 Local EJB가 나왔을 때 이게 머야 장난치나 하는 생각이 들었다 – 현실적인 요구 또는 불만이 약간 반영된 것으로 보면 될 것 같다. Remote EJB의 단점을 일부 극복했지만 반대로 Remote EJB의 일부 장점들을 잃어버렸고 또 여전히 EJB의 단점들을 그대로 안고 있는 아키텍처이다. EJB의 기본장점을 많이 포기하고 이렇게 땜빵식의 Local EJB를 쓴다면 왜 구지 EJB를 써야하는가가 의문으로 제기될 것이다.

셋째는 Ad hoc J2EE Architecture without EJB이다. 많은 J2EE프로젝들은 EJB없이 잘 개발되어 사용되어지고 있다. 이런 경우 그 아키텍처 구조는 해당 프로젝트의 아키텍트에 따라 다르게 설정되고 그런 면에서 “Ad hoc”이라 할 수 있다. 전형적으로 MVC구조의 web-tier를 가지며 POJO기반의 business logic을 이용한다. 종종 web-tier와 business-logic tier가 혼재하며 자체적으로 만든 singleton이나 factory를 사용한다. 트랜잭션은 JTA등을 이용해서 프로그램적으로 구현한다. Data쪽은 O/R툴이나 JDBC를 수용한다.

EJB가 가진 많은 단점을 극복할 수 있는 좋은 아키텍처이다. EJB의 복잡한 구조와 작업들을 피할 수 있고 어느정도 빠른 생산성이 보장된다. 하지만 EJB가 가지는 장점들 – remoting, business object관리의 표준, business service layer의 존재, declarative transaction management – 을 포기해야 한다. 제일 문제는 비즈니스 오브젝트들을 다루는 표준방법이 부재하다는 것이다. 또한 테스트성 면에서 EJB에 비해서 그다지 차이점이 없다.

뛰어난 아키텍트가 참여했다면 같은 조건의 EJB프로젝에 비해서 이 방법이 훨씬 나은 결과를 가져올 것이다.

넷째는 바로 이 책이 주장하는 “Lightweight Container”기반의 Architecture이다.

세번째 아키텍처와는 달리 lightweight container architecture는 business service layer면에서 EJB와 닮은 점이 많다. EJB가 가지는 단점을 피하면서 EJB의 장점은 살리는 것이 바로 lightweight container가 가지는 목적이랄까? Lightweight container는 J2EE기반이 아니다. J2EE에서 독립적이다. 또 어느 특정 UI(Web-UI)나 Data access기술에도 독립적이다.

Lightweight container의 주요 관심사는 사용하기 복잡하지 않고 특정기술에 종속적이지 않으면서 – 심지어는 자기 자신에게도 – 다양한 business service layer의 장점들을 수용하는 것이다. 대표적으로 Spring Framework과 PicoContainer가 있다. 엔터프라이즈 서비스의 주요특징중의 하나인 트랙잭션관리라는 면에서 AOP를 이용한 방법을 사용하고 있는데 이 점에선 SpringFramework이 가장 우수하고 통합적인 기능을 제공한다.

단점도 물론 있다. 우선 Local EJB와 마찬가지로 remoting facade를 사용하지 않고 직접적으로 remoting을 사용할 수 없다. 하지만 과연 remoting이 얼마나 필요한지 따져보면 큰 단점이라고 할 수 없다. 두번째는 아직 lightweight container의 standard가 없다는 점이다. 하지만 조만간 Spring이 de facto standard가 되지 않을까 기대해본다. 세번째는 아직 이런 아키텍처에 익숙한 개발자나 아키텍트들이 적다는 것인데 시간이 해결해 줄 문제이다.

다음은 Architectures In Practice라는 주제로 SUN의 Java PetStore로부터 시작해서 각 벤더와 단체에서 내놓은 각종 blueprints나 아키텍처 샘플들을 분석해나가는데… 다들 이런 저런 단점들을 – 또는 수준 낮은 코드도 보인다! – 가지고 있다. 지속적으로 지적된 내용들이다.

마지막으로 Application Server가 필요한 것인가의 문제제기인데. 사실 고가의 복잡한 application server는 꼭 필요한 경우가 아니라면 구지 선택할 이유가 없다는 것이 맞다. 분산트랜잭션을 쓴다거나 리모팅을 반드시 사용해야 할 경우라면 EJB와 WAS를 사용하는 것이 필요할 것이다.

결론적으로 뛰어난 Business Service Layer를 제공하는 것 – EJB와는 비교가 안되는 – 이 책이 제시하고자 하는 Spring Framework이 만들어진 목적이라고 할 수 있을 것이다.

계속해서 이런 주제들을 좀더 세세한 범위에서 깊이 파고 들어가서 분석하고 그 대안으로 사용될 Lightweight Container에 대해서 살펴볼 것이다.

이 책을 읽으면서 그토록 최첨단기술임을 자랑하는 J2EE분야에 (다른 기술쪽도 마찬가지겠지만) 얼마나 많은 미신들이 존재하는지 놀라게 된다. 자기 손으로 확인한번 해보지 않은 기술을 맹신하는 태도는 IT엔지니어로서 일단 실망스러운 것이다. 또는 그렇게 잘못된 믿음으로 사람들을 이끄는 업체나 개발자 스스로 조심해야 할 것이다. 나도 조금 찔리는 부분이다.

Related posts:

  1. J2EE Development without EJB (5) – EJB, Five Years On
  2. J2EE Development without EJB (6) – Lightweight Container & IoC
  3. J2EE Development without EJB (2) – Goal
  4. J2EE Development without EJB (4) – The Simplicity Dividened
  5. J2EE Development without EJB (1) – Why "J2EE Without EJB"?
  6. J2EE Development without EJB 정리는 이만
  7. SpringFramework vs. J2EE?
  8. 망해가는 EJB 최후의 발악인가? Mastering EJB3 (4th Ed)
  9. 하이버네이트와 스프링의 갈등
  10. JBoss Advanced Training 3일째
  11. 자바프로그래밍 서적 Top 10
  12. Domain Model vs. DTO
  13. Bile Blog – Hani Suleiman 인터뷰
  14. Spring에 관한 흥미로운 글 몇가지
  15. TSE2006 셋째날 세션1 – Applying DDD int the Enterprise with AspectJ

Facebook comments:

to “J2EE Development without EJB (3) – Architecture”

  1. Fine way of telling, and fastidious paragraph to get facts concerning my presentation subject, which i am going to present in institution of higher education.

    Look into my web site; căn hộ grand center

  2. Hello to every body, it’s my first visit of this website; this website includes remarkable and in fact good stuff for visitors.

    Here is my web-site … cbd oil gummies

  3. Hey There. I found your blog using msn. This is a very well written article.

    I’ll make sure to bookmark it and return to read more of your useful info.
    Thanks for the post. I’ll definitely return.

    Feel free to visit my web page … http://jayadomino99.com/

  4. If some one wants expert view on the topic of blogging after that i recommend
    him/her to go to see this web site, Keep up the fastidious work.

    My web page … http://bandar-togelsingapore.com/

  5. I will right away grab your rss feed as I can not to find your e-mail subscription link or e-newsletter service.
    Do you have any? Please allow me realize so that I
    may just subscribe. Thanks.

    My site – 899cash

  6. Thanks to my father who informed me concerning this
    website, this webpage is really awesome.

    Also visit my web page :: Best CBD Oil

  7. Pretty! This was an incredibly wonderful post. Thanks best cbd gummies for sleep
    supplying this info.

  8. Good day! This is kind of off topic but I need some help from
    an established blog. Is it difficult to set up your own blog?
    I’m not very techincal but I can figure things out pretty
    fast. I’m thinking about making my own but I’m not sure where to begin. Do you have any tips or suggestions?
    Appreciate it

    Also visit my homepage :: BandarQ

  9. I have been exploring for a bit for any high quality articles or blog
    posts on this kind of space . Exploring in Yahoo
    I at last stumbled upon this site. Studying this info So i am satisfied to convey that I’ve a very just right uncanny feeling I came upon exactly
    what I needed. I so much surely will make sure to don?t overlook this
    web site and give it a glance on a continuing basis.

    my web site :: Agen Bola

  10. I have been exploring for a bit for any high-quality articles or
    blog posts on this kind of house . Exploring in Yahoo I
    at last stumbled upon this website. Studying this information So i
    am happy to show that I have a very excellent uncanny feeling I found out
    exactly what I needed. I most without a doubt will make sure to don?t fail to remember this site and give it a glance
    regularly.

    Check out my page :: CBD Oil for insomnia

  11. These are really impressive ideas in on the topic of blogging.
    You have touched some pleasant factors here. Any way keep up
    wrinting.

    My web blog … cbd gummies reviews

  12. An intriguing discussion is definitely worth comment.
    I think that you need to publish more on this issue, it might not be a taboo
    matter but typically people don’t talk about such subjects.
    To the next! Many thanks!!

    Here is my blog Capsa Susun

  13. I’ve been exploring for a little bit for any high-quality articles or
    weblog posts on this kind of area . Exploring in Yahoo I eventually stumbled
    upon this website. Reading this info So i’m happy to express that I
    have an incredibly just right uncanny feeling I came upon exactly what I
    needed. I so much indisputably will make sure to don?t fail to remember
    this site and give it a glance regularly.

    Also visit my web page … Capsa Susun

  14. Your method of explaining all in this article is truly pleasant,
    every one can without difficulty understand it,
    Thanks a lot.

    My web blog :: Bandar66

Leave a Reply

(required)

(required)

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

© 2017 Toby's Epril Suffusion theme by Sayontan Sinha