벨기에에서 돌아와 4일만에 다시 중국으로 출발해서 3주간의 휴가 겸 봉사활동을 다녀왔다. 다녀와서 밀린 일들 처리하고 두개의 세미나 진행하고 하느라 정말 눈코뜰새 없이 정신없이 시간이 흘러갔다. 이제 미뤄둔 것들을 하나씩 정리해야 겠다고 생각하고 보니 SpringOne 마지막날 후기를 쓰지않았다. 이런!

 

기억을 더듬어서 마지막날 있었던 강의를 다시 한번 정리해보자.

 

마지막 날은 키노트는 없이 바로 트랙별 세션이 시작됐다.

첫번째는 Adrian Colyer의 OSGi, New Foundation for Enterprise Apps. Spring OSGi에 대해서는 지난 겨울의 TSE2006에서 이미 들은바가 있지만 말 그대로 OSGi 기초개념 소개에 해당하는 수준이었기 때문에 사실 그 실체에 대한 감을 잡기는 쉽지 않았다. 그저 새로운 자바 모듈 시스템이라는 것 정도.

Spring-OSGi 프로젝트를 이끌고 있는 Adrian의 이번 발표는 지난번과는 조금 다르게, 좀 더 실제적이고 발전된 형태의 내용이었다. 그 사이에 OSGi도 SpringOSGi프로젝트도 많은 변화가 있었을 테니까. 게다가 이번 S1에서는 OSGi의 워크숍형태의 실습세션까지 따로 준비되어있어서 이번 기회에 OSGi에 대한 완벽한 감을 잡고 가자는 기대를 갖게 했다.

 

이미 수많은 컴포넌트 또는 모듈 시스템이 존재해왔다. 자바에서도 다양한 형태의 모듈 기반의 개발이 시도되었고 이를 지원하는 플랫폼들이 존재한다. 넓게는 Java Enterprise Edition이 그 대표적인 모듈 시스템의 하나이다. 하지만, J(2)EE를 오래 써온 개발자 중에 그 모듈 시스템에 대해서 만족할 만한 사람이 얼마나 될까? 그 의존성, 배치, 재배치, 클래스로더 문제등과 한번쯤 씨름 안해본 사람이 없을 것이다. CBD기반의 분산객체시스템이니 어쩌니 하지만 정작 그런 분할된 모듈을 조합해서 애플리케이션을 구성하는 것을 원활하게 지원하는 플랫폼은 기존엔 없었다고 볼 수 있다.

 

OSGi는 다이나믹 모듈 시스템이다. 몇가지 주요한 특징을 보자면,

  • 번들(bundle)이라고 불리는 모듈들이 조합되서 하나의 시스템을 구성할 수 있도록 되어있다.
  • 번들간에는 매우 엄격한 가시성(visibility) 규칙이 존재한다. 리플렉션이니 클래스로딩 후킹이니 하는 방법으로도 제한된 번들 내부의 정보에 접근할 수 있도록 엄격하게 차단되어있다.
  • 모듈간의 의존성의 관리를 손쉽게 할 수 있는 프로세스를 가지고 있다.
  • 버전관리에 뛰어나다.
  • 번들(모듈)의 매우 다이나믹하다. 설치, 시작, 정지, 삭제, 수정 등이 런타임시에 다른 모듈이나 시스템에 영향을 주지 않고 다이나믹하게 일어난다. 런타임 때 가능하다니 이거 정말 멋지지 않은가?
  • 서비스지향적이다. 번들은 서비스 형태로 publish 될수 있다. 물론 다이나믹하게. 서비스 레지스트리를 통해서 번들을 찾고 바인딩 할 수 있다.

 

OSGi 자체에 대한 상세한 정보는 www.osgi.org에서 찾아보면 된다.

