개발자라면 누구나 개인용 서버에 대한 욕구가 있기는 하겠지만 제가 개인서버에 대한 마음이 생긴건 작년 초가 본격적이었던 것 같습니다. 아는 사람들이랑 이런저런 프로젝트를 하면서 대단한건 아니지만 그래도열심히 만들었던 것들이 그냥 소스로만 하드에 남아 있는 것이 많이 아쉬웠습니다. 꼭 머 자랑하고 싶어서라기보다는 나중에 다시 보고 싶어도 서버니 디비니 다시 셋팅하는 것도 쉽지 않고 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달 정도의 시간이 지났습니다. 이 작업만 한 것은 아니었지만 구체적인 완성형을 가지고 작업한게 아니라 코딩하다가 생각나는대로 새로운 것들을 추가하다보니 꽤 오랜 시간이 걸렸습니다. 그렇게 해서 아래와 같은 사이트가 나왔습니다.
디비는 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에 공개되어 있습니다.
사실 뭐 현재 상태에서는 그다지 볼건 없는 상태이지만 일단 기반은 마련되고 나니까 좀 후련합니다. 이제 이것저것 많이 해보면서 여기다가 쌓아놔야겠습니다.
서브버전에서 GIT 등으로 옮겨간 이유가 궁금해요. 저도 서브버전을 사용하고 있는데 옮겨야 하나 하는 생각이 들어서요. 대세가 GIT 같던데 말예요.
처음에는 그냥 공부용으로 배우다가 편해지면서 넘어가게 된건데요.
일단 개인프로젝트 같은 경우 조금 만지다가 못하게 되거나 또 다른걸 하게 되는 경우도 많은데 Subversion같은 경우는 항상 중앙저장소를 만들어야 하기 때문에 프로젝트 시작전 이런 작업이 꽤 귀찮습니다.(스크립트로 한방에 할 수도 있지만요.) dvcs같은 경우는 그냥 로컬에서 형상관리하다가 공유가 필요할때만 올리면 되니까 훨씬 편하고 제 로컬외에 다른 환경은 신경쓰지 않아도 되니까 좋구요.
그리고 많은 오픈소스들이 dvcs를 쓰고 있기 때문에 배워둘 필요도 있었습니다. ㅎ
좋은글 잘 읽었습니다.
혹시 호스팅서버에 git을 설치하지 않고, github로 옮기신 이유가 있을까요?
github냐 호스팅 받아서 설치하느냐 고민하고 있거든요.
전에 SVN쓸때는 개인서버에 많이 설치하고는 했었는데요 이게 은근히 귀찮은것 같습니다. 사실 git말고도 레드마인류같은 프로젝트관리나 위키가 필요한 경우도 맣은데 뭐 하나할때마다 일일이 설정해 주는게 귀찮아서 그냥 github로 갔습니다. 다른 사람들하고 공유하기도 쉽고 코드작성외에 다른 부분은 신경쓰지 않아도 되니까요...