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. This website definitely has all of the information and facts I needed about this subject and didn’t know who to ask.

  2. There’s certainly a great deal to know about this topic. I really like all of the points you made.

  3. This article will help the internet viewers for creating new blog or even a weblog from start to end.|

  4. Great info. Lucky me I recently found your site by accident (stumbleupon). I’ve saved as a favorite for later!

  5. This website was… how do I say it? Relevant!! Finally I have found something which helped me. Cheers!

  6. I truly appreciate this post.Really thank you!

  7. Can I just say what a comfort to discover a person that genuinely knows what they are discussing on the net. You definitely know how to bring a problem to light and make it important. More and more people really need to read this and understand this side of the story. I was surprised that you aren’t more popular since you surely have the gift.

  8. Good site you have got here.. It’s difficult to find high-quality writing like yours nowadays. I really appreciate individuals like you! Take care!!

  9. May I simply say what a comfort to discover somebody who genuinely knows what they’re discussing online. You actually realize how to bring a problem to light and make it important. A lot more people need to read this and understand this side of your story. I was surprised that you’re not more popular given that you most certainly have the gift.

  10. I blog quite often and I truly thank you for your information. This article has truly peaked my interest. I will bookmark your blog and keep checking for new details about once a week. I opted in for your Feed as well.

  11. Your style is unique in comparison to other people I’ve read stuff from. Many thanks for posting when you have the opportunity, Guess I will just bookmark this site.

  12. This web site truly has all of the information and facts I needed concerning this subject and didn’t know who to ask.

  13. I quite like reading through a post that will make men and women think. Also, thanks for allowing me to comment!

  14. Hi there! This blog post could not be written much better! Looking through this post reminds me of my previous roommate! He continually kept preaching about this. I most certainly will forward this post to him. Fairly certain he’s going to have a good read. Many thanks for sharing!

  15. I could not refrain from commenting. Exceptionally well written!

  16. An intriguing discussion is worth comment. There’s no doubt that that you ought to publish more about this topic, it might not be a taboo matter but typically folks don’t discuss these issues. To the next! Cheers!!

  17. That is a really good tip particularly to those fresh to the blogosphere. Short but very accurate info… Many thanks for sharing this one. A must read article!

  18. Your style is very unique compared to other people I have read stuff from. Thanks for posting when you’ve got the opportunity, Guess I will just book mark this page.

  19. Hello Dear, What you ?came up with here surely have me excited up to the last sentence, and I gotta tell you I almost never read through the entire post of blogs as I often got bored and tired of the junk that is presented in the junkyard of the world wide web on a daily basis and then I just end up checking out the headlines and maybe the first lines or something like that. But your tag-line and the first paragraphs were so cool and it immediately grabbed my attention. So, I just wanna say: nice and rare job! Thanks, really.

  20. Very nice blog post. I definitely appreciate this website. Thanks!

  21. I used to be able to find good info from your content.

  22. This page certainly has all the information I wanted about this subject and didn’t know who to ask.

  23. Good day very cool web site!! Man .. Beautiful .. Amazing .. I’ll bookmark your blog and take the feeds additionally…I’m glad to find a lot of useful info right here in the submit, we’d like develop more strategies on this regard, thank you for sharing.

  24. Spot on with this write-up, I absolutely think this website needs much more attention. I’ll probably be back again to read through more, thanks for the advice!

  25. Thanks for sharing excellent informations. Your web-site is very cool. I’m impressed by the details that you have on this blog. It reveals how nicely you perceive this subject. Bookmarked this web page, will come back for extra articles. You, my pal, ROCK! I found just the info I already searched everywhere and just could not come across. What a perfect web site.

  26. This site really has all of the information and facts I needed concerning this subject and didn’t know who to ask.

  27. I really enjoy the blog post.Thanks Again. Really Great.

  28. After I initially commented I seem to have clicked on the -Notify me when new comments are added- checkbox and from now on each time a comment is added I receive 4 emails with the same comment. Perhaps there is an easy method you can remove me from that service? Thanks a lot!

  29. I’m amazed, I must say. Seldom do I come across a blog that’s equally educative and interesting, and let me tell you, you’ve hit the nail on the head. The issue is something which too few folks are speaking intelligently about. I’m very happy I came across this in my hunt for something concerning this.

  30. I truly appreciate this blog post.Really looking forward to read more.

  31. I would like to express my thanks to you just for rescuing me from this setting. Right after looking out throughout the the web and getting views which are not helpful, I thought my life was over. Existing without the answers to the problems you have sorted out by means of your good post is a critical case, as well as ones which may have in a negative way affected my entire career if I hadn’t come across your blog. Your own personal training and kindness in dealing with every item was important. I’m not sure what I would’ve done if I hadn’t come upon such a subject like this. It’s possible to at this point relish my future. Thanks so much for your impressive and effective help. I will not be reluctant to suggest your site to any individual who should receive tips about this situation.

  32. Oh my goodness! Incredible article dude! Thanks, However I am going through issues with your RSS. I don’t know the reason why I can’t join it. Is there anyone else getting the same RSS problems? Anyone who knows the solution will you kindly respond? Thanx!!

  33. I’m amazed, I have to admit. Rarely do I encounter a blog that’s equally educative and engaging, and let me tell you, you’ve hit the nail on the head. The issue is something that not enough people are speaking intelligently about. I’m very happy that I came across this in my search for something relating to this.

  34. You made some first rate points there. I appeared on the internet for the problem and found most individuals will associate with along with your website.

  35. Hello! I could have sworn I’ve been to this site before but after looking at some of the articles I realized it’s new to me. Anyways, I’m definitely pleased I discovered it and I’ll be bookmarking it and checking back often!

  36. Hi there! This article couldn’t be written much better! Reading through this post reminds me of my previous roommate! He always kept talking about this. I’ll send this post to him. Pretty sure he’ll have a good read. I appreciate you for sharing!

  37. This web site certainly has all of the info I needed concerning this subject and didn’t know who to ask.

  38. After looking at a handful of the blog articles on your website, I honestly like your technique of blogging. I book-marked it to my bookmark website list and will be checking back soon. Please check out my website too and let me know what you think.

  39. Your style is really unique compared to other people I’ve read stuff from. I appreciate you for posting when you’ve got the opportunity, Guess I will just bookmark this page.

  40. Hi there! I could have sworn I’ve been to this web site before but after browsing through a few of the articles I realized it’s new to me. Anyhow, I’m definitely pleased I stumbled upon it and I’ll be bookmarking it and checking back often!

  41. You have made some really good points there. I looked on the internet for more information about the issue and found most people will go along with your views on this website.

  42. There is definately a lot to learn about this subject. I really like all the points you have made.

  43. Wonderful post! We are linking to this particularly great article on our website. Keep up the good writing.

  44. This blog was… how do I say it? Relevant!! Finally I have found something that helped me. Kudos!

  45. Thanks for sharing, this is a fantastic post. Really Great.

  46. Major thanks for the blog post.Much thanks again. Cool.

  47. This website was… how do I say it? Relevant!! Finally I’ve found something which helped me. Appreciate it!

  48. After exploring a number of the blog posts on your website, I honestly appreciate your way of blogging. I book marked it to my bookmark webpage list and will be checking back soon. Please check out my website as well and tell me how you feel.

  49. I needed to thank you for this wonderful read!! I certainly enjoyed every little bit of it. I have you bookmarked to check out new things you post…

  50. Very good info. Lucky me I discovered your website by accident (stumbleupon). I’ve book marked it for later!

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