Outsider's Dev Story

Stay Hungry. Stay Foolish. Don't Be Satisfied.
RetroTech 팟캐스트 44BITS 팟캐스트

제10회 KSUG 세미나 #2

이 포스팅은 제10회 KSUG 세미나 #1에 이어진 포스팅입니다.



스프링 by 봄싹
- 백기선 (봄싹)

이 세션은 봄싹스터디에서 스터디를 운영하면서 스프링등의 기술을 이용해서 사이트를 구축하면서 생긴 노하우를 가지고 봄싹사이트에 대한 구조 설명과 간단한 기능추가에 대한 라이브코딩으로 진행되었습니다. 스프링의 DispatcherServlet, HandlerMaping, HandlerAdapter, ViewResolver의 동작에 대한 것을 소녀시대멤버로 맵핑하여 설명해서 사람들에게 큰 흥미를 이끌었습니다.

DispatcherServlet, HandlerMaping, HandlerAdapter, ViewResolver의 동작DispatcherServlet, HandlerMaping, HandlerAdapter, ViewResolver의 동작

라이브 코딩은 봄싹에서 사용중인 아틀라시안의 컨플루언스 위키에 새로운 글이 올라왔을때 관리자가 수동으로 리플래시를 실행하면 봄싹사이트에 최신글이 뜨도록 가져오는 기능을 개발하였습니다. 이미 존재하는 시스템이기 때문에 URL맵핑 및 Controller부터 DB나 시큐리티등까지 한 사이클의 전체적인 라이브코딩을 볼 수 있었습니다. 추가적으로 앞의 세션에서 시큐리티를 실행하면서 어플리케이션 컨텍스트의 수정을 적용하기 위해서 WAS를 계속 리스타트했던 것과 비교하여 이번 시연에서는 JRebel을 적용하여 WAS의 재기동없이 수정내용이 바로바로 적용되는 것도 꽤 흥미로운 부분이었습니다.(머 완전한 해결법은 없는것처럼 JRebel사용중에도 바로 적용이 안되어 재기동이 필요한 상황이 생기기는 했습니다.)

발표하시는 백기선님봄싹 코드 살펴보기

발표자료는 여기 있습니다.

봄싹에 소속되어 있기는 하지만 아직 봄싹사이트 개발에는 참여를 하지 않았기 때문에 꽤나 더 관심있게 지켜본 것 같습니다. 하나의 특별한 주제에 대한 것도 중요하시만 실제 개발할때는 여러가지 기술을 한꺼번에 다루기 때문에 한 사이클을 모두 진행해 본다는 점에서 큰 의미가 있었습니다. 참 공부할께 많구나 하는 생각과 함께 다른 사람은 어떤 식으로 코딩하는지에 대해서 볼 수 있는 좋은 시간이었습니다. ㅎ






소프트웨어 개발자로 살기
- 안영회 (아이티와이즈)

KSUG의 전 회장이시었던 안영회님의 세션이었습니다. 다른 세션들이 모두 기술세션이었던 데에 반해 이번 세션은 좀더 인간적(?)인 세션이었습니다.

얼마전에 호주로 여행을 갔다오셨는데 그동안 열심히 일했다고 생각을 했음에도 여행을 가기전까지의 과정이 너무 힘들었다고 하셨습니다. 여행은 모았는데 여행후 일상으로 돌아오니 다시 예전과 같아졌습니다.  항상 일을 하다보면 미리미리 해둘걸 하는 후회를 하게 되고 계획한 것처럼 잘 되지 않습니다. 프래클린 플래너나 GTD에 대한 책도 읽어보았는데 도움은 되었지만 해결은 되지 않았습니다.

