Outsider's Dev Story

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

프로젝트 "Messier 31" 후기

중간중간 간간히 언급은 했지만 자세한 얘기는 잘 하지 않았던 것 같은데 12월부터 봄싹에서 만난 친구들과 의기투합하여 그동안 매쉬업 경진대회를 준비하고 있었습니다. 그때문에 포스팅도 좀 줄고 정신없는 시간들을 보내고 있죠. 봄싹에 나가기 시작한지는 그리 오래되지는 않았지만 몇번 나가던 와중에 JS 커버플로우 프로젝트인 SSCF(지금은 홀딩(?)상태)를 is윤군과 Miracle군과 함께 하면서 친해져서 다음 Devday도 같이가고 하면서 자주 어울리다가 시작은 서버가 필요하다는 단순한 이유(사실 그목적은 이미 사라지고 실제로 그렇게 쓸 수도 없었지만)로 의기투합하여 매쉬업 경진대회에 참여하게 되었습니다. 목표와 다르게 예선에서 떨어져서(ㅠ..ㅠ) 지금 후기를 쓰게 되는군요. ㅎ

Granny wants to Mashup?
Image by psd via Flickr



Project Messier 31
한 팀이 총 4명까지 되기 때문에 시작하고 얼마지나지 않아 arawn을 꼬셔서 4명이서 함께 하게 되었습니다.프로젝트 코드네임은 안드로메다 성운의 Messier 31(m31)로 정하고 주제는 수많은 웹서비스들이 있다보니 탭브라우저라고 하더라도 수많은 웹페이지를 띄워넣고 있어야 하는 니즈(저만 해도 브라우저를 3개를 동시에 쓰는데 거의 디폴트로 5~6개의 탭을 띄워져 있죠. 머 서핑 좀 할라치면 10개 넘어가는건 금방이고요.)를 생각하여 웹에 데스크탑형태의 UI를 이용하여 여러가지 OpenAPI 서비스를 넣자였습니다.

매년 있는 대회긴 하지만 미리 준비를 하고 있었던 것이 아니기 때문에 사실 처음에 주제를 고민할 때 많은 고민을 했습니다. 제 취향으로는 화려한 것보다는 실용적인 것을 선호하기 때문에 책관리 등등의 서비스등을 생각하였으나 예년들의 수상작들을 좀 본 결과 아이디어도 당연히 중요하지만 디자인등의 인상적인 부분도 꽤 작용한다고 보았고 약간의 대회용 임팩트가 필요하다는 결론을 가지게 되어서 웹데스크탑으로 결정했습니다.

Javascript 코어라이브러리는 jQuery를 사용하고 UI라이브러리로는 Ext JS를 사용했습니다. 서버사이드는 저는 익숙치 않지만 다른 친구들이 익숙한 Spring과 iBatis를 사용하고 톰캣 6에 올려서 Oracle XE를 디비로 물렸습니다. Ext JS에서 Web Desktop에 대한 예제가 있었기에 해당 기능을 커스터마이징하여서 SpringSprout Web Desktop을 만들었습니다.

그래서 나온 것이 아래의 결과물입니다. 저희 개발서버를 이용하여 운영하였습니다만 언제까지 운영될지 몰라서 스크린캐스트를 찍었습니다. (제공받은 cafe24로의 이전을 준비중인데 어떻게 될지는 좀더 두고 봐야겠습니다. 스크린캐스트를 처음 찍어봤더니 은근 힘드네요. ㅎ)



봄싹의 이름하에서 만든 것이기 때문에 어플명에는 전부 봄을 붙히고 이미지 검색을 위한 봄씨, 동영상 검색인 봄플레이어, 책검색 봄북, 미투데이 클라이언트 봄미투데이, 트위터 클라이언트인 봄트위터, 한 일 기록용인 봄타임로그를 만들어서 붙히고 데스크탑 느낌을 내려고 로그인화면에 부팅화면처럼 만들고 검색한 것을 저장할 수 있도록 탐색기형태로 만들어서 저장할 수 있도록 하였습니다.

사용한 OpenAPI는 Gravatar, Daum 이미지검색, 네이버 이미지 검색, 구글 이미지 검색, Flickr, 네이버 책 검색, Youtube,  다음 동영상 검색, me2day, Twitter, Google Visualization API입니다. 또 있나.. 흠... 생각이 안나네요...



프로젝트 후기
낮에는 생업을 해야하니 퇴근하고 집에와서 잠줄여가면서 크리스마스나 연말, 주말도 포기하고 정말 열심히 코딩했던것 같습니다. 비록 결과는 예선탈락이라는 좋지 않은 결과로 이어졌지만 정말 좋은 경험이었고 즐거운 시간이었습니다. 처음 킥오프라고 강남역에 모여서 마지막 전문가 심사까지 딱 50일 걸렸네요. 50일... 머 길다면 길고 짧다면 짧은데 이기간에 이거 만들라고 회사에서 시켰다고 생각하면 장난아니게 짜증났을것 같은데 역시 사람의 마음가짐이 중요한지 몸은 좀 피곤했지만 상당히 즐거운 시간이었습니다.