벤더에 의해서 지원되는 OSGi의 사례를 보면 일단 대표적인 것이 Eclipse이다. Eclipse는 OSGi의 가장 성공적인 결과물이라고 볼 수 있다. 또 IBM의 WebSphere, Lotus 그리고 BEA와 Oracle, JOnAS등이 OSGi를 이미 지원 또는 지원하려고 하고 있다. 오픈소스 쪽으로는 Eclipse의 Equinox, Apache의 Felix 또 Knopflerfish등이 있다.

그 밖의 중요한 개념과 많은 소개가 뒤따랐다. 가장 흥미로웠던 것은 버전지원 기능. 같은 모듈의 다른 버전이 동시에 공존하면서 충돌없이 각각 서비스가 동작할 수도 있다. 시스템의 발전에 따른 모듈의 버전별 의존성의 문제 등의 많은 해결책을 제시해 줄 수 있는 기능이다. 또 다이나믹한 동작제어도 역시 매력일 것이다. 각 번들이 독립적으로 설치, 삭제되고 activate, deactivate될 수 있고 필요할때 다른 모듈과 바인딩/와이어링 된다는 것은 이제까지 JEE의 많은 개발자들이 그토록 원했던 바로 그런 기능 아닐까. 마지막 Hands-on-OSGi시간에 본 OSGi기반의 스프링 애플리케이션의 모델은 정말 충격이었다. Bean들을 레이어 별로 또는 기능별로 묶어서 번들화 해서 배포하고 그 의존의 대상이 되는 번들을 다이나믹하게 수정해서 재설치 하면 다시 바로 IoC에 의해 바인딩 되는 결과를 볼 수 있었다.

Spring-OSGi는 스프링으로 만든 애플리케이션을 OSGi에서 손쉽게 사용할 수 있는 기능을 제공한다. 제세한 내용은 제4회 한국스프링사용자모임 세미나 때 오면 듣고 볼 수 있을 것이다. 한달넘게 남았는데 벌써부터 압박이 대단하다.

 

두번째 시간은 뭘 들을까 고민하다가 Ben Alex의 ROO를 들으러 갔다. 사실 지난번 TSE때 이미 들은 내용이다. ROO는 최초의 스프링 기반의 DDD방식의 공개된 애플리케이션 프레임워크이다. OSAF개발자로서 다른 AF는 어떤 것이가 상당히 관심이 많았다. TSE에서 처음 봤을 때 그 구조와 방식이 매우 신선했다. 이미 호주의 가장 큰 마트에 적용해서 성공한 실적도 있고 해서 빨리 공개되기를 바랬는데 아직도 공개하기에는 시간이 많이 필요하다고 한다. AF개발자 입장에서 사실 공감이 간다. 범용 프레임워크인 Spring과 달리, 특정 틀이 만들어진 AF를 만들려면 사실 몇배의 수고와 부담이 있다. 특히 현장에서 특정 프로젝트에 사용되려고 만들어진 AF들은 특정 환경에 종속적이기 때문에 그런 종속성을 제거하고 범용적으로 재구성 하려면 상당한 작업이 필요하다고 할 수 있다. 어쨌든 잘 설계된 AF의 구조를 보고 그 개발과정을 알게되는 것은 흥미로운 일이다.

ROO의 대표적인 특징은 일단 DDD아키텍처를 지향한다는 것. 모든 로직은 Domain Object에 존재한다. 불필요한 Repository(DAO)에 대한 의존성을 없애기 위해서 Hibernate와 같은 transparent persistence를 지원하는 ORM을 요구한다.

두번째 특징은 DTO를 사용한다는 점이다. DDD의 구현 전략은 크게 DTO를 사용하는 경우와 Domain Model Everywhere방식을 사용하는 경우로 나뉜다. 오래된 논쟁이긴 하지만 아직도 어느 것이 더 낫다고 결론내릴 수 없이 팽팽한 경쟁관계에 있는 구현전략들이다. ROO의 Domain Object는 Domain Object 레이어에만 존재하는 것이 맞다는 입장이다. 따라서 다른 레이어로 이동할 때는 반드시 DTO의 형태로 복제되어서 이동하게 된다. DTO<->DO간의 변환은 DTO Assembler를 통해서 상당히 자동화된 형태로 이뤄지기 때문에 사실상 DTO때문에 발생하는 코드의 중복이나 번거로움은 거의 없다고 할 수 있다.

