한 번 만들어놓고 계속 글을 써 올릴 수 있는 웹사이트를 만들려면 글을 감쌀 템플릿을 만들어야 했다. 모든 페이지에 HTML 태그들을 일일히 복붙해서 쓸 수는 없으니까.
어떤 기술을 사용해야 할까?
그래서 그 템플릿을 어떻게 만들지? 나는 일 년 정도를 HTML, CSS, Vanilla Javascript만 아는 채로 보냈고 지난학기 과제를 위해 React, Express.js, MySQL을 써봐서 동적 웹을 겨우 조금 알게 된 상태였다. 그래서 기말프로젝트에서 했던대로 글 내용을 저장하는 데이터베이스와 거기서 데이터를 날라주는 서버만 만들어주면 될 줄 알았다.
며칠 동안 사람들이 자신의 블로그 웹사이트를 어떻게 만드는지 구글링하고 chatGPT와도 이야기를 나눴는데 SSG(Static Site Generator)가 계속해서 언급되었다. 그때는 더 새로운 기술인 동적웹이 무조건 좋은 것인 줄 알았기 때문에 정적웹을 받아들이고 싶지 않았다. 하지만 결국 설득당할 수밖에 없었다. 동적웹이 로딩되기 전에는 그냥 빈 페이지기 때문에 검색이 안된다는 사실을 알게 된 것이 결정적이었다.
내가 꺼림칙했던 부분은 정적웹기술을 쓰면 빌드할 때 모든 HTML을 한번에 다 만들어놓는다는 것이었다. 당시 나에게는 이게 너무 낯설게 느껴졌다. Client Side Rendering을 하면 사용자가 선택한 것만 만들어지는데 당연히 이게 효율적인 거 아닌가? 라고 생각했다. 하지만 컴퓨터 입장에서는 그때그때 자바스크립트를 다운받고 실행해서 페이지 1개를 만드는것보다 마크다운 100개를 HTML 100개로 한꺼번에 바꾸는 것이 더 쉬운 일인가보다. 나보다 잘 아는 사람들이 그렇다니까 그런거겠지 뭐.
Gatsby와 CMS
사람들이 블로그 만드는데 많이 사용하는 서비스에는 이런 것들이 있었다.
- Wordpress는 무료기능이 별로 없고, 테마를 정하고 시작한대서 패스
- 티스토리, Hugo, Gitblog도 테마 때문에 패스
- Jekyl은 루비랑 리퀴드라는 언어를 쓴대서 패스
- Gatsby는 테마를 안 골라도 되고 무료 기능도 많고 React랑도 잘 맞는다고 해서 Gatsby를 써야겠다고 생각했다.
그리고 Wordpress같이 Content Management System이 포함되어 있지 않은 경우에는 글을 작성하는 UI가 없어서 적지 않은 사람들이 Visual Studio Code 같은 텍스트편집기로 블로그에 들어갈 글을 쓰고, 글 하나 올릴 때마다 터미널에 명령해서 Build해야 한다는 것도 문화충격(?) 중 하나였다. 하지만 방법은 다 있다. Headless CMS라는 것도 있고… 그런데 CMS가 콘텐츠를 편집하는 거라면 Obsidian도 CMS잖아?