Spring Framework의 개발자 Rod Johnson의 최신저서 “J2EE Development without EJB“라는 책을 읽고 있다. Gavin King의 Hibernate In Action을 읽을 때와 마찬가지로 정말 한문장도 빼놓을 것이 없는 주옥 같은 내용으로 가득차 있다.

자바의 서버기술 – J2EE을 이용한 시스템 개발에 대한 가장 현실적이고 맹쾌한 분석과 비판 그리고 그에 대한 대안까지 빠짐없이 제시되고 있다. 처음엔 책을 다 읽고 나서 서평정도나 써볼까 했는데 다 읽고 나면 너무 할 얘기가 많아서 아예 손도 못대지 않을까 싶다. 그때 그때 각 챕터마다 또는 부분마다 제시하는 핵심 메시지와 그에 대한 나의 생각을 정리해보고 싶다.

왜 EJB가 없는 J2EE를 말하는가? 그에 대한 답으로 저자가 먼저 제시하는 것은 J2EE = EJB가 아니라는 사실이다. 오히려 J2EE는 EJB 를 포함하여 훨씬 넓은 영여을 가지고 있다. J2EE에는 그 자체로 훌륭한 – 버릴 수 없는 – 좋은 서비스들을 많이 가지고 있다. EJB는 그 중 하나에 불과하다.

그럼 왜 EJB는 왜 사용하려 하지 않는가? EJB는 너무 많은 문제를 가지고 있기 때문이다. EJB는 over-engineering된 spec.을 가지고 있다. 너무 이상적이랄까? 그래서 실전에서 난이도, 생산성, 성능, 유지보수성, 테스트 모든 면에서 많은 문제를 노출하고 있다.

EJB책을 처음 읽기 시작하면서 참 이상적이고 완벽한 스펙을 지향한다는 느낌을 받았다. 그러나 그 이상적인 스펙이 현실에서는 매우 드물게 요구된다. 그 외의 대부분의 개발요구사항이나 환경에서는 사실 그 이상적인 스펙을 충족하는 EJB를 개발하기 위해서 너무 많은 것을 희생한다.

EJB는 그 난이도와 요구하는 시스템의 규모와 중요성 크기 때문에 초기엔 엔지니어들의 몸값이 엄청났던 기억이 난다. 그 후에 많은 엔지니어들이 EJB시장에 뛰어들었고 EJB는 매우 보편적인 기술로 자리를 잡은 듯 하다. 하지만 아직 대부분의 EJB개발자나 아키텍트들은 EJB를 대부분 완벽하게 이해하고 있지조차 못하다. 게다가 생산성이 너무 떨어지므로 고가의 IDE를 사용하거나 각종 관련툴에 익숙해야 하고 성능의 손해부분을 감당하기 위해 역시 고가의 시스템을 도입해야 했다. 물론 엔지니어의 기술부족으로 인해서 실패한 프로젝트로 끝나는 경우가 가장 많기도 하다.

저자는 EJB가 3년 내에 Legacy Technology가 될 것 이라고 말한다. EJB3.0이 나온다고 할지라도. 분산객체기술의 대표격이었던 OMG의 CORBA의 몰락과 어쩌면 유사한지도 모르겠다.

오버하지 말아야 한다는 진리는 어디에나 적용되는 것 같다.

그럼 대안은 무엇인가? EJB가 없다면? EJB이전 시절로 돌아가야 하는가? 기존 EJB의 비판자들은 비판만 했을 뿐이지 별다른 대안을 내놓지 못했다. 기것해야 SLSBs에 JDBC등을 쓰는 정도로 타협했을 뿐이다. 그러나 이 책의 저자는 EJB의 훌륭한 대안으로 – EJB의 많은 장점들을 내포하고 또 더 나은 – 많은 기술과 또 다른 Framework들이 있음을 제시하고 그것을 어떻게 적용할지 설명하기 위해서 이 책을 쓰고 있는 것이다.

또다른 EJB와 갈은 실패를 만들지 않기 위해서 가장 먼저 생각할 것은 기본 핵심가치(core values)인데 그 것은 6가지로 구성된다.

1. Simplicity