그러다가 유명한 책인 켄트벡의 TDDBE에서 답을 찾았습니다. 자신의 보폭은 자신이 정하는 것이고 작은 보폭으로 반복을 한다는 부분이었는데 이 TDD를 삶에 적용하여 일을 할때 작은 단위로 나누어 일을 하고 환경에 지배당하지 않도록 노력하였습니다. 하루이상 걸리는 작업은 무조건 나누도록 팀원들에게 요구했습니다. 처음에는 무척 어렵지만 시간이 지나면 가능해지고 빠르게 갱신을 할 수 있습니다. 어떤 일을 할때 막판에 가서 후회를 하게 된다면 주기를 빠르게 해서 매일 후회하도록 하는 것입니다.

발표하시는 안영회님 긍정적인 화학반응을 기대하며3계층으로 나누어보면

사람들은 흔히 이분법으로 많이 생각하게 되는데 이분법에는 한계가 있습니다. 현실에는 0과 1로 나누어지는 것이 하나도 없습니다. 예전에는 관심있는 것과 없는 것을 나누었었는데 지금은 후회하고 있고 전체적으로 균형잡힌 삶이 필요하다고 생각합니다. 컨설턴트가 다른 사람들과 다른 점이라면 이론과 현장을 구분할 수 있다는 것입니다. 이론은 단지 현실의 공통적인 것을 축약해 놓은 것일 뿐이고 이것을 현실로 만드는 것은 좀처럼 쉽지 않습니다. 컨설턴트는 단지 추상적인 사고를 좀 더 잘 할 뿐입니다.

애자일 방법론을 통해서 점진적으로 개선을 할 수 있습니다. 항상 완전히 서로 다른 체계간의 만나기 때문에 모든 일에는 어려움이 있습니다. 애자일을 적용하려고 해도 보통 고객은 정형화된 WBS를 원하고 개발자들은 WBS를 가지고 어떻게 애자일을 하는가에 대한 고민이 있습니다. 하지만 고객과 협의해서 적절한 선의 마일드스톤을 정하고 그 안에서 백로그를 작성하여 이터레이션 되도록 할 수 있습니다. 이런 부분은 서로간의 인정에서 출발해야 하며 상대에게 맞추어 주어야 합니다.
중요한것은 끈질기게 버티는 것입니다.

개발자도 사람이므로 삶에 대한 부분과 애자일로 좀 더 효율적으로 일할 수 있는 부분에 대해서 다양한 얘기를 해 주셨습니다. 개인적으로는 TDD의, 혹은 애자일에서 항상 강조하는 이터레이션을 삶에도 적용한다는 부분이 인상적이었습니다. 애자일이나 TDD가 접근했던 것 처럼 처음부터 실패안하도록 계획하는 것 보다는 점진적으로 개선한다는 것을 삶에까지 적용한다는 것은 미처 생각하지 못했었는데 나름 괜찮겠다는 생각이었습니다. 한번에는 어려워도 좀 익숙해 지면 살을 많이 효율적으로 할 수 있을것 같습니다.





엔터프라이즈 환경에서 Maven 활용 전략
- 박재성 (자바지기)

메이븐에 대한 세션이었습니다. 프로젝트를 하면서 계속해서 항상 반복하는 일들이 있는데 프로젝트 환경을 구축하고 유지하는 일들이 대표적입니다. 소스들간에 라이브러리들간의 의존성 문제들... 또한 자바에는 오픈소스 라이브러리가 많기도 하고 서로간의 의존성도 심한 편입니다. 거기에 프로젝트 진행중 버전이 바뀔때마다 새로 다운받아서 적용하는 일을 반복해서 해야했습니다. 관리자의 일을 하면서 처음에는 개발을 직접 하려고 했지만 관리자가 가장 시간이 많이 있어야 한다는 생각이 들어서 그래서 팀원들이 개발만 하게 하고 환경구축 같은 부분을 맡아서 했습니다.

엔터프라이즈 환경에서 Manven활용 전략발표하시는 박재성님일반적인 프로젝트의 의존성

기본에 많이 쓰던 Ant와 Maven을 비교하면 JDBC와 Spring JDBC를 비교하는 듯한 느낌이었습니다. 메이븐은 사용하기 전에는 메이븐과 비슷한 antlib을 사용했었는데 CoC(Convention over Configuration)의 사상이 메이븐에는 많이 녹아있습니다.

