본문 바로가기

카테고리 없음

한국스프링사용자모임5회(KSUG) 참가 후기 (웹플로우(WebFlow), 보안(Acegi))

스프링 프레임워크(Spring Framework)란 개발자와 프로젝트를 위한 자바 전 분야를 아우르는 다목적 프레임워크고, 한국 스프링(Spring Framework) 사용자 모임(KSUG)은 스타 개발자 이일민님과 안영회님과 백기선님등의 애자일 스터디 모임에서 자발적으로 만든 커뮤니티 입니다.

이 커뮤니티 에서는 6주에 한번씩 스프링(Spring Framework)에 대하여 강도 높은 라이브 코딩 위주의 강좌가 진행되고 있습니다.

저는 2회 모임때부터 5회 모임때까지 꾸준히 참석하고 있는데 이유는 백만원 이상 되는 정규 교육 과정과 비슷한 수준 높은 강좌를 저렴하게 들을 수 있고, 무엇보다 프로그래밍 자체를 사랑하는 열정 넘치는 개발자를 만날 수 있기 때문입니다.

한국 스프링(Spring Framework) 사용자 모임의 스프링(Spring Framework) 강좌를 몇 번 들으면서, 그리고 나름대로 스프링(Spring Framework)을 작은 프로젝트에 적용해 보면서, 스프링(Spring Framework)은 자바 프로그래밍을 예술과 철학의 경지로 끌어올리고 있을수도 있다는 부푼 기대가 들었습니다.

왜 그렇게 좋은지 객체지향 모르는 신입사원이나 변화를 싫어하는 고참 개발자에게 설명하기 위해서는 아직 공부를 더 해야 될 것 같습니다만, 제안서만 휘황찬란하고 실제 프로젝트는 엉망으로 하는 회사와 비스무리한 무슨무슨 프레임워크/솔루션 들과는 틀리다는 생각이 듭니다.

그러나 제가 실제로 스프링(Spring Framework)을 구석구석 어려운 부분까지 적용하고 그 효과를 마음 속 깊이 체감하기 까지는 무작정 좋다고만 말하는 것도 문제가 있는 것 같습니다. 제가 스프링(Spring Framework)을 깊숙이 적용하고 그 효과를 마음속 깊이 음미한 다음 정말 좋다고 말할 수 있을때까지 열심히 집에서 작은 프로젝트라도 하면서 공부해야 겠습니다.

사실은 제가 서론을 길게 쓰는 이유가 있습니다. 이번 토요일
한국 스프링(Spring Framework) 사용자 모임(KSUG)의 주제는 스프링(Spring Framework) 웹플로우(WebFlow) 와 스프링(Spring Framework) 시큐리티(Acegi) 인데 이 두 모듈 쓰는 방법을 제가 이해를 잘 못했습니다.

일단 두 모듈 다 눈이 번쩍 트일 정도로 좋은 기술이라는 것은 와 닿았습니다. 이 두가지 기술 꼭 써봐야겠다는 동기부여가 됐습니다. 저는 이 정도만 해도 성공이라고 생각합니다. 그러나 후기에 구체적으로 이렇게 쓴다~ 라고 정리하기는 어려울 것 같습니다. 발표하신 분들이 준비도 정성을 다해 하시고 발표도 잘하셨습니다만, 사실은 전날 친구랑 새벽까지 술마시느라 피곤하여 꾸벅꾸벅 조느라고 제가 제대로 못들은 것이 문제였습니다.

그래서 예전까지는 나름대로 정성을 다하여 포스팅을 했지만 오늘은 개념만 제대로 전달하기도 힘들 것 같습니다. 스프링(Spring Framework) 웹플로우(WebFlow)와 스프링(Spring Framework) 시큐리티의 자세한 내용은 스타 개발자 안영회님과 백기선님 블로그를 참고하시길 바랍니다.

사용자 삽입 이미지
[스타개발자 안영회님 사회로 세미나 시작됨]

+ 스프링(Spring Framework) 웹 플로우 내 마음대로 이해하기 (쓴 내용이 틀릴수도 있음)

