Skip to content

jekyll vs hugo vs hexo

1. 정적 웹사이트 생성기란?

정적 웹 사이트 생성 = 로컬 컴퓨터에서 HTML 파일을 생성한 다음 요청이 있을 때 해당 웹 사이트 파일을 사용자에게 제공하는 서버에 업로드하는 것을 말한다. 이때 서버는 서버 측 처리 또는 데이터베이스 통신을 수행하지 않으며, 요청이 있을 때만 일반 HTML 파일을 보내게 된다. 월드 와이드 웹(World Wide Web, www)의 첫번째 웹사이트는 정적인 웹사이트였다(1991년 08월 06일, Tim Berners-Lee에 의해 라이브로 전환). 당시 서버는 PHP와 같은 스크립트 언어 또는 MySQL과 같은 데이터베이스가 없이 매우 원시적이었기 때문이다.

1-1. 💡 World Wide Web(www, w3)

인터넷에 연결된 컴퓨터를 통해 사람들이 정보를 공유할 수 있는 전 세계적인 정보 공간을 말한다. 인터넷 상의 정보를 하이퍼텍스트 방식과 멀티미디어 환경에서 검색할 수 있게 해주는 정보 검색 시스템으로 하이퍼텍스트 형식으로 표현된 인터넷 상의 다양한 정보를 효과적으로 검색하는 시스템으로 전세계적으로 가장 널리 보급되어 있다. 통일된 웹 자원의 위치 지정 방법(URL), 웹의 자원 이름에 접근하는 프로토콜(HTTP), 자원들 사이를 쉽게 항해할 수 있는 언어(HTML)와 같은 3가지 기능을 가지고 있다.

1-2. 💡 PHP

대표적인 서버 사이드 스크립트 언어로 전 세계 수많은 웹 시스템의 기반이 되는 언어로 비슷한 언어로는 ASP, JSP 등이 있다. C-like 문법으로 되어 있고, CGI보다 나으며, Peri처럼 배열이 연관 배열이라 자료구조가 간편하고, 기본적으로 내장된 웹 관련 함수들이 많아 웹 페이지 제작 시 생산성이 높다는 점에서 사용자 및 사용처가 많다. 동적 웹 페이지를 만들기 위해 설계되었으며 이를 구현하기 위해 PHP로 작성된 코드를 HTML 소스 문서 안에 넣으면 PHP 처리 기능이 있는 웹 서버에서 해당 코드를 인식하여 작성자가 원하는 웹 페이지를 생성한다.

1-3. 💡 MySQL

세계에서 가장 많이 쓰이는 오픈 소스의 관계형 데이터베이스 관리 시스템이다. 다중 스레드, 다중 사용자 형식의 구조질의어 형식의 데이터베이스 관리 시스템으로서 오라클이 관리 및 지원하고 있으며, Qt처럼 이중 라이선스가 적용된다.

2. 정적 접근 방식을 선택하는 이유

  • 컨텐츠가 플랫 파일로 저장되어 데이터베이스가 필요하지 않다.
  • 동적 서버 측 처리가 필요하지 않다.
  • 서버 측 처리나 데이터베이스 접근이 필요 없기에 동적 웹 사이트보다 속도가 매우 빠르다는 장점을 가진다.
  • 악용할 보안 허점이 적기 때문에 동적 웹 사이트보다 보안적 측면에서 더 안전하다.
  • CDN과 함께 사용할 경우 확장성이 뛰어나다
  • 정적 파일을 캐싱하는 것이 동적 페이지를 캐싱하는 것보다 더 효과적이다.

2-1. 💡 플랫 파일(flat file)

아무런 구조적 상호관계가 없는 레코드들이 들어 있는 파일

2-2. 💡 플랫 파일 데이터베이스(flat file database)

하나의 데이터 모델(보통 하나의 테이블)을 플레인 텍스트 파일로 인코딩하는 방법 및 그런 방법을 쓴 일종의 데이터베이스를 총칭한다. csv format database table 이미지 출처: wikipedia CSV 포맷은 플랫 파일 데이터베이스의 일종이라 말할 수 있다.

