둘째 날 키노트는 I21의 CTO인 Adrian Colyer의 The Spring Portfolio라는 것으로 시작됐다. Adrian은 이전의 전형적인 슬라이드 방식의 프레젠테이션이 아닌 매우 독특한 방식으로 이야기를 시작했다. 그것은 바로 화면을 꺼버리는 것. 50여개의 세션을 통해서 수천페이지의 슬라이드를 봐야하는 피곤함에 지쳐있을 테니 자기라도 슬라이드에서 해방시켜주겠다면서.

IMG_0005.JPG

스프링 포트폴리오는 사실 처음부터 기획된 것은 아니다. 스프링은 하나의 프로젝트로 시작됐다. 그 프로젝트는 지금도 하나의 코어 프로젝트로 존재한다. 스프링이 알려지기 시작하면서 스프링을 기반으로 해서 다양한 부차적인 프로젝트들이 생겨났다. SpringIDE, SpringSecurity(Acegi), Spring.NET, SpringWebFlow, Spring.NET 등이 그런 것이다. 이런 프로젝트들의 개발자들이 I21에 영입되면서 또는 스프링 개발자들과 긴밀한 관계를 맺으면서 하나 둘씩 공식 스프링 서브 프로젝트가 되었다. 그 후에 스프링을 적극 수용하려는 벤더들과 다른 오픈소스 프로젝트들이 생겨나면서 그 사이에서도 스프링에 기반을 둔 오픈소스 프로젝트들이 발생했다. BEA와 I21팀이 함께하는 Pitchfork Project나 Accenture와 스프링 팀이 함께하는 SpringBatch등이 대표적인 벤더 프로젝트이다. 그 외에도 OpenJPA, Toplink Essentials팀등이 I21와 함께 SpringJPA를 개발하는데 함께 하기도 했다. 그 외에도 다양한 상용, 오픈소스 벤더들이 스프링과의 연동을 앞다투어 적용하기 시작했다.

이렇게 자연스러운 과정을 거쳐서 스프링을 기반으로 한, 거의 모든 자바 엔터프라이즈 영역을 커버하는 다양한 프로젝트와 제품군을 통틀어 Spring Portfolio라고 부르기 시작한 것이다.

Adrian은 스프링 포트폴리오의 발전에 대한 이야기와 함께 새롭게 꾸며지는 스프링 개발센터를 소개해 주었다. 영국의 한 지방에 마련된 아담한 건물에 있는 사무실의 사진을 보여주면서 개발센터의 준비과정을 소개해주었다. 마지막으로 새롭게 주목할만한 기술에 대해서 설명했는데 둘째날 발표내용중 WS*DuckTyping이라는 주제가 있었다. DuckTyping이란 루비와 같이 느슨한 타입시스템을 가진 언어를 설명할 때 사용하는 표현이다.

그런데 Adrian이 갑자기 DuckTyping이 무엇인지 알려주겠다면서 가방에서 손에 끼우는 오리인형을 꺼내들었다. 그리고는 오리가(Duck) 타이핑(Typing)을 하게 하는 전략을 설명해준다고 하면서 오리를 어떻게 유인해서 잡아오는가 또 어느 부위로 타이핑을 하게할 것인가에 대한 전략을 소개하고 이를 검토해주었다. 이때부터 다들 뒤집어지기 시작했는데, 결정적인 부분은 오리의 젖은 몸 때문에 키보드가 망가질 수 있으니 방수가 되는 유연한 고무키보드를 써야한다면서 그 키보드를 꺼내 들고 직접 DuckTyping(타이핑하는 오리)을 흉내를 내는 부분이었다. 내 일생에 이런 키노트는 정말 처음이었다. :)

IMG_0007.JPG

IMG_0008.JPG

반쯤은 개그가 되버린 DuckTyping설명을 거쳐서 스프링의 주요 기술적인 흐름에 대한 간결한 설명으로 키노트를 마쳤다. 마지막 인사때 오리가 다시 등장.

스프링 개발팀의 가장 유머스러운 두명의 개발자 중의 한명인 Adrian의 정말 재치있고 즐거운 키노트 시간이었다.