운좋게 좋은 개발자들과 한 팀을 이룬 덕에 이것저것 도움도 많이 받고 이런저런 의견공유도 많이 하고 그랬습니다. 일단 정말 오랜만에 진짜 프로그래밍 다운 프로그래밍을 한게 가장 좋았습니다. 이런게 진짜 코딩... ㅋㅋ 자바는 한참 안만져서 오랜만에 만져서 익숙치 않았지만 역시 자바는 좋군요. 상당부분이 클라이언트사이드 작업이었고 서버사이드는 대부분 is윤군이 맡아서 처리했서 서버코딩이 많지는 않았지만 스프링도 좀 써보고 아이바티스도 구경은 해보고 그랬네요. 봄싹 사이트는 이미 너무 커져서 뒤늦게 들어간 저로써는 소스를 파악하기가 만만치 않았는데 이젠 이 m31소스 코드로 찬찬히 다시 공부하면 되겠군요. ㅎㅎㅎㅎ(사실 개발일정 맞추느라고 소스 연구하고 그러면서 까지 만들 시간은 없어서.....)

그렇게 익숙치 않다고 생각했던 jQuery도 더 익숙치 않은 Ext JS를 만나니까 확친근하게 느껴지면서 손에 익게 되었네요. ㅎ Ext JS는 진짜 계속 붙들고 있었더니 한번 써보려고 했던 UI 라이브러리도 제대로 경험해 봤습니다. 블로그에서 이런 저런 얘기를 많이하는데 정작 코딩량은 그다지 많지 않은게 항상 좀 신경쓰였는데 이번에 집에서 코딩습관(?)은 제대로 든 것 같습니다. 앞으로 개인시간 활용해서 이것저것 코딩해 볼 수있게 되지않을까 싶은 생각이 드네요. 안좋은 부작용으로는 3시였던 취침시간이 더 다그치다보니 이젠 4시취침으로 습관이 변경되었네요.. 머 1시간 벌었으니 부작용이라고 하기는 좀 그렇군요. ㅋㅋ

[##_Gallery|1011477122.gif|SpringSprout Web Desktop|1045955866.gif||1067007994.gif||1391812714.gif||1300023482.gif||1039523603.gif||1011797650.gif||1165774601.gif||width="500" height="350"_##]
그리고 대규모 팀은 아니었지만 협업을 했던건 큰 경험이었던것 같습니다. 기껏해야 전에 같이 일하던 동기랑 둘이 아니면 거의 솔로코딩을 했기 때문에 협업에 대한 경험이 거의 전무했고 레드마인같은 툴도 협업에 실제로 써보진 못했는데 이번에 제대로 경험했습니다. 여럿이 있다보니 각자 생각하는거나 마인드도 다르고 그 가운데 머 종종 의견충돌도 나지만 서로 조금씩 양보하거나 이런저런 토론하고 결정짓고 하는 것은 사실 책본다고 얻을수 있는 지식은 아니죠. ㅎㅎ 역시 협업하려면 SVN은 당연한거고 Redmine같은 프로그램이 필수적입니다. 공유해야될 내용 공유하고 댓글로 토론하고 일감등록하고 버그리포팅하고 일정 체크하고........ 이거외에도 실제 회의를 해야할 일도 많았지만 일정상 오프라인으로 모이는 시간은 꽤 소비가 심했던 터라 도입한 스카이프를 통한 온라인 회의도 큰 역할을 했습니다. 역시 사람은 채팅보다는 말이군요. ㅎ 채팅도 그룹채팅되고 컨퍼런스콜로 단체로 온라인회의를 할 수 있다보니 아주 큰 도움이 되었습니다.

좀더 여유있게 종종 만나고 친목도 다지면서 했으면 더 좋았겠지만 일정상 그러기가 힘들었기 때문에 거의 온라인 상으로 얘기하면서 코딩을 하였는데 무척 즐거운 시간이었네요. ㅎ 운좋게 실력있는 친구들하고 팀을 구성한 덕에 정말 좋은 경험을 하게 되었네요. ㅎ 혼자였으면 하다가 포기했을텐데 정말 모두 열심히 하니까 서로 알아서 의욕적으로 진행되었었습니다. 노력한 만큼 결과도 나왔다면 더 좋았을텐데 항상 그럴수는 없으니까요. 기대를 많이 했기에 아쉬움은 확실히 있지만 후회는 없습니다. 다시 돌아가더라도 이보다 더 잘 만들수는 없는것 같네요. ㅎㅎㅎㅎㅎㅎ


엄청 바쁘다가 갑자기 할일이 사라지니까 다같이 좀 멍때리고 있네요. ㅎㅎㅎㅎㅎ
2010/01/29 04:00 2010/01/29 04:00