건조한 아지트 개시
건조한 아지트를 개시한 기념으로 쓰는 글. 건조한 아지트 이전에 만든 축축한 아지트에 대해 소개하고 건조한 아지트에서는 어떤 꿈들을 펼쳐나갈지 설명한다.축축한 아지트?
건조한 아지트 이전에 축축한 아지트 이야기를 하지 않을 수 없다. 축축한 아지트란 제작년인가에 출범한 왼손잡이해방연대 아지트라는 이름의 사이트다. 나만의 블로그를 만들고 싶었는데 어쩌다보니 다같이 떠드는 게시판 사이트가 되어버렸다. 비운의 사이트라고까지는 하지 않겠지만, 결국 "나만의 블로그를 만든다"라는 욕구는 충족되지 않았다. 너무 잡다한 주제의 글들이 다 섞여있어서 어디에다가 블로그라고 소개하기도 애매해졌다. 여러 기술적인 실험들도 해보고 싶었지만 이미 내맘대로 고장내기에는 너무 커지기도 했고 아지트 입주민들이 원하는 기능들에 우선순위가 밀리기도 했다. 뭔가를 추가하거나 새로운 구조를 적용해보기에는 프로젝트가 너무 커져서 귀찮은 점도 한몫하고 있다.
한마디로 블로그를 또 한번 갈아엎을 때가 된 것이다. 새로 만드는 블로그는 최대한 얇게, 조금 멋있게 말하자면 유닉스 철학을 본받아보려고 한다.
건조한 철학
건조한 아지트에서 실현하고자 하는 철학 내지는 규칙들을 나열해보면 아래와 같다.
- 처음 보는 사람에게 블로그로 소개할 수 있어야 한다.
내 스스로 생각하기에 부끄럽지 않은, 알찬 글들로 채우고자 한다. 당연히 글을 쓰는 사람은 오직 나뿐이다.
- 구현이 투명해야 한다.
구현이 투명하다 함은 라이브러리나 프레임워크에서 주는 동작을 알 수 없는 기능들을 마구 쓰지 않는다는 말이다. 그러다보면 아마도 수많은 바퀴들을 재발명하게 될 것이다. 혹은 동작을 알기 위해 쓸데없이 많은 공부를 해야 할지도 모른다. 그러나 투명함은 좋은 것이다. 모든 실행흐름을 따라갈 수 있다면 오류가 생기는 지점을 정확히 알아내서 고칠 수 있을 것이다.
- 미리 추상화하지 않는다.
일반적으로 최적화를 미리 하지 않는 것은 미덕이다. 추상화를 미리 하지 않는 것은 미덕인지 어떤지 모른다. 그러나 작게 출발해서 덩치를 키우는 프로젝트라면 성급한 추상화는 개발 속도를 늦출 뿐이다.
추상화를 하지 않는다는 말이 아니다. 추상화가 필요해지는 순간, 즉 같은 코드가 여러번 중복되면서 복사-붙여넣기를 반복하게 될 때 잘 설계한 추상화를 하겠다는 말이다.
실은 추상화가 필요한 부분들이 벌써 생겨나고 있다. 메뉴라든지, 작성 시간이라든지…. 이 추상화들의 설계는 천천히 생각해보기로 하자.
- 설계와 구현을 문서로 정리한다.
특히 구현 전에 설계를 미리 잘 해보고 싶다. 이 글도 건조한 아지트의 첫 설계 문서 같은 글이다.
- 자동화된 테스트를 준비한다.
테스트에 관해서는 자신있게 말하지는 못하겠다. 아직까지도 잘 안 해버릇한 일이다. 최근에 테스트를 열심히 짜는 프로젝트를 거의 처음으로 했었는데 기능 개발하면서 상당히 편했던 기억이 난다. 아직은 어떤식으로 테스트를 만들어야할지 고민이 필요하다. 하지만 꼭 잘 준비하고 싶다.
진짜 유닉스 철학처럼 오직 한가지 일만 잘하는 블로그로 만들겠다는 생각도 해보았지만 역시 기능은 이것저것 붙여보고 싶다. 특히 독자의 반응을 들을 수 있는 창구는 꼭 필요하다. 글들을 시리즈로 묶는 기능도 넣고 싶다. 다만 그 기능들이 모두 하나의 거대한 프로젝트로 관리될 필요는 없다. 기능별로 서버를 여러개 띄우고 어떤 명령들은 스크립트로 구현하게 될 것 같다.
한편 넣지 않을 기능들도 생각해둔 것은 몇가지 있다:
- 에디터
축축한 아지트를 만들 때 상당히 공을 들여서 에디터를 짰지만 결국엔 메모장으로 쓰고 긁어서 올리는 게 가장 확실한 방법이다. 메모장이라고 하긴 했지만 vim 같은 훌륭한 도구를 쓸 수 있다면 그 편이 훨씬 편하기도 하다.
에디터가 있다면 언제어디서든 글을 써서 올릴 수 있다는 장점이 있지만, 건조한 아지트에는 열심히 잘 쓴 글만 올릴 것이기 때문에 웹 에디터의 효용이 크지 않다. 어차피 PC에서 쓸거라면 vim으로 써서 올리면 된다.
- 초안
자동 저장 같은 걸 하고 싶어서 축축한 아지트에는 "초안" 기능을 넣었었다. 비공개로 저장해놓고 야금야금 수정하다가 나중에 공개할 수 있는 기능이다. 그 모든 일은 이제 로컬에 저장하는 식으로 하면 된다.
- 로그인
로그인의 의의는 한 사람의 연속된 행적을 추적할 수 있다는 점이다. 여러 사람이 글을 올릴 수 있는 시스템이라면 그런 추적이 필요하지만 독자 반응 같은 건 연속성이 없더라도 크게 상관없을 것 같다는 생각이다. 축축한 아지트를 구상할 때는 익명성을 두려워했었는데, 어차피 불특정다수에게 공개하는 글이라면 익명의 반응도 반가울 것 같다.
건조한 아지트 설계 1.0
그래서 지금의 아지트는 어떻게 생겼는가 하면, 아주 재미있게도 nginx를 통해 직접 파일로 호스팅되고 있다. 그 어떠한 프로그래밍도 들어가지 않았다. 오직 마크업, 그것도 HTML 뿐이다. 아마 웹사이트로서 가장 얇은 형태는 이것이지 않을까.
그래도 약간의 유용한 정보를 남기자면, 이 사이트의 nginx 설정 파일은 이렇게 생겼다:
server {
server_name dry.freleefty.org;
location / {
root /srv/http/dry;
}
}
server_name
으로 설정한 도메인에다가 root
로 설정한 경로의 파일들을 쏴주겠다는 간단한 이야기다.
아마 이 글을 올리고 곧 https를 지원하게 하느라 설정 내용이 좀 바뀌겠지만 그건 certbot이 해주는 일이니 크게 신경쓸 것 없다.
/srv/http/dry
라는 저 경로에는 그냥 이 사이트의 .html, .css 파일들이 있다.
(.js 파일은 아직 없다!)
이렇게 간단하고 오래된(?) 기술을 쓰는 것은 항상 재미있는 일인 것 같다.
이상 건조한 아지트의 꿈과 현재를 적어보았다. 건조한 아지트가 정말로 단단하게 선 프로젝트가 될지, 아니면 수없이 부서져간 파일럿 프로젝트들 중 하나가 될지는 모른다. 단단하게 설 수 있게 되기를 바란다.
작성: