Jekyll에서 Hugo로, MakeBlogGreatAgain

8년 동안 써오던 Jekyll의 watch 기능이 너무 느려지고 —글은 텍스트 에디터로 쓰지만 결과물은 웹 브라우저에서 곧바로 보고 싶다— 글마다 포함하는 사진 파일 관리가 복잡해져 Hugo로 바꾸게 되었다.

라이브 리로드

Jekyll에서는 라이브 리로드를 위해 jekyll-livereload 플러그인을 이용했었다. Hugo는 처음 시도해 볼 때부터 내장 서버가 라이브 리로드를 지원하고, 파일을 메모리에서 서빙하기 때문에 스토리지 I/O가 없고 정말 빠르다.

* Jekyll 3.7에서 라이브 리로드 기능을 내장했다.

페이지 번들

Hugo의 페이지 번들 기능은 하나의 글과 그 글에 첨부된 사진들을 디렉터리로 묶어 관리할 수 있다. Jekyll에서는 글과 별도의 경로에 사진을 관리하고 참조하기 위한 URL도 복잡하게 되었다.

Pretty URL

Hugo로 옮기면서 URL 스킴을 변경했다.

https://www.euler.kr/trl/2018/10/12/move-to-hugo.html (1)
https://www.euler.kr/trl/2018/10/12/move-to-hugo/     (2)

Hugo에서는 내가 기존에 사용하던 (1) 형식을 Ugly URL이라 부르고, (2) 형식을 Pretty URL이라 부른다. 왠지 ugly 해지는 기분이라 바꾸게 되었다. 😎

AWS Lambda@Edge로 URL 리다이렉션

한번 인터넷에 공개된 글이면 링크가 깨지지 않도록 해야 한다. Pretty URL로 바뀌면서 기존의 URL로 연결되는 요청은 Lambda@Edge 함수를 통해 새 규칙으로 리다이렉션했다.

origin-request 트리거를 사용해, 리다이렉션이 필요한 URL이면 새 규칙을 적용한 URL을 301(Moved Permanently) 응답을 생성해 내려보내고, 나머지는 오리진 서버로 요청을 올려보내는 함수를 추가했다. origin-request에서 생성된 응답은 CloudFront에 캐쉬된다.

이제,

불만이었던 속도는 해결되고, Textile로 썼던 글은 죄다 Markdown으로 바꿨다. 테마와 컨텐츠도 깨끗하게 분리했다. 글을 쓰자.