2009/05/21 23:18

이번 학기의 세가지 프로젝트

학교의 네트워크 수업의 텀 프로젝트로 넷몬드(Netmond, NETwork MONitering Daemon)라는 네트워크 사용량 감시 프로그램을 만들었다. 사용량에 따라 돈을 내는 무선 네트워크 사용자들을 위해 IP, 시간대별 트래픽을 데이터베이스에 모아서 실시간 그래프로 보여준다. 최근 10초간 IP별 대역폭 사용량 비율, 1시간 단위로 분당 IP별 사용량, 전체 데이터베이스 등을 볼 수 있다.

이 프로그램은 넷빈즈로 자바에서 구현했다. 기본적으로 Jpcap이라는 패킷 캡처 라이브러리가 오가는 패킷들을 감시한다. 잡는대로 하이버네이트에 전송하며, 하이버네이트는 내장된 HSQLDB라는 데이터베이스에 내용을 저장한다. 여기에 저장된 내용은 Ehcache라는 캐시 라이브러리에 반영된다. 인터페이스는 스윙으로 구현이 되었으며, JFreeChart라는 라이브러리로 차트를 표시한다. 여기에서 필요한 정보는 자바 컨커런트 패키지를 통해서 주기적으로 갱신이 된다. 이는 하이버네이트를 통해 캐시에서 가져와, 아주 빠른 시간 안에 계산이 끝난다. 그리고 데이터베이스의 테이블은 하이버네이트의 어노테이션 기능을 활용해서 자동으로 만들어졌다.

넷빈즈의 프로파일링 기능을 이용해서 주요 병목 지점들을 쉽게 찾아낼 수 있었고, 그에 해당하는 라이브러리의 API 문서를 찾아 쉽게 해결할 수 있었다. 이 밖에도 주요한 컴포넌트를 잘 활용할 수록 기능은 다양해지고, 쓰기에도 편해지며, 속도도 빨라졌다.

작은 규모이지만, 이런 프로젝트를 오랫만에 해봐서 기분이 상쾌해졌다. :-) 특히 같이 작업한 후배가 많은 도움이 됐다. 필요한 주요 얼개를 전부 구현했으며, 아직 이런 라이브러리에는 익숙치 않지만, 탄탄한 기본 실력을 갖춰서 수월하게 작업할 수 있었다. 앞으로도 같이 작업할 기회가 있었으면 좋겠다.


반면, 이번 학기에 개발한 소프트웨어 스튜디오의 작품은 완전히 기대 이하의 작품이 나왔다. 규모도 적절히 축소 했으며, 인원도 다섯명으로 충분했고, 그레일즈라는 정말 좋은 개발 환경을 갖췄다. 그런데도 대패한 이유는 뭘까. 첫째로 모든 팀원이 개발 도구에 익숙하지 않았다. 한 명을 제외하고는 전자과였고, 넷빈즈라는 개발 환경에 그다지 익숙하지 않았다. 둘째로 팀원들이 연구에 시간을 많이 쏟지 않았다. 회의에 지각하기는 예삿일이 되었으며, 맡긴 단순한 일도 한 두주 미뤄지기는 일쑤였다. 셋째로, 팀원이 함께 작업을 함으로써 오히려 파괴적인 결과들이 나왔다. 서로의 코드와 연동이 되지 않고, 상대방의 코드를 덮어쓰는 일이 자꾸만 발생했으며, 이로 인해서 개발 기간이 세 배 가량 지연됐다.

그럼에도, 마지막에는 팀 중에 한 후배가 발표에서 빛을 발해주어, 한 시름을 놓을 수 있었다. 정말 의외의 발견이었고, 다음에도 기회가 된다면 그 후배와 같이 작업을 해보고 싶다. 그 때에는 서로 잘하는 부분을 나누어 맡아야겠지.


마지막으로, 혼자서 개발한 UP 프로젝트가 있었다. 이것은 아이폰에 관련된 작품인데, 많이 아쉬운 상태의 제품이 나왔다. 내가 생각하기에 정말 아쉬웠던 부분들이 있다. 첫째로 개발환경 고르기를 자꾸만 뒤로 미뤘던 점이다. 내가 제시하는 무언가를 고려하는 듯 하시면서 교수님이 생각하시는 바가 나오지 않으면 자꾸 더 생각해보자고 말씀하시는 듯한 인상을 받았다. 거의 기싸움에 가까왔다. 내가 무얼 제시하면, 배경 연구가 중요하다고 자꾸 강조를 하셨다. 그러다가 전체 기간의 1/3 이상 지난 시점에서 실제 개발 계획을 잡을 수 있었다.

두번째로 실제 기계가 최종 제출 바로 전날에 손에 들어왔다. 회계 절차상의 문제라고는 하지만, 당장 실제 기계에 옮겨서 포팅을 해야하는데 그렇게까지 미뤄져서는 아무 것도 제대로 할 수가 없었다. 제출 바로 전날에 나온 기계 덕분에 아무런 사용자 테스트를 할 수 없었다. 안타깝게도, 내 연구는 정말 뜬 구름 잡는 소리만 하는 셈이 됐다. 이런 연구실의 진행 절차는 나와는 잘 안 맞는 타입이라 생각한다. 나는 필요한 것이 있으면 그냥 그 날 가서 내 돈으로 무조건 사고 본다. 뒤에 영수증 처리든 뭐든간에 일단 당장 뭐가 나와야 할 것 아닌가! 이건 정말 안타까운 일이다.


죽자고 각오해서 이번 학기에는 직살나게 굴러봤고, 기말이 되었기 때문에 이렇게 다시 생각을 정리해본다. :-)

트랙백

이 글과 관련된 글 쓰기 (트랙백 보내기)
TrackbackURL : http://link.egloos.com/tb/4145237 [도움말]

덧글

  • 루씬 2009/05/22 20:58 # 답글

    첫번째 한것에 관심이 가네.. HSQLDB 캐쉬기능이 좋다고는 들었는데... 의미있는 작업을 했군.
  • 최종욱 2009/05/26 20:19 #

    외부 캐쉬를 사용했습니다. ^^; H2가 더 좋다고는 하는데, 아직 안 써봤습니다. 다음에는 구글 앱 엔진을 써볼까 생각중입니다.
덧글 입력 영역