본문 바로가기

카테고리 없음

한국스프링사용자모임4회(KSUG) 참가 후기 (AOP)

+ AOP(Aspect Oriented Programming) 아무리 읽어봐도 모르겠다.

횡단 관심사니, 종단 관심사니, 포인트 컷이니, 어드바이스니 한글이고 영어고 대부분 단어들이 울렁거릴 정도로 복잡다단하고, 한글문서는 영어보다 이해하기 힘든 특유의 번역체라 AOP에 대하여 도저히 다가갈 수 없었습니다. 그래서 최근 우리회사에 스프링프레임워크(Spring Framework) 도입을 의논할 때도 AOP 도입은 당연히 빼자는 의견이었습니다.

AOP같은 IT기술은 분명히 개발자 편하라고 등장한 기술일 것인데, 개발자에게는 공부할 거리만 산더미처럼 던져주고 개발자가 겨우 익혔다 하더라도, 그 쓸모가 별로일 것 이라는 부정적인 생각이 들었습니다.

그래서 이번 4회 세미나 주제가 AOP라는 얘기에 참석을 망설였지만, 주최 개발자들이 다들 설명을 감칠맛나게 하신 것을 믿고 참석하였습니다. 2회 세미나처럼 국민대로 갔는데 국민대 캠퍼스는 아늑하니 좋지만 역시 교통은 불편했습니다.

3회 세미나의 성공적인 개최와 이번 세미나는 공짜기 때문에라도 많은 개발자들이 참석할 줄 알았는데, 참석인원이 많지는 않았습니다.

사용자 삽입 이미지

사용자 삽입 이미지

+ 네이버 성기준 선행기술 랩장 축사

KSUG를 네이버에서 후원하기로 했다고 합니다. 그래서 네이버의 어느 랩장님이 축사를 하셨습니다.차분하면서도 부드러운 목소리로 ‘IT 기술의 흐름과 스프링의 존재 가치’등에 대하여 말씀을 하시는데 귀에 쏙쏙 들어오는 것이 그분이 직접 세미나를 진행하셔도 될 것 같았습니다.

대략 말씀이 다음과 같았던 것으로 기억합니다.

“프로그램 개발 기술에서 ‘재사용’은 언제나 이슈가 되어왔다. 구조적 프로그래밍으로부터 시작하여 객체지향, EJB 등은 모두 재사용을 지향했지만 결과는 좋지 못했다. 그러나 스프링은 진정한 재사용으로서의 가능성을 가지고 있으면서 EJB처럼 무겁지 않고 더구나 오픈소스이기 때문에 프로그램 개발 기술에 큰 의미를 가진다.

NHN도 오픈소스를 중요시하면서 개발자 인터뷰때도 오픈소스 참여/활용 여부를 체크하고 있다.”

사용자 삽입 이미지

+ Spring AOP 기초 : 안영회님

AOP에 대해 사전 공부 못하고 무지한 상태로 갔기 때문에 걱정이 됐지만, 결과적으로 AOP를 이해하고 실제로 적용할 수 있는 길을 텄기 때문에 크게 도움됐던 발표입니다. 안영회님은 세미나를 진행할 때 참석자 눈높이에 확실히 집중하면서 발표를 진행하는 것 같습니다. 발표자 입장이 아니라 참석자인 내 눈높이에서 발표를 진행하는 것이 느껴지면서 이해도 쉽게 되고 이클립스 실습은 재미있었기 때문에 크게 도움이 되었습니다. 개인적으로 안영회님의 발표 역량은 꼭 배워야겠다는 생각도 들었습니다.

제가 인상 깊게 이해했던 내용은 다음과 같습니다.

"AOP는 새로운 개발 방법이라기 보다는 OOP를 돕기 위한 개념이다.

개발을 하다보면 ‘암묵적 인터페이스’가 존재하게 된다. 암묵적 인터페이스란 하나의 기능을 수행해야하는 인터페이스에 사실은 로깅, 보안처리 등의 여러 요소가 어쩔수 없이 들어가게 되는것을 말한다.

이럴 경우 하나의 기능만 수행해야 하는 객체가 멀티 객체가 되어 복잡도가 증가되는데, 개발자는 암묵적 인터페이스에 존재하는 로깅, 보안처리 등의 특정 관심사를 계속 의식해야만 하기 때문에, 개발자의 집중을 분산시키면서 유지보수를 어렵게 만든다.

(마침 세미나 동영상 녹화 중 테이프를 교체해야 하는 상황이 발생하면서 동영상 장비에 발표 진행을 맞추느라 발표가 잠깐 중단되었는데, ‘기계가 못 따라주면 사람이 맞춰줘야 한다.’ 라는 비유를 썼다.)