"웹은 세상의 정보를 더욱 더 쉽고 빠르고 공유하고 연결하는데 기여했다. 웹은 인류가 골고루 정보의 혜택을 누리기 위한 훌륭한 플랫폼이다. 그러나 웹을 구성하는 내부는 복잡하고 지저분하다.

하나는 웹을 구성하는 소스가 복잡하고 지저분하다. HTML과 자바스크립트와 이것들과 억지로 섞여야 되는 JSP 코드는 한마디로 웹노가다라 부르기 충분하고 그동안 나는 웹노가다에 투덜투덜 거렸다.

다른 하나는 웹의 기본 프로토콜이 Stateless(한번 연결 맺고 바로 끊기)라서 복잡하고 지저분하다. Stateless로는 우리가 원하는 서비스를 구성할 수 없다. 그래서 억지로 Stateless를 계속 연결로 바꾸기 위해 쿠키 심고, 세션도 심는등 별 짓을 다한다.

특히 나 같은 경우는 인터넷 뱅킹 개발과 유지보수를 했는데 백 버튼 방지, 중복 전송 방지, 에러 처리 페이지 처리, 세션 유지 처리 등을 그대로 따라하고 장애 해결할때 많은 힘을 쏟아 부었던 것으로 기억한다.

여기 스프링(Spring Framework)에서 만든 웹플로우(WebFlow) 라는 모듈이 있다. 한마디로 백 버튼 방지, 중복 전송 방지(이것도 되긴 되었나? 기억은 나지 않음), 에러 처리, 세션 유지 등의 웹에서 이루어지는 ‘플로우’ 처리를 평범하게 웹에 심는 것이 아니라 스프링(Spring Framework) XML 설정으로 따로 분리한다는 개념이다. (내가 이해한 핵심이 이것이다. 경고 : 틀릴수도 있다.)

IoC는 객체 의존 결정의 분리, AOP는 객체내의 의도되지 않은 관심사의 분리 라면 웹플로우(WebFlow)는 웹에서의 플로우의 분리를 할수 있다는 것이다. 스프링(Spring Framework)은 그야말로 분리를 할 수 있는 것은 모조리 들어내어 개발자와 프로젝트를 편하게 하는 것을 업으로 삼는 놈 같다.

웹플로우(WebFlow) 같은 경우 플로우를 분리하여 XML등으로 관리하면 무엇이 좋을까? 내가 메모장에 낙서한 것을 보니 ‘웹에 종속적인 로우개발 관점이 아니라 UML 상태 다이어그램 처럼 하이레벨 관점으로 추상화 할 수 있다는 것이다.’ 

강좌를 보면서 깜짝 놀랐다. 보통 웹 개발할 때 전송, 실패 처리를 수작업으로 하고 백 버튼 방지 스크립트를 따로 작성하여 HTML 소스안에 넣을 때, 스프링(Spring Framework) 웹플로우(WebFlow)는 이클립스에서 UML 상태 다이어그램 그리듯 편리하게 그릴 수 있었다.

사용자 삽입 이미지

[위와 같은 UML 상태 다이어그램을 웹에서도 써먹을수가 있다?
웹노가다로 점철된 웹 세상에서 이런 고급스런 기법을 써먹을수 있다고?

 아래 이클립스 스프링 IDE에서 직관적이고 편하게 UML 상태 다이어그램 그리듯 웹플로우를 관리 할 수 있다. 웹의 저수준을 넘어서 UML 같은 추상화 차원에서 관리할 수 있다.]
 
사용자 삽입 이미지

스프링(Spring Framework) XML을 수작업으로 쓰면 그것도 나름대로 복잡하겠지만, 이클립스 스프링(Spring Framework)IDE를 이용하니 웹 플로우를 직관적이고 편하게 설계할 수 있었다.

아마도 스프링(Spring Framework)의 철학은 ‘개발자를 힘들게 하는 요소를 최대한 분리하라’ 가 아닐까? 내가 이해한 것은 스프링(Spring Framework) 웹플로우(WebFlow)가 웹에서 복잡하고 지저분하게 처리해야 하는 온갖 플로우 요소(전송, 취소, 백버튼 방지, 중복 전송 방지, 세션 처리?)를 스프링(Spring Framework) XML로 분리하고 이클립스 스프링(Spring Framework) IDE로 편하게 그림 그리듯 관리할 수 있다는 것이다.