마지막 특징은 코드제너레이션을 이용한다는 것이다. ROO의 CG가 기존의 CG방식의 프레임워크에 비해서 가진 특징은 초기에 일회성으로 CG를 하고 그 후엔 직접 수정 노가다를 해야하는 것이 아니라, 잦은 변경에도 거의 문제 없이 원하는 부분은 쉽게 다시 CG하는 것이 가능하다는 것이다. 또 한가지 재밌는 점은 CG의 메타정보를 XML과 같은 형태가 아닌 자바코드로 만들어서 사용한다는 점이다. 요즘 주목받고 있는 스프링의 JavaConfig과 유사한 개념이다. XML에 비해서 구성과 검증이 쉽고 툴의 지원이 더 원활하다는 점이 장점이다.

각 레이어별 전략과 특성을 실제 적용사례를 들어서 설명했다는 점에서 매우 많은 지식과 팁을 얻을 수 있었다.

 

다음 시간은 Hands-on-SpringOSGi. Spring OSGi의 워크숍 시간이었다. 노트북을 지참한 사람들이 발표자와 함께 따라하면서 실습을 할 수 있도록 만든 시간이었다. 필요한 파일은 CD로 제공이 되었고. 그러나! 제공된 CD에 들어있는 Eclipse 3.3은 윈도우 전용이었다. 나는 맥북에 OSX환경만 가지고 있는데… 결국 실습의 꿈은 날라가고 발표자의 데모를 열심히 봤는데 그게 더 나았던 것 같다. 따라하려고 했던 사람은 그 속도를 쫒아가지 못해서 겨우 겨우 타이핑하는데 버벅거리다가 에러나서 고민하고 있거나 중간에 포기하기도 했다. 끝까지 다 해본 사람은 몇 안되는 듯.

SpringOSGi와 Eclipse 3.3을 잘 조합해서 하면 정말 간단한 방법으로 Spring애플리케이션을 OSGi에 배치하고 테스트 할 수 있다. 모듈별로 나눠진 것을 별도로 설치하고 런타임시에 삭제, 재배치, 업데이트 등이 이뤄지는 것을 보니 정말 감동이 몰려왔다. 정말 JEE플랫폼이 OSGi에서 동작하게 될 날도 얼마 남지 않은 듯.

 

마지막 시간은 Spring Batch. 이번에 새롭게 등장한 스프링 배치 프로젝트는 사실 Accenture의 개발팀이 주축이 되서 i21의 개발자들과 함께 진행하는 프로젝트이다. 세계적인 IT컨설팅 업체인 Accenture는 대형 사이트의 배치시스템에 대한 오랜 경험과 노우하우를 가지고 있다. 하지만 아직까지 배치 시스템에 대한 이렇다할 만한 프레임워크가 없다고 한다. 그래서 그것을 구축하려고 하면서 찾은 가장 좋은 모델이 바로 스프링이다. 스프링이 엔터프라이즈 환경의 거의 모든 영역의 가려운 데를 긁어 줄 수 있는 다재다능한 프레임워크인 것을 다시금 확인하는 시간이었다.

스프링 배치의 기능은 대략 다음과 같다.

  • XML을 비롯한 다양한 파일 포맷 지원
  • 실패후 자동 retry
  • 모니터링과 동작을 위한 job control 언어 지원
  • 실행 상태, 통계정보를 실시간 또는 완료후 확인
  • 배치 작업을 실행하는 다양한 방법 지원 – http, script, incoming message 등
  • OLTP시스템과 concurrently하게 실행
  • 여러개의 tx 리소스를 사용
  • 로깅, 리소스관리, 재시작, 스킵 등의 핵심 배치 서비스 지원