이어지는 키노트는 SpringOne을 위해서 살인적인 일정을 무릅쓰고 달려왔다는 DDD(Domain Driven Design)의 창시차 Eric Evans. 작년 겨울에 만나서 참 좋은 얘기를 많이 들었던 기억이 나는데 6개월 만에 다시 만나게 되서 무척 반가웠다. 그 조용하고도 따듯한 목소리로 Strategic Design(Making Models Matter) 라는 주제의 간략한 키노트가 이어졌다. 기본적인 모델이란 무엇인가의 설명을 거쳐서 이번에 독특하게 설명된 주제는 Core Domain이라는 개념이다. 대규모의 레거시 시스템을 새로운 시스템으로 이전하면서 Core Domain부분을 어떻게 다룰 것인가에 대한 심도 깊은 설명을 해주었다. 그러면서 나온 중요한 개념이 Context Map이라는 것이다. 이번 키노트는 대규모/레거시 기반 시스템에서의 DDD를 추구하는 전략부분이 많이 다뤄져서 흥미로웠다. 그러나 문제는 들을 때는 감동적이고 흥미로운데 듣고 나면 잘 정리가 안된다는 점. 역시 DDD는 한번 산에 가서 도를 닦고 와야 하는 것인가…

IMG_0012.JPG

둘째날 첫번째 세션은 Alef Arendsen의 Spring Beyond The Obvious이다. 1개 이상의 war/jar를 이용하는 애플리케이션 구조로 스프링을 사용할 때의 전략에 관한 것과 DTAP라는 다이나믹한 환경에서 적용해야 하는 스프링의 설정에 관한 매우 실용적인 팁이었다. 모두 새롭게 배운 내용이고 매우 유용한 팁들이어서 이런 세션을 들을 땐 정말 컨퍼런스에 온 보람이 느껴진다.

여러개의 war가 같은 context를 공유하려면 어쩔 것인가? 예를 들어 dao/service 부분은 jar로 구분하고 그것을 사용하는 여러개의 war를 모아서 하나의 ear로 구성한다면?

이럴때 각 모듈의 application context를 하나의 계층구조로 만들어서 배치(deploy) 할 수 있다는 것. 물론 약간의 전략이 필요하다. 이렇게 만들면, 로딩 시간이 많이 걸리는 hibernate session factory/dao는 그대로 두고 war부분만 다시 redeploy해서 테스트를 하거나 배치하는 등의 방식이 가능해진다. 구지 복잡한 모듈구조가 필요하지 않더라도 테스트시 재배포의 시간을 획기적으로 단축할 수 있는 방법의 하나라 생각이 되어진다.

구체적인 방법은 7월 말에 KSUG모임때 한번 소개할까 한다. 사실 나중에 나오는 OSGi의 다이나믹한 배치를 보면 이것보다 훨씬 편리하긴 하지만 OSGi는 너무 큰 산이니까.. (아직 m1 released상태고)

두번째는 개발,테스트,인수테스트,운영의 4가지 다른 환경의 구성을 가진 애플리케이션의 각 단계별로 다른 애플리케이션 컨텍스트 구성을 얼마나 편리하고 자연스럽게 (수작업으로 수정없이) 하는 것이 가능한지에 대한 소개였다. 이부분은 지난 프로젝트들을 하면서 많이 고민하고 나름의 방법을 찾았던 것들인데, 여기서 소개된 것들이 내가 써온 것들보다 훨씬 유용했다는 것.

아무튼 영양가 많은 시간이었다. 바로 써먹으려고 열심히 노트도..

둘째시간은 Juergen Hoeller의 Messaging and Concurrency in Spring시간. 유겐의 발표가 다 그렇듯이 극히 테크니컬한 소개로 사실 따라가기가 정신없었다. 그래도 짧은 시간안에 스프링의 메시징과 Task executor에 대한 개념을 잘 정리할 수 있는 시간이었다.

JMS는 2.0에서 Async. 방식이 소개되면서 POJO-Driven Messaging이라는 주제로 자주 소개됐던 것인데 2.1에서는 본격적으로 namespace도 적용이 되고 더 발전된 형태로 기능이 제공된다. Task execution은 Asynchronous execution이 Async. messaging과 다르다는 것을 중점적으로 설명. 유겐은 오스트리아 출신이라 영어는 유창하지는 않아도 아주 귀에 쏙쏙 들어오게 설명을 잘 한다. 다만 약간 졸리다는 점. 레퍼런스 매뉴얼을 낭독하는 듯 하다고나 할까.

IMG_0014.JPG