빨리 써봐야 겠다."

사용자 삽입 이미지
[세련된 머리스타일이 인상적인 스타 개발자 이일민님]

사용자 삽입 이미지
[현란한 코딩 능력을 보여주신 찬욱님,
이번 세미나는 강좌와 코딩을 분리하여 진행됐다.]

+ 스프링(Spring Framework) 시큐리티(Acegi) 내 마음대로 이해하기 (사실은 이해하지 못했음)

"스프링(Spring Framework) 시큐리티(Acegi)도 내가 이해한 것은 이것을 쓰면 프로젝트에서 신경써야 할 보안(Acegi) 처리 요소를 스프링(Spring Framework) XML로 분리할 수 있다는 것이다.

구체적으로 어떻게 분리할 수 있는지 사실은 세미나 당시 PPT가 있으면 어떻게 내용 훔쳐가며 써보겠는데 아직 PPT가 올라오지는 않고, Acegi 에 대해서 내가 이해한 것은 도통 떠오르지 않는다.

열심히 체계적이고도 세심하게 설명해 주신 스타 개발자 두 분께 죄송한 마음 가득이다. 그러나 한번 들었을 때 이해 못했지만 관련 문서가 있으면 이제는 이해를 할 수 있을 것 같다.

보안(ACEGI) 요소도 스프링(Spring Framework) XML로 분리할 수 있다는 기본 철학을 바탕으로, 스프링(Spring Framework) 시큐리티 아키텍처(Filter, Managers, Provider)를 꼭 이해하여 한번 프로젝트에 적용하고 싶다는 강력한 동기부여를 얻은 것으로 만족해야 했다."

사용자 삽입 이미지
[Acegi 설명해주신 안영회님, 설명 참 꼼꼼하게 하신다.]

사용자 삽입 이미지
[스타 개발자 블로거 백기선님이 코딩을, 안영회님이 진행을 담당했다.]

이렇게 보시면 알겠지만 이번 세미나는 제가 내용 깊숙이 이해하지 못하여 제대로 된 포스팅을 하지 못했습니다. 그래서 아래 관련 사이트 링크나 추가로 올라오는 관련 포스팅을 참고하시길 바랍니다.

그래도 내가 이해 못했으니 에라~ 하지 말자~ 하는 것과 이해는 잘 못했지만 꼭 해보고 싶은 좋은 기술이다~ 라고 와닿은것은 틀릴 것 입니다. 저는 이번에 스프링(Spring Framework) 웹플로우(WebFlow)와 스프링(Spring Framework) 시큐리티(Acegi) 강좌를 듣고 제대로 공부해봐야 겠다는 강력한 동기부여를 얻었습니다.

여러분들도 한번 ‘개발자를 힘들게 하는 모든 요소’를 사정없이 분리하는 스프링(Spring Framework)의 강력한 힘을 맛 보시길 바랍니다.

사용자 삽입 이미지
[추첨 경품으로 이 책을 받았다. 책을 읽고 많은 자극을 받았다.
덕분에 제대로 쓸 포스팅 거리가 생겼다. 고맙습니다~ :D]

+ 링크 정리
한국 스프링 사용자 모임 http://www.springframework.co.kr
스프링 컨설팅 회사 Eprill http://www.epril.com
이일민님 블로그 http://toby.epril.com
안영회님 블로그 http://younghoe.info/
백기선님 블로그 http://whiteship.tistory.com
백기선님 블로그 Acegi 강좌 http://whiteship.tistory.com/tag/Acegi

+ 예전 후기
2007/06/18 - [개발자로 달인되기/개발자 칼럼] - 한국스프링사용자모임2회(KSUG) 참가 후기 (스프링 달인의 한수 가르침)

2007/07/29 - [개발자로 달인되기/개발자 칼럼] - 한국스프링사용자모임3회(KSUG) 참가 후기 (자리잡은 커뮤니티)

2007/09/12 - [개발자로 달인되기/개발자 칼럼] - 한국스프링사용자모임4회(KSUG) 참가 후기 (AOP)