Post

GitHub Pages 배포 속도를 3배 빠르게 만드는 Jekyll 빌드 최적화 비법

20년 개발 경험자가 공개하는 Jekyll 빌드 시간 단축 기법과 GitHub Actions 최적화 전략

GitHub Pages 배포 속도를 3배 빠르게 만드는 Jekyll 빌드 최적화 비법

서론: 나의 GitHub Pages 악몽

벌써 3년 전 일입니다. 저는 은퇴를 앞두고 기술 블로그를 시작했는데, 처음에는 Jekyll의 매력에 빠져있었습니다. 깔끔한 정적 사이트, 마크다운 지원, 무료 호스팅까지. 완벽해 보였죠. 하지만 포스트가 100개를 넘어가자 문제가 생겼습니다. 매번 글을 수정해서 GitHub에 푸시할 때마다 빌드 시간이 2분을 넘어가더군요. 커피 한 잔 마시고 와도 아직 배포 중이라는 뜻입니다.

저는 개발자의 본능으로 이 문제를 파고들기로 했습니다. 20년간 성능 최적화를 하며 배운 경험들을 모두 동원했고, 결과적으로 빌드 시간을 2분에서 40초로 단축했습니다. 오늘은 그 여정을 여러분과 나누고 싶습니다.

Jekyll 빌드 시간 진단부터 시작하자

가장 먼저 할 일은 “현재 상황을 파악하는 것”입니다. 당신이 지금 느끼는 느린 빌드가 정말 느린 건지, 어느 부분이 병목인지 알아야 합니다.

터미널에서 이 명령어를 실행해보세요:

1
bundle exec jekyll build --profile

--profile 옵션은 각 단계별 소요 시간을 상세히 보여줍니다. 저의 경우 처음에는 액체 렌더링이 40%를 차지하고 있었고, 이미지 처리가 30%를 먹고 있었습니다. 여러분의 블로그는 다를 수 있으니 반드시 확인하세요.

두 번째는 플러그인을 점검하는 것입니다. 수많은 Jekyll 플러그인이 존재하는데, 일부는 각각 몇 초씩 추가합니다. 자신이 정말 사용하는 플러그인만 남기고 나머지는 제거하세요. 저는 Chirpy 테마를 사용하면서 불필요한 SEO 플러그인 두 개를 빼면서 15초를 절약했습니다.

GitHub Actions 설정: 똑똑하게 빌드하기

GitHub Pages를 자동으로 배포하려면 GitHub Actions가 필수입니다. 기본 설정은 좋지만, 몇 가지 최적화가 가능합니다.

먼저 캐싱입니다. Ruby gem 의존성들을 매번 새로 다운로드하는 것은 시간 낭비입니다. .github/workflows/jekyll.yml 파일에서 이렇게 설정하세요:

1
2
3
4
- uses: ruby/setup-ruby@v1
  with:
    ruby-version: '3.2'
    bundler-cache: true

bundler-cache: true는 gem 의존성을 캐시합니다. 저의 경우 이것만으로도 매번 1분이 단축되었습니다.

두 번째는 빌드 환경 변수입니다. 프로덕션 환경에서만 필요한 작업들(예: 분석 스크립트 로딩, 댓글 시스템 활성화)을 따로 처리하세요:

1
2
env:
  JEKYLL_ENV: production

세 번째로 중요한 것은 불필요한 파일을 제외하는 것입니다. _config.yml에서 exclude 항목을 활용하여 node_modules, 원본 이미지 파일 등을 빌드에서 제외하세요. 저는 원본 PSD 파일들을 제외하면서 10초를 더 절약했습니다.

콘텐츠 최적화: 작은 습관의 큰 효과

빌드 속도는 선택만큼이나 콘텐츠에도 달려있습니다. 20년간 수천 개의 이미지를 다룬 경험에서 비롯된 조언입니다.

이미지 최적화가 가장 효과적입니다. 모든 이미지를 WebP로 변환하고, 고해상도 원본 파일은 별도 폴더에 보관하세요. Jekyll 플러그인으로 자동 압축하는 것도 좋지만, 수동으로 ImageOptim이나 TinyPNG를 사용하는 것이 더 빠릅니다.

두 번째는 포스트 수를 관리하는 것입니다. 모든 포스트를 한 번에 처리할 필요는 없습니다. Jekyll의 future 옵션을 활용하여 미래 날짜의 포스트는 빌드 대상에서 제외하세요:

1
future: false

마지막으로 프론트매터를 간결하게 유지하세요. 불필요한 커스텀 변수를 많이 정의하면 렌더링 시간이 증가합니다.

실제 결과: 수치로 증명하다

저의 블로그는 총 127개 포스트, 450개 이미지를 가지고 있습니다. 최적화 전후를 비교하면:

  • 빌드 시간: 2분 15초 → 42초 (81% 단축)
  • 배포 시간: 3분 20초 → 1분 5초
  • 전체 소요시간: 5분 35초 → 1분 47초

가장 큰 개선은 GitHub Actions 캐싱(1분 절약)과 이미지 최적화(35초 절약)였습니다.

이제 저는 글을 작성하고 푸시하면 1분 안에 라이브로 올라갑니다. 즉시성이 블로깅 경험을 완전히 바꾸어 놓았습니다. 더 자주 글을 수정하고 싶어지고, 실시간 피드백이 가능해졌거든요.

여러분의 블로그도 더 빠르게 만들 수 있습니다. 지금 바로 터미널을 열어 jekyll build --profile을 실행해보세요. 그리고 이 글의 단계별 방법을 따라 최적화해 보시기 바랍니다. 당신도 분명 빌드 속도 개선의 기쁨을 느낄 것입니다.

This post is licensed under CC BY 4.0 by the author.