스프링(Spring Framework) IoC기능을 적용하였다. 무작정 적용하고 보니, 인터페이스를 구현한 구상 클래스를 결정하기 위해 별도의 클라이언트 로직을 만들 필요 없이 스프링(Spring Framework) XML로 구상 클래스를 주입하면 간단하게 해결된다는 것은 그야말로 스프링(Spring Framework)의 간결함 만큼 명확하게 와닿았으며, 스프링(Spring Framework)의 참신한 만큼 발상의 전환이 대단해 보였다.
탄력을 받아 진행한 작업은 'IP, Port, 프로토콜 설정, 전문 설정' 등의 각종 통신 설정을 외부화 하는 작업과, 메시지소스를 외부화 하는 작업이었다. 설정 정보의 외부화시 프로퍼티 파일이 읽히지 않아서 삽질 하다가 알게된 것은, 스프링(Spring Framework) XML을 로딩할때 BeanFactory로 로딩하면 안되고, ApplicationContext로 로딩해야 한다는 것이다. 그리고 메시지소스 외부화 작업시도 잘 되지 않아 몇시간을 삽질했는데 알고보니 스프링(Spring Framework) XML과 같은 위치에 메시지소스 파일을 놓는것이 아니라, 클래스패스의 가장 최상단에 따로 놓아야지만 작동되었다.
(위 두가지 사실은 몇시간 삽질해서 알게되었으니 혹시 설정 외부화 관련 작업들을 해보시지 않은 분은 참고하시길 바랍니다.)
내가 스프링(Spring Framework)을 알고 적용하는 것은 아직 미흡하여 여기까지다. 통신 서버를 개발하는 나에게 이번 주제인 스프링(Spring Framework) MVC는 관심 분야가 아니었다. 그래도 스프링(Spring Framework) 전문가를 만나고 스프링(Spring Framework)에 관심 있는 개발자를 만나고 그들의 지식을 듣는다는 것 자체가 많은 자극을 주리라 기대하여 '만원' 내고 '3회 스프링(Spring Framework) 사용자 모임에' 참가하게 되었다.
양재역은 교통이 편리했으며, 세미나 환경은 2회때에 비하면 많이 쾌적했다. 다음의 세련되고 쾌적한 시설들이 역시 대형 포털 회사라는 느낌을 주었다.
+ KSUG의 미래-안영회
스프링(Spring Framework) 사용자 모임이 단순한 세미나가 아니라, 이 모임을 통해 이루고 싶은 더 큰 목표가 있다는 것은, 스프링(Spring Framework)으로 각종 혜택을 보고 싶은 나같은 평범한 개발자한테 힘이 되는 사실이다.
안영회님은 스프링(Spring Framework) 사용자 모임을 정착시켜 사용자 모임의 조직화 작업을 한다고 했다. 운영위원회를 구성하여 각종 기업/단체/커뮤니티 별 대표자가 KSUG의 주요 의사결정에 참여한다고 했다.
소수 중심의 커뮤니티에서 네트워크 형태로 발전하여, 다양한 기업/단체/커뮤니티와 연계된 모임을 추구한다고 했다. 다수 의견이 반영된 합리적 의사결정, 긴밀한 협력이 가능한 점 조직화의 효과가 있다고 했다.
기타 회원제의 고민, 오픈소스 프로젝트 준비, 다양한 솔루션과 스프링(Spring Framework)의 연계 등의 이슈등을 이야기 했다. 친구처럼 나도 스프링(Spring Framework) 매니아가 되었기에 회원제 하면 가입하고, 오픈소스 하면 나도 참여하고 싶다. 스프링(Spring Framework)의 힘은 소극적인 나를 적극적인 참여 의지로 바꿔놓았다.
+ 효과적인 Spring Web MVC 컨트롤러 구성-백기선
"노트북을 가져와 따라해볼수 있다는 말은 그럴듯 하게 들렸다. 내 친구는 쇳덩어리 같은 노트북을 힘들게 들고 왔으나, 발표 내용 힘들게 따라가는것에 비하면 아무것도 아니었다. 짧은 시간에 연사 사진 찍듯 지나가는 어려운 내용을 따라갈려면 차라리 집중해서 발표를 보고 듣는것이 낳았다. 친구는 자존심이 강한편이라 어떻게든 따라가볼려고 했지만 10번 연습했다는 발표자의 능숙한 코딩을 따라갈수 없었다. 집에 돌아가는 길에 쇳덩어리를 들고가는 친구가 투덜거렸다. 나는 속으로 안들고 가길 잘했다고 했다."
그래도 효과적인 세미나를 위한 다양한 시도는 좋다고 생각하며, 백기선님은 어려보이는 외모와는 달리 차분하면서도 안정된 목소리로 발표를 능숙하게 진행했다.
다만 스프링(Spring Framework) MVC는 내 관심분야가 아니라 제대로 집중하기 어려웠다. Template Method의 디자인 패턴과 Extract Superclass의 리팩토링을 활용하여 스프링(Spring Framework) 컨트롤러 기능을 어떻게 객체지향적으로 튜닝할 수 있는지의 튜닝 과정과 그 과정 중 펼쳐지는 막강한 이클립스 편집 기능을 눈여겨 보는데 집중했다.
내가 이번 발표를 통해 스프링(Spring Framework) 컨트롤러에 대해 이해한것은, MultiActionController를 사용하여 처리 단위를 하나로 묶을 수 있고, 공통으로 할 일은 SuperClass로 추상화 하여 소스를 간결하게 할 수 있다는 것이었다.
+ Struts2와 Spring Web MVC-현철주
신입사원때 스트럿츠(Struts) 할줄 안다고 자랑했다가 맹목적인 신기술 추종은 좋지 않다는 선배의 따끔한 지적을 받은적이 있다. 그뒤 스트럿츠의 복잡성등이 좋지만은 않다고 생각되어 스트럿츠의 열기는 없어졌다. 오늘 문득 신입사원때의 추억이 떠올랐다. 스트럿츠2(Struts2)는 어떻게 진화했을 것인가~
'애플리케이션 구축, 배포, 유지 보수 전 영역에 거쳐 개발 사이클을 가질 수 있도록 디자인된 프레임워크'라는 문장이 인상깊었다. 나한테 와닿은 기능만 쓴다.
1. 주요 기능
1.1 애플리케이션 구축,
- 요청의 라이프 사이클이 커스터 마이즈 될 수 있다. 아마 인터셉터 기능을 가리키는 것 같다.
- 유효성 검사 규칙을 액션 코드와 분리 할 수 있다.
- 웹 개발시 가장 지루한 데이터 변환 작업(String mckdh = request.getPrameter(“mckdh”) <- 이런 작업들을 가리키는 것 같다.)과 관련하여 자동으로 데이터 객체의 값으로 변환한다.
- 스프링(Spring Framework)과 같은 의존성 삽입(Dpendency Injection) 가능
- 대형 프로젝트를 위한 환경 설정 파일 모듈화
- 자바5 annotation기능 사용 환경설정 오버헤드를 줄일 수 있다.(이번 세미나때 새롭게 알게된 기능)
1.2 애플리케이션 배포
- 웹 컨테이너 재시작 안해도 리로드 가능
1.3 애플리케이션 유지보수
- 테스트 용이, Action들이 HTTP 독립적, mock 객체에 의존하지 않고 테스트 가능
- 강력한 디버깅 기능, 프로파일링, 오류 보고등의 디버기 도구 내장
2. 주요 이슈
2.1 Interceptor
- 액션 실행 주위로 실행될 수 있는 코드를 쉽게 장착, 장탈하는 기능, 액션 외부에 정의되고, 런타임 시에 액션과 액션 실행 환경에 접근할 수 있다.
- 아파치 미나(Apache MINA)의 Filter기능과 거의 똑같아서 놀랐다. 아파치 미나(Apache MINA)의 Filter처럼 주요 기능을 액션 주변에 장착, 장탈 할 수 있다는 것은 유지보수와 성능향상에 크게 기여하는 기능 같다.
- 스트럿츠2(Struts2)에서 제공하는 Interceptor들을 보니 그 기능들이 다양하면서도 막강한 것 같다. 개인적으로 스트럿츠2(Struts2)의 가장 특화된 기능은 Interceptor기능 같다.
2.2 OGNL(Object Graph Navigation Language)
“자바 객체의 프로퍼티 값을 얻거나 저장하기 위하여 자바빈들 상의 프로퍼티들을 추적하는 표현식을 다룰 수 있게 한다.”라는 기능인데 애매모호한 정의 처럼 개인적으로 어떤 기능인지 나는 알 수 없었다.
OGNL 기능이라는 것이 스트럿츠2(Struts2)의 속도를 저하시키는 원인이라는 이슈가 있었는데, 내가 이 기능을 모르니 구체적으로 쓰기가 어려웠다. 다만 OGNL이 그런 이슈가 있다라는 것만 쓴다.
+ SpringOne2007 정리-이일민
스프링(Spring Framework)기술 습득에 도움이 되진 않겠지만 이 시간이 제일 기대됐다. 세계 스프링(Spring Framework) 커뮤니티의 핵심에 접근하고 있는 이일민님의 다양한 현장 이야기가 재밌을 것 같았다.
어느 벤처 캐피탈로부터 '1000만 달러를 펀딩' 받아 스프링(Spring Framework) 풀타임 개발자가 확대 되었다고 한다.
스프링(Spring Framework)의 간결하면서도 강력한 기능은 이미 인정을 넘어서 사실상의 엔터프라이즈 자바 개발 모델의 표준이 되었다고 한다.
스프링(Spring Framework)과 반대 진영이라고 볼수도 있는 EJB관련 솔루션/컨설팅 업체인 BEA등으로부터도 인정받아 스프링(Spring Framework)을 이용하여 WebLogic10이 개발된다고 할 정도로 스프링(Spring Framework)은 인정받고 있다.
스프링(Spring Framework)2.1 관련 기능을 설명하면서 Annotation 기능을 직접 이클립스로 시현하였는데 @ 태그만 붙이면 깔끔하게 환경 설정이 줄어드는 기능을 눈으로 확인하면서 생소하여 어려웠던 Annotation기능을 실제로 써봐야 겠다는 동기부여가 되었다.
기타 현장감 가득한 이야기를 들었다.
+ Spring 전문가에게 묻는다.
설문조사를 바탕으로한 질문과 전문가의 답변 시간이었다. 내가 와닿은 질문/답변만 쓴다.
- 질문은 기억안나고 답변만 기억나는 것 하나
“금융쪽에서 초강력 서버로 무장하고 있지만 그야말로 엄청난 트랜잭션이 매초마다 발생하기 때문에, 서버가 견뎌야 되는 부하는 매우 크며, 그래서 성능 튜닝이 중요한 부분인데, 서버가 현재 부하가 많은 EJB로 구성 되어 있는 문제가 있다. 만약 EJB의 기능을 온전히 수용하는 스프링(Spring Framework)으로 대체 개발할 수 있다면, 서버 성능 향상에 상당한 도움을 줄것이다.
..X-Internet의 기능에 주목하고 있다. X-Internet은 서버의 로직 연산을 클라이언트에서 대신할 수 있기 때문에 서버 성능향상에 기여한다.”
우리 회사는 금융 관련 IT 회사이다. 클라이언트는 X-Internet으로 구성하고, 서버는 스프링(Spring Framework)을 쓸 예정이다. 이 답변을 듣고 나는 기분이 매우 좋았다. 우리 회사는 알게 모르게 서버 성능향상을 위해 전문가가 추천하는 솔루션들을 쓰고 있는 것이었다.
- 스프링(Spring Framework)을 쓸때 꼭 인터페이스를 이용하여 개발해야 하는가?
“인터페이스를 지향하여 개발하는 것은 유지보수 등의 성능을 개선하고 개발자의 습관을 올바르게 지향하는 중요한 개발 방법이다.
..스프링(Spring Framework)의 장점은 개발자가 스프링(Spring Framework)을 쓰면 쓸수록 스프링(Spring Framework)을 잊어간다는 것이다.”
+ 마무리
두번째 답변을 다시 정리하면서 스프링(Spring Framework) 사용자 모임 3회 세미나 후기를 마무리해야 겠다. 내가 생각하는 프레임워크를 쓰는 이유는 교통표지판의 지도 처럼 잘 짜여진 프레임워크의 지도를 받아, 깔끔하면서도 고성능의 개발을 지향하는 것인데, 스프링(Spring Framework)은 고품질의 어플리케이션 개발 유도 뿐만 아니라, 자연스럽게 인터페이스를 지향하는 개발을 유도함에 따라 개발자의 습관까지 바람직하게 지도하는 프레임워크라는 것이다. 그래서 스프링(Spring Framework)은 프로그램 주제에 감히 개발자(사람)의 습관까지 영향을 끼치는 막강하면서도 유익한 프레임워크라고 생각한다.
스프링(Spring Framework)을 쓰면 쓸수록 스프링(Spring Framework)을 잊게 된다는 역설은 과거 중국 은나라 임금이 백성들이 임금이 누군지 모를정도로 행복하게 일하고 있다는 말을 듣고서야 비로서 뿌듯했다는 이야기와 통하고 있었다.
그래서 나도 스프링(Spring Framework)에 열광하며, 스프링 사용자 모임에 적극 참여하고, 스프링 공부도 열심히 하여 궁극적으로 우리 회사에 간결하면서도 강력한 스프링(Spring Framework) 적용 확실하게 해야 겠다.
받은 기념품들
+ 참고 사이트
한국 스프링 사용자 모임 http://www.springframework.co.kr
스프링 컨설팅 회사 Eprill http://www.epril.com
이일민님 블로그 http://toby.epril.com
안영회님 블로그 http://younghoe.info/
백기선님 블로그 http://whiteship.tistory.com
현철주님 회사 사이트 http://www.artszen.com/ (스트럿츠2로 개발되었다고 함)
한국 스프링 사용자 모임 http://www.springframework.co.kr
스프링 컨설팅 회사 Eprill http://www.epril.com
이일민님 블로그 http://toby.epril.com
안영회님 블로그 http://younghoe.info/
백기선님 블로그 http://whiteship.tistory.com
현철주님 회사 사이트 http://www.artszen.com/ (스트럿츠2로 개발되었다고 함)
'한방 포스팅 > 프로그래머' 카테고리의 다른 글
| 진화하는 홈 리눅스 그리드 컴퓨터 설치 위키강좌 (8) | 2007/08/12 |
|---|---|
| 진화하는 웹2.0 위키강좌 (10) | 2007/08/08 |
| 한국스프링사용자모임3회(KSUG) 참가 후기 (자리잡은 커뮤니티) (22) | 2007/07/30 |
| 한국스프링사용자모임2회(KSUG) 참가 후기 (스프링 달인의 한수 가르침) (16) | 2007/06/18 |
| IT맨의 사직서, 다수의 온라인 전태일 열사가 되어보자 (6) | 2007/06/13 |
| 진화하는 위키 위키강좌 (0) | 2007/05/21 |




