블로깅 시스템을 처음부터 끝까지 구현했습니다.

Jekyll with SPA?

프론트엔드의 발전에 힘입어 데이터베이스 없이 스태틱 페이지만으로 블로깅을 할 수 있는 툴들이 등장했습니다. Github Pages에서 사용하는 Jekyll이 대표적입니다. 본래 워드프레스로 블로깅을 하다가 추세를 따라서 툴을 바꾸려 생각하고 있었는데, 여기서 하나 더 고려한 것이 Single Page App(SPA)입니다.

그러나 Jekyll은 Markdown 문서들을 html로 변환해서 링크로 연결할 뿐 SPA를 구현하기에는 적합하지 않았습니다.

그래서, 그냥 만들어버렸습니다.

Requirements

Jekyll처럼 범용적으로 쓸 수 있는 툴을 만든 것은 아니고, 다음과 같은 요구사항을 만족하도록 웹 애플리케이션을 구현했습니다.

  • SPA. 페이지를 이동할 때 브라우저의 로딩이 없어야 함.
  • Markdown으로 글을 작성할 수 있어야 함.
  • HTML, Javascript, CSS만으로 동작해야 함(DBMS 없음).

위 세 가지가 꼭 만족해야 하는 요구사항들입니다.

개발스택은 아래와 같습니다.

  • Web server: golang으로 직접 구현.
  • Frontend: VueJS.
  • CI/CD: git hook을 사용해서 자동으로 배포.

현재 시스템은 다음과 같이 구현되어 있습니다.

개발 환경에서 커밋을 하면 AWS EC2와 S3에 자동으로 배포합니다. 용량이 큰 리소스들은 CDN으로 설정한 S3 bucket에 올립니다. 이 버킷은 오로지 myeongjae.kim에서 온 요청에만 응답합니다.

개발 과정은 여기에서 볼 수 있습니다.

SPA는 검색엔진이 페이지를 긁어가기 힘들다는 단점이 있는데, prerender-spa-plugin를 사용해서 보완할 수 있습니다.

10월 초에 광일공방에서 자신만의 블로깅 시스템을 만드는 프로젝트를 진행하려고 합니다.

References