2-3. 💡 CDN(Content Delivery Network or Content Distribution Network)

콘텐츠 전송 네트워크는 콘텐츠를 효율적으로 전달하기 위해 여러 노드를 가진 네트워크에 데이터를 저장하여 제공하는 시스템을 말한다. 인터넷 서비스 제공자(ISP)에 직접 연결되어 데이터를 전송하므로, 콘텐츠 병목을 피할 수 있는 장점이 있다. CDN의 목적은 높은 사용성과 효율로 사용자에게 컨텐츠를 전달함에 있다. CDN은 웹 요소 (텍스트, 그래픽, 스크립트), 다운로드 가능한 요소 (미디어 파일, 소프트웨어, 문서), 애플리케이션 (전자상거래, 포털), 실시간 미디어, 주문형 스트리밍, 그리고 소셜 네트워크 등 오늘날 인터넷에 존재하는 컨텐츠의 상당수를 서비스하고 있다.

03. Jekyll, Hugo, Hexo에 대해서

  1. Jekyll : Github 페이지에 전원을 공급하기 위해 Github에서 만든 Ruby 생성기로 Ruby 언어로 구축되었으며 Github Pages를 무료로 사용하여 정적 웹사이트를 호스팅하고 CNAME 파일을 사용하여 사용자 지정 최상위 도메인 이름과 쉽게 연결할 수 있다.
  2. Hugo : Go에 내장된 정적 사이트 생성기로 세계에서 가장 빠른 웹사이트 구축 프레임워크로 광고된다. Jeykll과 달리 정적으로 컴파일된 언어인 Go로 작성되어 있으며 Hugo를 몇 초만에 설치하고 평균 정적 웹 사이트를 1초 이내에 구축할 수 있다. YAML, Front Matter와 함께 Markdown 형식을 사용한다.
  3. Hexo : MIT 라이센스에 따라 사용할 수 있는 노드 기반의 오픈 소스 정적 생성기이다. Node.js 플랫폼 덕분에 Hexo는 수백 개의 정적 파일을 몇 초 만에 생성할 수 있다.
종류장점단점
Jekyll1. 무료 오픈 소스이다 2. gems를 통해 쉽게 제작하고 RubyGems를 통해 배포 가능하다 3. Jekyll 수입업체 덕분에 인기 있는 플랫폼(ex. WordPress)에서 컨텐츠를 쉽게 마이그레이션 가능하다 4. 기본적이고 적절한 최소 테마가 제공된다1. 웹 사이트 콘텐츠가 증가할수록 빌드 프로세스는 상당히 느려짐 2. 제목 또는 YAML에서 변수 사용을 지원하지 않는다 3. 많은 플러그인이 구식이다. 4. gem 의존성은 비호환성을 초래할 수 있다 5. GitHub Pages는 즉시 Jekyll을 지원하지만 GitHub-safe 플러그인 세트만 사용 가능하다 6. Livereload에 대한 기본 제공 지원이 없다
Hugo1. 오픈 소스 및 무료 프로젝트이다 2. 매우 빠른 속도를 자랑하며, 속도에 최적화되어 있다 3. 동적 API 기반 콘텐츠를 기본적으로 지원한다 4. 짧은 코드 덕분에, markdown에 대한 유연한 대안을 제공한다 5. 다중 및 사용자 지정 출력을 지원한다 6. 설치가 쉽고 의존성이 없다1. Go 템플릿을 사용하기 때문에 테마를 만들려면 Go에 익숙해야 한다 2. 확장성 및 플러그인에 몇 가지 단점이 있다
Hexo1. 속도가 엄청나게 빠르다 2. 하나의 배포 명령으로 GitHub 페이지 또는 다른 호스트에 배포한다 3. 확장성이 매우 높고 markdown을 지원한다 4. 무료 및 오픈 소스 테마를 사용할 수 있다1. 비교적 큰 커뮤니티를 가지고 있지만 대다수가 영어가 아닌 사람들로 정보를 얻는데 불편함을 겪을 수 있다.

4. 참고 자료