댓글을 달아 주세요
혹시 이 후기를 읽어주시는 자바 개발자 분께 여쭤봅니다~
혹시 아파치 미나(Apache MINA) 쓰고 계시는 개발자분 계신가요~
스프링 같은 경우는 관련 자료와 이런 세미나가 있어 익히는데 어려움 없지만
아파치 미나는 관련 문서가 부족하여 분석하는게 쉽지 않네요~
다행히 예제만으로 기본적으로 돌아가는 것은 알겠는데 세부적으로 성능튜닝
하게되면 관련 자료와 관련 개발자분을 알면 좋을것 같아서 여쭤 봅니다~ ^^
^^;; 제가 초반에 인터넷이 잡아먹은 10분과 후반에 남은 5분을 합치면 충분히 따라하실 수 있는 시간을 드릴 수 있었는데요. 발표가 미숙한 관계로 어느 순간 너무 코딩에 빠져들다 보니 시간 드리는 것을 깜빡해서 중간 부턴 그냥 보여드리는 식으로 진행을 해버렸네요. 쇳덩어리 들고오신 친구님 죄송합니다~ :)
어이쿠~ 직접 댓글 달아주시고 고맙습니다~!
'백기선님은..차분하면서도 안정된 목소리로 발표를 능숙하게 진행했다.'
에 주목해주시길 바랍니다~ 진짜 잘하셨어요 헤헤~
친구도 이해할꺼에요~ 수고하셨습니다~! ^^
이윤하 2007/07/30 09:49 댓글주소 수정/삭제 댓글쓰기
스프링 처럼 실력이 팡팡 튀어 오르는것 같네....
무더운 여름이 시작되었지만^^
활력은 잃지 마시게..
형도 같이 팡팡 튀어 오르자고요~ 헤헤~
arma 2007/07/30 10:33 댓글주소 수정/삭제 댓글쓰기
우리가 스프링으로 개발한다는것을 내가 왜 모르고 있는것이냐?
이거 뭐야~ 몰라~ 무서워~~
그나저나 동헌이가 스프링으로 구현하는것 실패하면 ...
둘의 자존심 싸움인건가?
암튼 구성 잘해!
꼭 스프링과 미나로 되야만 합니다~!
이군배 2007/07/30 10:42 댓글주소 수정/삭제 댓글쓰기
기선님~ 괜찮습니다~*^^*
발표하시느라 수고 많으셨어요~
블로그에 올리신 소스 코드~ 공부하는데 잘 쓰겠습니다~~
넹 ^^;; 이해해주셔서 감사합니다.
코드가 워낙 간단하지만 그래도 혹시나 궁금하신 점 있으시면 언제든지 제 블로그에 문의해주시면 답변해 드리겠습니다.
그래 이것도 인연인데 우리 많이 물어보자~
^^ 지난번보다 더욱 안정적인것 같네요..사진을 보니.^^
다음번엔 이젠 못따라가겠네요...ㅠㅠ
버리후배도 다음에 같이 가자
주제가 이어진거는 아니니께~
같은 세미나를 들었는데....
정말 깔끔한 정리네요..
엇~ 짱가님 직접방문해주시고 반갑습니다~
예전 블로그 초창기때 오병곤님 블로그통해 오셔서
격려의 댓글 남겨주셨는데 기억나시는지요~
다음에도 뵙게 되면 인사드려야 겠습니다~
블로그에서 계속 좋은 자료 부탁드리겠습니다 ^^
저도 저런곳을 한번 가보고 싶군요. 저는 시골에 살고 있어서...서울은 가기가 힘들군요.^^
나중에 기회가 된다면 꼭 가보고 싶습니다.
원래 거의 소극적인 개발자의 성격상
오프라인 모임 나가기가 꺼려지는것도 있는것 같은데
참석할때마다 유익한 자극을 받고 옵니다~
혹시 다음에 참석하신다면 유익하실것입니다 ^^
예전에 X-internet 기반의 트러스트폼(일명 xform)을 사용해서 개발한적이 있습니다.
스프링이 요즘 개발 프레임웍으로서 큰 역할을 하고 있는것 같네요. 좋은정보였습니다.
흠..북과디자인님도 개발자시군요~! ^^
동헌아~ MINA 하자고 맨 처음에 말한게 나란건 알고 있냐?
ㅋㅋㅋ
과장님 덕분에 제가 웹노가다를 떠나
하고 싶었던 유익한 개발 해보고 있네유~ ^^
bulgo 2007/11/16 12:31 댓글주소 수정/삭제 댓글쓰기
학원에서 웹관련 공부를 하고 있는 늦깍이 학생입니다.
학과과정에 스프링이 들어가 있지않아 정보를 찾아 여기까지왔네요....
좀 지난 글이지만 처음 접하는 저에게는 상당한 도움이 되네요..
생소한 용어들도 하나 둘 알아갑니다....
자주 들리게 될지도 모르겠네요.....
이제 날씨도 추워서...덜덜.....감기조심하시고 좋은 정보 계속 부탁드려요..^^*
어휴 댓글을 이제봐서 죄송합니다.
꼭 개발자로 성공하시길 바라고~
제 글이 조금이라도 도움드렸으면 좋겠네요~
다음에는 블로그 주소도 남겨주세요~ ^ ^