지금 동양상 테이프 교체 상황과 마찬가지로 클래스(기계)가 제 기능을 수행하지 못하면 사람이 항상 관심을 가져야 한다.


그러나 AOP를 쓰게 되면 항상 신경써야 되는 위와 같은 특정 관심사를 분리해 낼 수 있다."

그리고 ‘암묵적 인터페이스’가 들어간 예제와 이것을 AOP를 적용하면서 실제로 어떻게 분리되는지 실습이 이어졌습니다. ‘암묵적 인터페이스’ 상황에 대해 늘상겪는 일이어서 진짜 그 관심사들이 분리 되는 과정이 눈으로 확인되니깐 이해가 되었습니다.

나머지 전반적인 AOP 발표 내용은 ‘한국 스프링 사용자 모임’ 블로그에서 관련 내용을 다운받아 보시길 바랍니다.

사용자 삽입 이미지

+ 잠깐 휴식

항상 같이 참석하는 친구와 이번에는 스프링을 모르는 우리 회사 개발자분도 같이 참석했습니다. 새로 참석한 개발자는 특히 어려운 AOP 내용이라 이해안될줄 알았는데 이해가 잘된다며 좋아했습니다.

제가 일이 있어서 첫번째 강좌만 듣고 자리를 떴습니다. 아래는 친구가 정리해준 내용입니다.

+ 게릴라 패널 토의 : 필자 이군배

토론 참석멤버
허광남님, 김승권님, 이동국님, 백기선님, 마소의 기자

토론 질문 내용들

오픈 소스 프로젝트를 진행한다고 했는데 현재 어디까지 진행된 상태이고, 로드맵은 나왔는지?
-> 현재 네이버에서 1년 지원해주기로 한거 외에 구체적인 방향 정해진 거 없음(안영회님)

수년 내내 똑같은 사이트로 운영되는 마소의 커뮤니티 사이트를 개선시킬 수는 없는지?
-> 현재까지 경영 난에 시달렸지만, 최근 경영 지원을 받아서 사이트 개편할 계획 (정희용기자님)

공부를 열심히 하시는데 어떤 방법으로 공부할 대상을 찾고 어떤 방법으로 공부를 하시는지?
-> 멘토를 잘 만났고 멘토가 많은 조언을 해줌에 따라 공부의 방향을 잡는다. (백기선님)

시너지 효과를 위해서 오픈소스 커뮤니티 사이트 통합할 취지들은 없으신지?
-> 계획은 없지만, 한번 운영자님들이랑 얘기는 해보겠다. 스프링관련 자료는 안영회님 블로그에 옮기도록 하겠다.

-> 구글이 있는 한 커뮤니티 사이트 통합은 없어도 될것 같은데....허허허 (허광남님)

+ AOP 실전 적용 전략 : 김승권님(teacher.seal@gmail.com) : 필자 이군배

AOP 실전 적용 구체적인 사례를 들어 강의함으로써 어떻게 AOP를 적용할 것인지 머리 속에서 저절로 그려졌습니다. AOP 적용하는 팁도 주셔서 감사드립니다.

제가(이군배) 정리한 내용으로 김승권님의 발표 내용을 대신합니다. 자세한 내용은
한국 스프링 사용자 모임’ 블로그에서 관련 내용을 다운받아 보시길 바랍니다.

1. AOP 도입팁
#도입팁1. 언어별 AOP 바인딩 현황
 - AspectR, AspectS, AspectC
 - Aspectle(SmallTalk)
 - Pythius(Python)
 - Spring.NET
 - Aspect Orirented Dojo
 - AspectJ, Spring AOP, AspectWerkz
타 언어보다 자바 관련 AOP - AspectJ 비롯한 Spring AOP ? 가 적극적으로 사용되고
있다.

#도입팁2. 거부감
 - 원인 : AOP 기술에 대한 오해와 학습에 대한 부담감
 - 해결책 : AOP를 익혀서 실제로 경험해보는 것이 중요함.
 - 배워야 할 것들
 -  AOP적으로 사고하기 (모델링 & 설계)
 -  AOP 기술(Spring AOP)
 - AOP의 문제 영역 파악
 - 횡단 관심의 영역
: 전제 조건 : OOP 객체지향적 모델에서 중복 코드 패턴
  예) 로깅, 보안, Tracing, 예외 처리, 트랜잭션, 메시징, 캐싱

#도입팁3. 다차원적으로 사고하기

