Outsider's Dev Story

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

개인적인 목적의 실험사이트 Side Effect Studio 오픈

개발자라면 누구나 개인용 서버에 대한 욕구가 있기는 하겠지만 제가 개인서버에 대한 마음이 생긴건 작년 초가 본격적이었던 것 같습니다. 아는 사람들이랑 이런저런 프로젝트를 하면서 대단한건 아니지만 그래도열심히 만들었던 것들이 그냥 소스로만 하드에 남아 있는 것이 많이 아쉬웠습니다. 꼭 머 자랑하고 싶어서라기보다는 나중에 다시 보고 싶어도 서버니 디비니 다시 셋팅하는 것도 쉽지 않고 1회성으로 끝나기에는 아쉬운 느낌이라 서비스는 아니더라도 어딘가에 올려져있었으면 좋겠다는 생각이 들었습니다.(오래되면 셋팅도 잘 기억안나고 그래서..)

그래서 작년 5월에 Cafe24에서 가상서버 호스팅을 신청했습니다. 일반 웹호스팅은 서버환경의 제약이 너무 심했기 때문에 제 목적에는 거의 맞지 않았고 개인용서버는 너무 비쌌기 때문에 개인적인 목적으로 사용하기에는 어려움이 있었습니다. 그 얼마전에 알게된 가상서버 호스팅은 OS에 root계정만 주고 그 위에서는 마음대로 할 수 있는데다가 가격도 상당히 저렴했기 때문에 램용량등 성능이 좀 부족한 것만 빼면 모든 조건이 다 맘에 들었습니다.

서버의 사용목적은 앞에서 얘기한 개인적으로 진행했던 프로젝트들의 로그를 남겨두는 것과(포트폴리오라고 하기에는 너무 거창하고...) 개인용 Subversion 저장소로 사용하는 것입니다. 이런 저런 코딩을 하다보면 형상관리가 필요한데 그럴때마다 소스저장소를 찾아다니는것도 피곤하고 이런 것들은 대부분 공개형이라 때때로 개인적인 목적에는 맞지 않는 경우도 많았기 때문입니다. 그래서 처음에는 Subversion 서버 설치하고 Redmine설치하고 이것저것 설치했었지만 다른 일들로 바쁘고 해서 이 설정에만 여러 달이 걸렸었습니다. 그러다가 작년 여름부터 형상관리를 Subversion에서 Mercurial이나 git같은 DVCS로 옮겨가면서 사실상 Subversion을 사용할 일이 없어진 관계로(Github와 bitbucket으로 제 모든 필요가 거의 충족되어서) 얼마후 서버에 셋팅하였던 형상관리와 관련된 부분도 모두 내려버렸습니다.




Side Effect Studio
결국 서버호스팅의 주용도가 개인용 Lab사이트로 집중되었습니다. 개인적인 프로젝트나 작업했던 것들을 올려놓고 하는 용도로 Side Effect Studio라는 이름을 짓고(뭐든지 시작은 네이밍부터) 개인용 Lab사이트를 만들기로 결정하였습니다. 이 사이트는 프로그래머의 길, 멘토에게 묻다에서 나온 패턴인 "부숴도 괜찮은 장난감(Breakable Toys)" 패턴(기존에도 비슷한 생각을 가지고 있었지만 이 책에서 명확히 패턴화 되었습니다.)의 실천을 위한 기반이 되는 사이트로 이 패턴을 실천한 것들을 모아놓고 더 적극적으로 하기 위함입니다. 다른 말로 하자면 Yak Shaving을 체계적으로 해보자는 것이기도 합니다. ㅎ

개인용 웹사이트를 만들기 위해서 이런저런 디자인을 찾아다니고 틈틈히 디자인 구상을 하던 중에 MongoDB사이트에서 try MongoDB라는 이름으로 MongoDB에 대한 튜토리얼을 웹콘솔을 통해서 제공하는 것에 꽤 깊은 인상을 받고 node.js로 웹콘솔을 구현한 try-nodejs라는 프로젝트를 찾게 되었습니다.

사이트에 대한 디자인을 많이 구상하고 있었고 어느정도 방향은 잡았었지만 try-nodejs를 보고 어차피 되지도 않는 개발자의 디자인 감각으로 시간들여서 디자인을 하기 보다는 그냥 개발자 냄새가 물씬나게 만드는게 차라리 낫겠다는 생각이 들었습니다. 더군다나 개인적으로 사용하는 Lab사이트인데 너무 일반적인 Apache에  tomcat등 다른데서도 많이 만져볼 수 있는 환경으로 만드는 것은 별로 재미가 없다는 생각도 들었고 당시 node.js에 꽤 매력을 느끼고 있었던 터라 try-node.js를 fork해서 이런저런 수정에 들어갔습니다.

작년 9월 7일에 fork를 했으니 어느새 4달 정도의 시간이 지났습니다. 이 작업만 한 것은 아니었지만 구체적인 완성형을 가지고 작업한게 아니라 코딩하다가 생각나는대로 새로운 것들을 추가하다보니 꽤 오랜 시간이 걸렸습니다. 그렇게 해서 아래와 같은 사이트가 나왔습니다.

Side Effect Studio 화면

디비는 MongoDB를 사용하고(MongoDB 뱃지를 달고 싶었습니다. 그래서 node.js 뱃지도 만들어서 추가하기는 하지만 아직 MongoDB기반이라고 하기에는 너무 간단히만 사용하고 있네요. 차차 사용처를 늘려가야죠 ㅎ) 처음에 try-nodejs 소스를 가져와서 간단한 버그를 수정하고 제 목적에 맞게 어느정도 수정한 다음에 Sinatra스타일의 웹프레임워크인 express를 사용하도록 변경하고 MongoDB 드라이버로 node-mongodb-native를 사용하고 테스트프레임워크인 expresso를 사용해 테스트를 작성했습니다.

이전 포스팅에서 올렸듯이 gollum 위키를 사용하는데 gollum 위키가 사용자 인증이 없기 때문에 그 부분을 처리하기 위해서 서버내부에서 gollum을 돌리고 jsdom을 이용해서 gollum페이지의 내용을 가져와서 DOM에 올리고 edit나 create관련된 부분을 삭제하고 페이지가 열리도록 처리했습니다.(작업하면서 알게 된 것들은 추후 이어서 포스팅 하겠습니다.) 페이지에는 예전부터 한번 써보려고 했던 cufon도 사용하긴 했는데 지금은 웹에서 이런식의 폰트를 사용할 수 있는 기술들이 많이 생겨서 계속 쓸지 어떨지는 고민해봐야겠습니다.

일단 Side Effect Studio가 만들어져야 여러가지 작업을 연결할 수 있었기 때문에 12월 부터는 꽤 속도를 내서 코딩을 했습니다. 작년에 오픈하는게 목표였는데 결국은 해를 넘기고 말았네요. 거진 8개월동안이나(1년 결재했는데 흑흑) 가상호스팅을 드디어 제대로 써먹게 되었습니다. 별거는 아니긴 하지만 사이트의 소스는 모두 Github에 공개되어 있습니다.

사실 뭐 현재 상태에서는 그다지 볼건 없는 상태이지만 일단 기반은 마련되고 나니까 좀 후련합니다. 이제 이것저것 많이 해보면서 여기다가 쌓아놔야겠습니다.
2011/01/22 04:00 2011/01/22 04:00