기존에 사용했던 지킬(Jekyll)은 다소 생소한 언어인 루비(Ruby)로 구현되어 있어 개인적으로 설치와 커스터마이징, 유지보수에 어려움이 있었다. 그렇다보니 글쓰기에만 집중할 수 블로그 플랫폼을 찾아보기 시작했고, 여러 좋은 서비스들이 많이 있었지만 전통?의 블로거(Blogger)를 선택하였다. 실제로 블로거를 이용하여 새 블로그를 만들었으나 직후에 포기하고 다시 정적 사이트 생성기(SSG: Static Site Generator)를 이용하여 기존 블로그를 살려보기로 결정하였다.
2편의 말미에 언급했듯이 다시 지킬을 쓰고 싶지 않았다. 지금은 당시에 비해 대안이 많기 때문에 하나하나 둘러보기 시작했고 결국, 휴고(Hugo)에 마음이 갔다. 개츠비(Gatsby), 헥소(Hexo)와 같은 유명한 도구들이 있었지만 휴고는 고(Go) 언어로 구현되어 그 자체로 하나의 완전한 바이너리(Binary)라는 점이었다. 지킬을 포함해 루비, 노드(NodeJS)로 구현된 도구들은 RubyGems, NPM과 같은 별도의 패키지 관리자(Package Manager)를 사용해야 한다. 나만 그런지 모르겠으나 뭔가를 사용하기 위해 더 많은 패키지들이 설치되고 관리하여야 하는 부담은 사양이다. 그럼에도 불구하고 개츠비는 가장 강력한 기능을 갖고 있는 것처럼 보여 잠깐 혹했으나 리액트(React), 그래프QL(GraphQL)도 잘 알아야 할 것 같아서 패스.개인 블로그에 강력한 기능은 필요가 없다.
정적 사이트 생성기, 휴고(Hugo) ¶
휴고는
휴고는 빠르다. ¶
휴고는 앞서 언급했듯이 고(Go) 언어로 구현되어 있다. 런타임(Runtime)이 필요하지 않은, 그 자체로 하나의 바이너리이기 때문에 확실히 빠르다. 휴고의 웹 사이트에서도 “The world’s fastest framework for building websites"라는 수식언으로 광고하고 있다. 결과물을 잘 내기만 하면 되는 거지 빠른 게 무슨 의미가 있을까 싶지만, 기존에 지킬을 써본 경험과 비교하면 월등히 빠르다. 실제 인터넷에 널린 벤치마크(Benchmark)를 봐도 10,000페이지가 넘어가는 웹사이트 기준으로 휴고가 월등히 빠른 것을 알 수 있다.
휴고는 깔끔하고, 쉽다. ¶
여러 번 얘기하지만 휴고는 고(Go) 언어로 구현되어 있다. 물론, 휴고를 사용하기 위해서 고(Go) 언어를 알아야 하는 것은 아니다. 얘기하고 싶은 것은 인터프리터(Interpreter)가 필요하지 않다는 것, 즉 휴고 그 자체로 완전한 프로그램이라 별도의 패키지 매니저를 동반하는 다른 도구들에 비해 설치과정이나 유지보수가 간편하다는 점이다. 예를 들어, 우분투(Ubuntu) 기준으로 지킬은 다음과 같이 설치한다.
# Install Ruby dependencies
$ sudo apt-get install ruby-full build-essential zlib1g-dev
# Install Ruby Gems package manager
$ echo '# Install Ruby Gems to ~/gems' >> ~/.bashrc
$ echo 'export GEM_HOME="$HOME/gems"' >> ~/.bashrc
$ echo 'export PATH="$HOME/gems/bin:$PATH"' >> ~/.bashrc
$ source ~/.bashrc
# Install Jekyll and Bundler
$ gem install jekyll bundler
# Create a new site "my-awesome-site"
$ jekyll new my-awesome-site
$ cd my-awesome-site
# Serve the site on "http://localhost:4000"
$ bundle exec jekyll serve
루비는 인터프리터와 별도의 패키지 관리자가 제공되는 언어이다. 따라서 지킬을 사용하려면 루비와 RubyGems를 사전에 설치해야 한다. 심지어 추후에 루비를 업그레이드하려면 별도로 검색하여 적절한 방법을 찾아야 하고 이 과정에서 문제가 발생할 여지도 있다. 반면, 휴고는 아래와 같이 설치한다.
# Install HomeBrew
$ test -d ~/.linuxbrew && eval "$(~/.linuxbrew/bin/brew shellenv)"
$ test -d /home/linuxbrew/.linuxbrew && eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"
$ test -r ~/.bash_profile && echo "eval \"\$($(brew --prefix)/bin/brew shellenv)\"" >> ~/.bash_profile
$ echo "eval \"\$($(brew --prefix)/bin/brew shellenv)\"" >> ~/.profile
# Install Hugo
brew install hugo
# Create a new site "quickstart"
hugo new site quickstart
# Serve the site on "http://localhost:1313"
hugo server -D
홈브루(HomeBrew)를 통해서 휴고를 설치한다. 홈브루는 일종의 패키지 관리자인데 휴고를 제공하는 패키지 관리자일 뿐이다. 즉, 휴고가 고(Go) 언어로 구현되어 있어서 홈브루를 설치하는 것은 아니므로 RubyGems와는 비교될 수 없다. 오히려 구글의 플레이스토어(PlayStore), 애플의 앱스토어(AppStore)와 같은 역할이라고 볼 수 있겠다. 따라서, 홈브루가 휴고를 쓰는데 필수적인 역할을 하는 것은 아니므로 아래 링크에서 직접 휴고를 다운받아 사용할 수도 있다.
마치며 ¶
휴고는 빠르고 설치가 쉽다. 이것은 다른 도구들에 비해서 월등한 장점이라고 생각한다. 하지만 결정적으로는 사용할 때 편해야 좋은 도구이다. 비록 지킬을 제외한 다른 도구들을 써보진 않았지만 현 블로그를 구축하면서 써 본 입장에서, 매우 추천할 만한 도구라는 평가를 내리고 싶다. 이후에는 이런 후한 평가를 내리게 된 배경에 대해서 포스팅하고자 한다.