자바기술의 요즘 경향은 simple한 것을 추구하는 것이다. 복잡한 기술나 아키텍처가 요구될 때가 있다. 하지만 그것이 실제적인 필요에 의해서가 아니라 기술 그 자체가 그렇게 구성되어 있기 때문이라면 바람직 할 수 없다. 설령 복잡한 요구사항들이 (분산DB, 멀티타입 클라이언트와 갈은) 후에 요구된다 하더라도 처음부터 그런 모든 것을 위한 복잡한 아키텍처를 사용할 필요가 없다. Scale down이 되지 않는 EJB같은 복잡한 아키텍처가 아니라 필요에 따라서 아키텍처 리팩토링에 의해서 scale up할 수 있는 심플한 아키텍처를 추구하는 것이 바람직 하다.

리팩토링이 가능한 좋은 아키텍처는 어떤 것인가? 저자는 두가지를 제시한다.

첫째는 좋은 OO디자인을 따르는 것이다. 예를 들면 class보다는 interface를 이용한 프로그램 같이. 수많은 OOP서적과 디자인패턴 책에서 너무도 잘 가르쳐 주고 있는 부분이다.

둘째는 EJB와 같은 복잡한 기술을 POJO인터페이스 뒤로 숨기는 것이다.

그런면에서 Spring Framework은 이 두가지 원칙을 철저하게 따라서 만들어진 프레임웍이다. 그로 인해 얼마나 유연하게 수많은 기술들이 그 기본 아키텍처안에 쉽게 연결이 되고 scaling될 수 있는지 볼 수 있다. 최근 TopLink개발팀에서 먼저 나서서 Spring과 연동되는 기술을 만들어 제공한 것도 일단 Spring이 그만큼 유연하고 심플한 그러나 스케일링이 쉽게 가능한 프레임웍이기 때문일 것이다.

2. Productivity

실무에서 가장 중요한 것은 결국 생산성이고 그로 인한 비용절감&시간단축이 아니겠는가. 왜 J2EE개발자들을 고급 노가다맨들로 전락시키는 것인가.

3. OO

Java는 그 자체로 훌륭한 OO언어이다. 왜 특정기술(EJB)등이 OO에 선행하여 좋은 OO디자인을 방해하는가? OO기술이 주는 장점을 살릴 수 없는 기술을 선택하는 것은 피해야 할 것이다. 깔끔한 디자인과 높은 코드재활용을 가능케 할 수 있는 좋은 OO디자인을 포기해야 할 이유가 없다. 웹이나 서버환경이라는게 단일 클라이언트 환경보다 OO디자인면에서 조금 더 불편하다고 해도 J2EE기술은 충분히 Object Oriented 할 수 있다.

4. Primacy of Requirement

중요하지 않은 부분-요구사항에 많은 정력을 낭비하지 말자. 분산-멀티DB를 지원할 수 있게 하는 것이 지금 하는 프로젝트에서 정말 꼭 필요한 중요한 것인가? 아니라면 왜 그것을 위해서 시간과 기술을 낭비하는가. 정말 고객-프로젝트의 목표-이 원하는 핵심요구사항에 집중하기.

5. Empirical Process

실증(실험?)적인 방법으로 기술을 도입하고 사용하자. 스스로 확인하고 테스트하고 검증된 기술과 구조를 사용해야 한다. IT계는 희한하게도 감정적인 유행도 많고 검증되지 않은 추측과 유언비어가 난무한다. 무뇌아 수준의 초보개발자들이 기술적인 경험이나 확인도 없이 업체가 제시한 마케팅 캐치프레이즈나 읊어대면서 서로 자기 기술이 잘났다고 싸우는 모습을 보면 정말 가관이다. 어느 누구의 말도 믿지 말고 스스로 가장 심플한 구조를 만들어 검증해보면 된다. 여기서 그 유명한 말 “Ask the computer”가 나오는데 어떤 요구사항을 만족시킬 수 있는 가장 좋은 아키텍처는 컴퓨터 스스로가 가장 잘 안다. 만들어서 스스로 돌려보면 될 것 아닌가. 이를 지원하기 위한 각종 방법론들 – RUP, XP Verical Slice – 등이 있으니 알아서 좋을 대로 해보면서 하기를.

사전 테스트에서 꼭 고려해야 할 세가지로 성능, 난이도, 유지보수성을 들고 있다. 가슴 절절히 와 닿는다.

