Astro로 블로그를 만든 이유
Next.js, Gatsby 대신 Astro를 선택한 기술적 근거와 개발 경험을 공유합니다.
왜 또 블로그를 만드는가
개발자에게 블로그는 학습을 구조화하는 가장 효과적인 도구입니다. 글로 정리하는 과정에서 막연했던 이해가 명확한 지식으로 변환됩니다.
프레임워크 비교
| 기준 | Next.js | Gatsby | Astro |
|---|---|---|---|
| 번들 크기 | 큼 (React 포함) | 큼 (React + GraphQL) | 제로 JS 기본 |
| 빌드 속도 | 보통 | 느림 | 빠름 |
| 학습 곡선 | 중간 | 높음 | 낮음 |
| 콘텐츠 중심 | △ | ○ | ◎ |
| Islands Architecture | ✕ | ✕ | ✓ |
Astro의 결정적 장점
1. Zero JavaScript by Default
Astro는 기본적으로 클라이언트 사이드 JavaScript를 전송하지 않습니다. 블로그처럼 대부분 정적 콘텐츠인 사이트에서 이는 엄청난 성능 이점입니다.
---
// 이 코드는 빌드 타임에 실행됩니다
// 클라이언트로 전송되는 JS는 0바이트
const posts = await getCollection('blog');
---
<ul>
{posts.map(post => <li>{post.data.title}</li>)}
</ul>
2. Content Collections
타입 안전한 콘텐츠 관리 시스템이 프레임워크에 내장되어 있습니다:
// content.config.ts
const blog = defineCollection({
schema: z.object({
title: z.string(),
pubDate: z.coerce.date(),
tags: z.array(z.string()),
}),
});
Zod 스키마로 frontmatter를 검증하기 때문에, 잘못된 메타데이터로 인한 빌드 에러를 컴파일 타임에 잡아낼 수 있습니다.
3. View Transitions 내장
ClientRouter 컴포넌트 하나로 SPA 같은 페이지 전환 효과를 얻을 수 있습니다. 별도의 라우터 라이브러리 없이도 네이티브 앱 수준의 사용자 경험을 제공합니다.
기술 스택 정리
- 프레임워크: Astro 5.x
- 언어: TypeScript (strict 모드)
- 스타일링: Vanilla CSS (디자인 토큰 기반)
- 콘텐츠: MDX (Content Collections)
- 배포: Vercel / Cloudflare Pages
마무리
기술 선택에 정답은 없지만, 문제에 맞는 도구를 고르는 것이 엔지니어링의 핵심입니다. 블로그라는 콘텐츠 중심 사이트에 Astro는 최적의 선택이었습니다.