피드로 돌아가기
Hacker NewsBackend
원문 읽기
Elixir 개발자가 Phoenix + NimblePublisher 조합으로 데이터베이스 없이 마크다운 기반 블로그 구축
Building a Blog with Elixir and Phoenix
AI 요약
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 컨트롤러를 사용하면 데이터베이스 운영 없이도 정적 생성기 대비 더 높은 커스터마이즈 자유도를 얻을 수 있다.