피드로 돌아가기
Building a Blog with Elixir and Phoenix
Hacker NewsHacker News
Backend

Elixir 개발자가 Phoenix + NimblePublisher 조합으로 데이터베이스 없이 마크다운 기반 블로그 구축

Building a Blog with Elixir and Phoenix

2026년 3월 26일10intermediate

Context

기존 정적 사이트 생성기(Hakyll)는 블로그 기능에만 최적화되어 있어, 인터랙티브한 실험을 추가하려면 제약이 발생했다. 또한 타인의 도구 사용 시 예상 범위를 벗어나는 커스터마이징이 어려운 문제가 있었다.

Technical Solution

  • Phoenix 프레임워크로 서버사이드 렌더링 방식 채택: LiveView 대신 전통적인 DeadViews 사용으로 단순성 확보
  • NimblePublisher로 마크다운 파일을 컴파일 타임에 모듈 속성으로 변환: priv/posts/YYYY/MM-DD-title.md 디렉터리 구조에서 모든 포스트를 빌드 시점에 파싱 및 프리컴파일
  • Earmark 마크다운 변환기에 Tailwind CSS 클래스를 태그별로 자동 주입: Earmark.TagSpecificProcessors를 사용해 h1, h2, p, blockquote 등 HTML 요소에 스타일 클래스 병합
  • Makeup 라이브러리로 코드 블록 문법 강조 구현: Elixir 코드 하이라이팅 지원
  • 데이터베이스 및 ORM(Ecto) 제거: 순수 HTML 서버사이드 렌더링 방식으로 런타임 의존성 최소화
  • GitHub Actions CI 파이프라인 구성: mix compile --warnings-as-errors, mix format --check-formatted, mix credo --strict, mix test 실행
  • 다단계 Docker 빌드 파일로 컨테이너화: Phoenix 권장 예제 기반 Dockerfile 구성
  • SEO 메타 태그 중앙 관리: 레이아웃의 단일 위치에서 og:type, article:published_time, article:author, article:tag 메타 태그 제어
  • llms.txt 및 llms-full.txt 엔드포인트 추가: AI 시스템 크롤링 지원 표준 구현

Impact

PageSpeed Insights에서 측정 가능한 빠른 속도 기록 달성(구체적 수치는 명시되지 않음).

Key Takeaway

Phoenix와 NimblePublisher 조합은 데이터베이스 없이도 고성능 블로그를 구축할 수 있는 강력한 프레임워크이며, 컴파일 타임 전처리를 통해 런타임 오버헤드를 완전히 제거할 수 있다.


Elixir 개발자가 개인 블로그나 마크다운 기반 콘텐츠 사이트를 구축할 때, NimblePublisher로 컴파일 타임에 모든 포스트를 프리컴파일하고 서버사이드 렌더링 Phoenix 컨트롤러를 사용하면 데이터베이스 운영 없이도 정적 생성기 대비 더 높은 커스터마이즈 자유도를 얻을 수 있다.

원문 읽기