최근 초대형 프로젝트가 검증안된 어떤 특정기술에 종속적으로 개발했다가 막판에 시스템이 정상가동이 안되서 개발자들과 업체가 애를 먹고 있다는 얘기를 들었다. 프로젝트를 베타테스트화 하지 말자. 마루타 사이트도 아니고 말이다. 베타테스트는 프로젝트 앞에 하면 될 것을.

6. Testability

TDD니 TFD(Test First Development)등이 유행하고 있다. 좀 지나치게 유행하는게 아닌가 싶기도 한데 그래도 그 중요성을 무시할 수 없다.

저자의 이 지향점들을 추구하기 위해서 그 결과물로 등장한 것이 결국 Spring Framework이다. 물론 Spring Framework외에도 이런 요구조건을 충족시킬만한 제품들이 몇가지 더 있다. 앞으로 더 많이 등장할 것이고 더 발전하리라 본다. 여러 기술과 제품들이 경쟁하고 발전해 나가는 과정이 그간 EJB를 쓰면서 힘들었던 시간을 보상해주리라 믿는다.

다음 번에는 좀더 본격적으로 얘기를 해보자.

Related posts:

  1. J2EE Development without EJB (5) – EJB, Five Years On
  2. J2EE Development without EJB (4) – The Simplicity Dividened
  3. J2EE Development without EJB (6) – Lightweight Container & IoC
  4. J2EE Development without EJB (3) – Architecture
  5. J2EE Development without EJB 정리는 이만
  6. J2EE Development without EJB (2) – Goal
  7. SpringFramework vs. J2EE?
  8. 토비의 스프링 3이 나오기까지 (1)

Facebook comments:

to “J2EE Development without EJB (1) – Why "J2EE Without EJB"?”

  1. After looking at a few of the blog posts on your web page, I really appreciate your way of blogging. I saved as a favorite it to my bookmark site list and will be checking back soon. Take a look at my website too and let me know how you feel.

  2. Everyone loves it when individuals get together and
    share views. Great website, stick with it!

  3. This site was… how do you say it? Relevant!! Finally I’ve found something that helped me. Cheers!

  4. Oh my goodness! Amazing article dude! Thank you, However I am encountering issues with your RSS. I don’t understand the reason why I am unable to join it. Is there anybody else having the same RSS problems? Anyone that knows the solution can you kindly respond? Thanks!!

  5. Having read this I thought it was extremely informative. I appreciate you spending some time and energy to put this informative article together. I once again find myself personally spending a lot of time both reading and leaving comments. But so what, it was still worthwhile!

  6. Hi! I simply wish to give you a big thumbs up for the great info you have right here on this post. I will be returning to your site for more soon.

  7. This is a topic which is near to my heart… Many thanks! Exactly where are your contact details though?

  8. You should be a part of a contest for one of the highest quality websites on the web. I most certainly will recommend this website!

  9. Excellent blog you’ve got here.. It’s difficult to find high quality writing like yours these days. I honestly appreciate people like you! Take care!!

  10. Very good post. I am going through many of these issues as well..

  11. There is certainly a lot to know about this topic. I like all the points you made.

  12. Excellent post. I am facing a few of these issues as well..

  13. Excellent post. I definitely appreciate this site. Keep it up!

  14. Nice post. I learn something totally new and challenging on sites I stumbleupon on a daily basis. It will always be exciting to read content from other writers and use something from other web sites.

  15. This excellent website really has all of the information and facts I wanted about this subject and didn’t know who to ask.

  16. I wanted to thank you for this excellent read!! I definitely loved every bit of it. I have you book marked to check out new stuff you post…

  17. May I simply say what a comfort to discover someone who truly knows what they are talking about online. You definitely understand how to bring an issue to light and make it important. More people really need to read this and understand this side of your story. I was surprised that you are not more popular because you definitely have the gift.

  18. I love looking through an article that can make people think. Also, thanks for allowing me to comment.

  19. You should be a part of a contest for one of the best websites on the web. I most certainly will highly recommend this blog!

  20. Aw, this was a very nice post. Finding the time and actual effort to produce a top notch article… but what can I say… I procrastinate a whole lot and don’t manage to get anything done.

  21. Next time I read a blog, I hope that it does not disappoint me just as much as this one. After all, Yes, it was my choice to read through, nonetheless I really thought you would probably have something helpful to say. All I hear is a bunch of complaining about something that you could possibly fix if you were not too busy looking for attention.

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