계속해서 보여준 배치 스크립트를 보면서 느낀 것은 스프링배치 개발팀이 가지고 있는 대형 배치 시스템 개발의 경험과 노우하우가 상당하는 것이다. 실제 발생할 수 있는 수많은 시나리오들을 프레임워크 레벨에서 거의 커버할 수 있는 준비가 되어있는 듯했다. 이제 소외받던 배치 개발자들도 스프링의 많은 혜택을 누릴 날이 얼마 남지 않았다.

 

이렇게 해서 마지막 날 세션이 모두 끝나고 오후 4시쯤 마쳤다. 저녁 비행기 또는 기차로 돌아가는 사람들이 많아서 그런지 특별히 마무리 행사없이 종료된 것이 조금 아쉬웠다.

 

컨퍼런스를 마치고 3일 정도 더 체류하며 가까운 지역의 여행도 하고 쉬는 시간도 가졌다. 중세시대의 건축물이 잘 보존되어있는 몇개 도시를 둘러보았다. 특히 중세시대 때 파리 다음가는 대표적인 도시였다는 Gent는 정말 웅장하고 아름다운 건물들로 가득찬 멋진 도시였다. 물론 그런 건물들을 세우기 위해 얼마나 많은 사람들이 착취를 당했을까 생각해보면 좀 씁쓸하기도 했지만…

 

스프링원은 지역적인 특징 때문인지 확실히 유럽 중심의 행사이다. 아시아에서 온 유일한 참석자인 나를 제외하고 유럽외의 다른 지역에서 온 사람은 거의 없었던 듯하다. TSE에 비해서 규모도 약간 작고 장소나 행사진행도 조금 아쉬움이 있지만 그래도 독특한 문화적인 특징을 경험할 수 있는 즐거운 시간이었다. 참석자들의 유대관계도 좀 더 끈끈한 것 같고. 그런 분위기에서 스프링이 탄생했을 것일테니까 가장 스프링 다운 행사가 아닐까 싶다.

 

그나저나 스프링 2.1은 언제 나온다냐.. 책 마무리 해야 하는데 ㅜㅜ

Related posts:

  1. SpringOne 2007
  2. SpringOne 2007 둘째 날 후기
  3. SpringOne 2007 첫날 후기
  4. SpringOne 2007 & parleys.com
  5. SpringOne 2008 (1) – OSGi
  6. TheSpringExperience 2007 둘째날
  7. QCon 2007 San Francisco 참석중
  8. 성의없는 QCon San Francisco 2007 후기
  9. SpringOne 2006 DVD 도착
  10. SpringOne 컨퍼런스에 공짜로 참가하는 방법
  11. 제2회 스프링 공개세미나를 마치고.. 내일은 SpringOne 출발이다
  12. 스프링소스와 VMWare의 전략적 관계
  13. Spring-OSGi 시작하기 – OSGi
  14. 9회 JCO 자바컨퍼런스를 다녀와서
  15. Spring 3.0 (32) R-778 돌아온 Reference Doucment와 잠자는 레퍼런스 한글화 프로젝트

Facebook comments:

to “뒤늦게 쓰는 SpringOne 2007 셋째날 후기”

  1. I like the blogger, every time to see every time the input, thank you.

  2. FdEnii rtxaakakbocu, [url=http://krajcngqzhwp.com/]krajcngqzhwp[/url], [link=http://ndivghdgtfzt.com/]ndivghdgtfzt[/link], http://uxtuqyqreuol.com/

  3. You need targeted traffic to your website so why not try some for free? There is a VERY POWERFUL and POPULAR company out there who now lets you try their traffic for 7 days free of charge. I am so glad they opened their traffic system back up to the public! Sign up before it is too late: http://bag.sh/16M

  4. I was very pleased to find this site. I wanted to thank you for this great read!! I definitely enjoying every little bit of it and I have you bookmarked to check out new stuff you post.

  5. mbt trainers 뒤늦게 쓰는 SpringOne 2007 셋째날 후기 » Toby’s Epril

  6. anti shoes 뒤늦게 쓰는 SpringOne 2007 셋째날 후기 » Toby’s Epril

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