2. AOP 적용팁
적용팁#1. 상황에 맞는 AOP 시스템 선택
- 처음 시작은 Proxy기반 Spring AOP 유리 : 손쉽게 활용
- 점진적으로 Aspectj 기반 방식으로 확장 : 커스터마이징된 Advice 자체 개발 및 Aspectj
- 이 때 syntax …
- 전통적 compiler 별도 필요
- Meta data 이용
- XML 설정 방식

적용팁#2. Apsect 설계시 유의점
- OOP 설계 충분히 활용
: Abstract/Conrete 나누어 생각
- 하나의 Aspect 너무 많은 로직 X
- Aspect 설계를 위한 표기법 준수
- 설계 단계부터 UML 확장 사용
- 일반적인 설계 기법

적용팁#3. 도입 시기
- Aspect를 파악해서 미리 준비
- 단위테스트(Aspectj)
- 통합테스트(비즈니스로직)
- Pointcut 설정

적용팁#4. S/W 공학
- 일관성 있는 Namig 룰
- AOP는 OOP 대체 X
- 과다 적용 금지
    @Configurable
    @Transactional
-> Runtime 시 Weaving 일어나므로 성능 저하

3. AOP 적용 사례
적용 사례#1. Struts 어플리케이션 테스트 도구
- OOP 방식의 해결
- AOP 방식의 해결

적용 사례#2. 비파괴적 벤치 마킹/코드 검사

적용 사례#3. Java Aspect Component
 Tracing, Deployment, Consistency, BroadCasting, Load Balancing

기타 엑셀을 이용하여 종단 횡단 다차원적인 면을 MATRIX로 표현해서 구현하면 좋다.

+ 마무리
4회 세미나는 참석자도 많이 오지 않고, 준비도 덜 됐다고는 하는데 그럼에도 나와 친구와 스프링을 몰랐던 우리회사 개발자분도 모두 세미나 내용에 만족했습니다.

그 결과 이번 주 회의에서 나와 우리회사 개발자는 Spring으로 프레임워크를 만들면서 AOP도 적용해보기로 했습니다.

+ 참고 사이트
한국 스프링 사용자 모임 http://www.springframework.co.kr
스프링 컨설팅 회사 Eprill http://www.epril.com
이일민님 블로그 http://toby.epril.com
안영회님 블로그 http://younghoe.info/
백기선님 블로그 http://whiteship.tistory.com
김승권님 블로그 http://seal.tistory.com/

+ 나머지 후기 보기
한국스프링사용자모임3회(KSUG) 참가 후기 (자리잡은 커뮤니티)
한국스프링사용자모임2회(KSUG) 참가 후기 (스프링 달인의 한수 가르침)

우토로의 희망을 기다리는 마지막 30일 시작~! (~ 2007.9.30)
일본 강제동원 노역에 시달린 일본 우토로 마을의 할아버지/할머니가 쫓겨날 위기에 놓였습니다.
우토로 토지소유권자에게 토지구입확정을 해주어야 하는 기한인 9월 30일까지 남았습니다.
오늘도 기도하는 마음으로 모금과 서명운동이 진행되고 있습니다.

"우토로의 희망을 기다리는 마지막 30일 참여 방법"

   ♥ 아고라 청원 바로가기 (10만인 서명을 향해 출발~)
http://agoraplaza.media.daum.net/petition/petition.do?action=view&no=29202&cateNo=245&boardNo=29202   

   ♥ 아름다운 재단 홈페이지에서 신용카드 휴대폰 송금 바로가기
http://www.beautifulfund.org/foundation/addOn/campaign/cp_content.jsp?c_no=006005001&CampaignID=7

   ♥ 아름다운 재단 무통장 입금
      하나은행 162-910006-81704 / 국민은행 006001-04-091586 (예금주:아름다운재단)

네이버 해피빈을 통해 돈을 굳이 내지 않고도 간단한 한문장만 쓰기만하면 500원씩이라도 기부하실수 있습니다.
기부 목표 쓰고 콩받기 : http://project.happybean.naver.com/ProjectView.nhn?projectno=1000000239
를 먼저 하여 콩을 받으시고,
우토로 관련 지구촌 동포 연맹에 기부하기 : http://happylog.naver.com/kin/H000000005326
를 통해 기부하여 주시길 바랍니다.

"이번 후기 정리에 도움을 준 제 친구가 회사에서 KOEX를 빌려서 세미나를
하는데 600여명 앞에서 스프링을 주제로 발표를 한다고 합니다.
격려의 댓글 부탁드립니다."