메이븐에는 archetype이라는 것이 있어서 mvn archetype:generate 명령어를 통해서 프로젝트를 생성할 수 있습니다. archetype이라는 이름으로 여러가지 설정의 프로젝트가 정의되어 있고 원하는 아키타입을 선택해서 간단하게 프로젝트를 생성해 낼 수 있는데다가 추상화되어 잘 되어 있어서 오히려 Ant보다 쉬울 수 있습니다. 메이븐은 내부적으로 super-pom을 가지고 있는데 각 pom.xml이 이 super-pom을 상속받고 있어서 각 pom파일들은 아주 심플합니다. 하위 pom에서 재정의하면 자바처럼 설정이 재정의 됩니다. Goal을 위한 단계별 Phases가 정의되어 있는데 각 Phases사이에 원하는 작업을 자유롭게 끼워 넣을 수 있기 때문에 필요한 작업들을 자동화안에 구성할 수 있습니다.

Maven의 동작 구조Dependency

프로젝트의 라이프 사이클과 플러그인들, 의존성을 관리해 주게 되고 중앙저장소에서 제공되는 모든 라이브러리들이 관리되고 있으며 Maven Repository에서 중앙저장소의 라이브러리들을 쉽게 검색할 수 있는데다가 설정에 대한 xml정의까지 제공해주어서 쉽게 이용할 수 있습니다. 다운받은 라이브러리들은 로컬저장소에 저장이 되면 이클립스의 설정으로 소스파일을 볼 수 있도록 설정하면 이클립스에서 외부 라이브러리들에 대한 소스보기가 바로 가능합니다. 이부분은 개발은 하면서 외부 jar의 소스를 참고해야 할 일이 있을때 아주 편리합니다. 단위별로 모듈로 정의한 뒤에 통째로 빌드하는 것도 가능합니다.

사용자가 archetype을 만들수 있기 때문에 사내에 레파지토리를 구성하고 전용 아키타입을 만들어서 팀에 적용을 하면 전사표준으로도 쉽게 적용할 수 있습니다.

설정은 다 되어 있는 메이븐을 사용만 해 보았습니다만 메이븐은 여러가지 면에서 매력적인 툴이었습니다. m2eclipse로만 사용해보았는데 사실 command로 사용하고 아키타입이 있다는 것은 처음 보았습니다. 메이븐은 좀 공부(?)하기는 해야해서 맘에만 두고 있었는데 전체적인 메이븐의 아키텍쳐에 대해서 이해할 수 있었습니다.  사용법과 함께 구조에 대해서 설명해 주니까 전체적인 동작을 이해하기가 좋았습니다.




세미나를 들으러 간 것이기는 하지만 봄싹에서 다수가 함께 가기도 했고 KSUG와도 약간 연관이 있어서 아는 사람도 많아서 좀 더 편하게 세미나에 참가했던것 같습니다. KSUG가 업체가 아닌 커뮤니티인데다가 온라인에서 주로 활동되는 터라 KSUG의 운영진은 있지만 KSUG의 멤버라는 소속감을 가진 사람들은 아직 좀 적은 상황이라서 그런지 행사에 대한 스태프는 좀 부족하지 않았나 싶은 생각은 약간 들었습니다만(회사 퇴근해서 이런 행사 준비한다는게 쉬운 일은 아니긴 하죠 ㅎ) 각 세션의 스피커분들이 워낙 발표를 잘 해 주셔서 저뿐만 아니라 다른 분들도 많은 것을 얻어간 시간이었을듯 합니다. 저로써는 KSUG라고 해서(스프링의 사상도 그렇기는 하지만요) 스프링이라는 주제에 한정되지 않고 다양한 주제의 세션이 진행된 것이 오히려 더 좋았던 것 같습니다. ㅎ

2010/04/22 03:30 2010/04/22 03:30