web
ssg

2024-08-08

SSG(Static Site Generator, 정적 사이트 생성기)는 HTML을 정해진 템플릿에 맞춰 찍어내는 도구이다.

SSG의 특징

  • Performance: 빠르다
  • Security: 공격할 백엔드가 없다
  • Scalability: 내용많아도 상관없음
  • Customization: 템플릿언어와 프레임워크를 마음대로 사용할 수 있다.

SSG들의 빌드 속도가 차이나는 이유

  • 대체적으로 기능이 적으면 빠르다. 빌드 과정이 단순하기 때문이다.
  • 템플릿 만들때 React같은 다른거 사용하면 더 느려진다.
  • 간단한 데이터구조 사용하면 GraphQL같은 복잡한 구조 사용하는것보다 빠르다
  • 어떤 SSG는 속도 줄이기 위한 방법을 사용한다(ex.Astro의 partial hydration)

로딩 속도는 HTML만 있으면 다 똑같을거고 이미지나 폰트같이 따로 로드해야 하는 게 있으면 느려지겠지… 이것도 최적화하는 방식이 SSG들마다 제각기 다른 것 같다.

SSG 후보와 최종 결정

chatGPT한테 내 조건(Obsidian → ___ → Vercel, React 사용 예정)에 적합한 SSG를 추천해달라고 하니 다음을 추천해 주었다.

EleventyAstroHugoNext.js
Pros단순하다React와 합칠
수 있다
기능이 많다기능이 많다,
React
프레임워크라서
동적컨텐츠 많이
다룰 수 있다,
vercel과 같은
회사
Cons복잡한 SSG
기능이 없다
Eleventy
보다 복잡하다
Go 배워야됨더 복잡하고
더 느리다
Markdown

HTML
곧바로.interactive
한 컴포넌트와
함께 configure
가능.
많은 옵션.next-mdx같은
플러그인 사용

고려한 것

  • 쉬운가
    • Hugo는 새로운 언어 Go를 배워야 하는 것 같아서 패스
    • Next.js는 내 프로젝트에 비해 좀 거대한 느낌? (아는게 없어서 항상 ‘느낌’이 선택에 엄청난 영향을 미친다)
  • 템플릿만들때 React를 쓸 수 있는가
    • Eleventy는 React 지원하지 않아서 패스.
    • Eleventy에서 React 쓸수는 있는데 추가적인 setup이 필요해 Eleventy의 장점인 단순함이 사라져서 굳이?인듯.
  • Markdown파일이 변경될 때마다 자동으로 웹사이트에 반영되는가
    • 다 됨
  • 최종적으로 Astro를 선택했다.