다음은 Rop Harrop의 Concurrency and Spring시간. 내가 가장 자신없어하는 분야중의 하나가 바로 Concurrency다. 사실 쓸 일이 없으니까. 간혹 서버프로그램을 직접 구현해야 하는 경우를 제외하면 대부분 프레임워크 위에서 만들면 되니 그다지 자주 다루지 않았던 분야이다. 하지만 최근 멀티코어 시스템이 등장을 하고 Java5의 concurrency기능의 발전등에 힘입어서 한번쯤 제대로 해줘야 겠다는 생각.

그러나 세션을 듣고 나서 기억에 확실히 남는 것 한가지는 Java Concurrency In Practice라는 책을 꼭 보라는 것. 나머지는 @.@. 주로 데모 위주로 설명을 하면서 진행을 해서 따라가려고 했으나 눈에 잘 보이지 않는 쓰레드의 동작등을 설명만으로 다 이해하기에는 조금 벅찰 수 밖에. 잘 이해하기 힘든 세션을 듣는 것이 이런 기분이구나라는 것을 느낀 시간. 한가지 놀랐던 것은 prototype스코프의 빈의 생성은 반드시 thread safe하지 않다는 것. 그 생성 메카니즘이 나름 복잡하기 때문이란다. 암튼 앞으로 좀 신경써서 공부할 주제를 하나 잡았다.

Rop Harrop은 그 유명한 Pro Spring의 저자이다. I21의 대표개발자 중에 로드존슨과 유겐횔러는 젊잖고 딱딱한 반면 아드리안 콜리어와 롭 해롭은 정말 장난꾸러기다. 롭 해롭은 매번 세션 시작 때 마다 아드리안을 놀리는 얘기를 하나씩 하는 것으로 시작한다.

IMG_0018.JPG

다음 Eric Evans의 Modeling without over-constrainting. 그의 발표는 작년에 이어 3번째 듣는 것이다. 항상 주제는 DDD지만 매번 새로운 시각과 내용의 이야기라 신선하다. 이번에는 contraint라는 관점에서 본 DDD. 나의 결론은 도메인 디자인은 참 심오하다는 것. 그의 발표는 나중에 여러번 다시 들어봐야 다 이해가 될 듯 하다.

마지막 시간은 Juegen Hoeller의 Spring Framework 2.1. 2.1의 새로운 기능에 대한 상세한 소개이다. 제일 궁금했던 이야기를 들을 수 있었던 시간이었다.

2.1의 가장 큰 특징은 플랫폼의 변화다. Java6를 공식적으로 지원하는 최초의 메이저 오픈소스 프로젝트라는 점. EE5에 대한 완벽한 지원 그리고 OSGi를 지원하는 구조로 모듈화 됐다는 점이 특징이다.

그동안 하나 궁금했던 것이 Java5이전, 특히 1.4, 1.3과 호환이 된다면 기능이 결국 다 1.3레벨에 맞춰지는 것이 아닌가 했다. 그런데 유겐의 설명을 들어보니 스프링은 다이나믹하게 JDK의 버전을 체크해서 상위버전이면 그 기능을 활용할 수 있는 것을 자동으로 선택해서 사용하고 아니라면 하위 버전의 기능을 이용한 부분이 동작한다는 것이다. 2.1은 JDK1.4 ~ 1.6까지 지원이다. 각 버전을 자동으로 체크해서 동작하니 별 걱정없이 쓰면 된다는 점. 스프링의 매력 중의 하나일 것이다.

흥미로운 기능중 하나는 J2EE 1.4이상에서 스프링 컨텍스트를 RAR파일로 배포할 수 있다는 점. META-INF/ra.xml에 간단히 AC를 지정하면 된다. 이를 이용하면 웹환경이 아닌 메시징이나 백그라운드 처리를 위한 기능의 배치가 편리해진다.

WebSphere의 인증을 통과했으므로 WebSphere의 내부적인 다양한 Tx매니저와 전용 API등을 지원하는 기능들을 쓸 수 있다. WebSphereUowTransactionManager따위가 그 대표적이다.

또 OSGi의 배포가 가능해졌다는 점. 스프링의 각 모듈을 OSGi bundle형태로 배치하고 사용할 수 있다. 스프링 기반으로 만든 애플리케이션을 별도의 수정없이 JEE와 OSGi 두개의 플랫폼에 다 적용할 수 있다는 점은 대단한 매력이 될 것이다.

두번째로 설정의 변화. 제일 큰 특징은 뭐니 뭐니 해도 어노테이션을 이용해서 IoC설정이 가능해졌다는 점. JSR-250의 도입과 자체적인 어노테이션을 이용해서 상당히 편리하게 IoC/DI설정이 가능해졌다. 어노테이션을 쓴다고 해도 XML이 함께 쓸 수 있는 것은 물론이다. 특히 auto-detection기능으로 어노테이션만 달면 자동으로 빈으로 등록이 된다는 점도 매력. 또 어노테이션 기반의 Autowiring은 기존의 byName, byType의 장점을 모두 갖춘 기능을 지원한다.

AspectJ의 설정에 bean(..)이라는 명시적인 스프링용 식이 추가됐다. 그외에 JCA, JMS등의 기능 추가도 포함.

아직은 구현은 안됐으나 앞으로 파어널까지 나올 것들은 JUnit4의 지원, Rhino/JSR-223지원, JSP Form tag의 기능확장 등이다.

이로서 영회와 몇몇의 독촉에 못이겨 쓴 둘째날 후기 끝.

Related posts:

  1. SpringOne 2007
  2. 뒤늦게 쓰는 SpringOne 2007 셋째날 후기
  3. SpringOne 2007 첫날 후기
  4. SpringOne 2007 & parleys.com
  5. TheSpringExperience 2007 둘째날
  6. QCon 2007 San Francisco 참석중
  7. SpringOne 2008 (1) – OSGi
  8. 성의없는 QCon San Francisco 2007 후기
  9. SpringOne 2006 DVD 도착
  10. SpringOne 컨퍼런스에 공짜로 참가하는 방법
  11. 제2회 스프링 공개세미나를 마치고.. 내일은 SpringOne 출발이다

Facebook comments:

to “SpringOne 2007 둘째 날 후기”

  1. 후후… 역시 장문의.. 좋은 글이네요.
    근데.. 글 마무리가.. 첫날 것보단..
    기억이 흐릿해지기 전에 마지막 날도 어서 쓰세욧!

  2. 좋은 후기 잘 읽었어요.
    마지막날 후기도 기대하고 있을께요 ^^;
    (다음 세미나가 점점 멀게만 느껴지네요…)

  3. 장문의 좋은 후기 잘 읽었습니다.
    마지막날 후기 저 역시 기대할께요~~~
    영어공부해서 저 역시 가보고 싶어지네요… ^^;;

  4. 토비님 강의만 두번 들었는댕 정말 느낀점 많았습니다.
    매일 좋은글 안올라 오나 두리번 거리고 있어요.. 영회님 불르그랑 토비님 블로그에 글이 올라오면 신나요 ^^; 많이 많이 포스팅 해주세요…

  5. [...] SpringOne 2007 둘째 날 후기 [...]

  6. [...] SpringOne 2007 둘째 날 후기 [...]

  7. [...] SpringOne 2007 둘째 날 후기 [...]

  8. mXzlK5 yqpvbkzbtuje, [url=http://umsvdoepjvjy.com/]umsvdoepjvjy[/url], [link=http://sbfltbipgmuj.com/]sbfltbipgmuj[/link], http://qmxxctgeqvjh.com/

  9. Sneak A Peek At THIS WebSite

  10. You Can Check Here
    [url=http://taobaohepaipai.com/member/configipayiyeepay.php?/good-diet-plans-meizitang-outlet-store-online.html]good diet plans-meizitang-outlet store online[/url]
    good diet plans-meizitang-outlet store online

  11. Look At THIS Site
    [url=http://australiaukbootsale.com]ugg australia outlet[/url]
    ugg australia outlet

  12. You can try this out
    [url=http://baileybuttontriplett.com]ugg bailey button triplet[/url]
    ugg bailey button triplet

  13. massai shoes SpringOne 2007 둘째 날 후기 » Toby’s Epril

  14. buy mbt shoes cheap SpringOne 2007 둘째 날 후기 » Toby’s Epril

  15. I simply want to say I am just beginner to blogging and honestly enjoyed your web blog. More than likely I’m planning to bookmark your blog . You amazingly have terrific stories. Thanks for sharing with us your blog site.

  16. Hi there! This post couldn’t be written any better! Reading through this post reminds me of my good old room mate! He always kept talking about this. I will forward this article to him. Fairly certain he will have a good read. Many thanks for sharing!

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