Astro 6.4 딥다이브: 플러거블 마크다운 파이프라인, Rust 기반 Sätteri, Cloudflare 배포 혁명
2026년 5월 28일, Astro가 6.4를 출시했다. 일상적인 기능 업데이트도, 단순한 버그픽 모음도 아니다 — 구조적 변곡점이다.
세 가지 핵심 변화, 각각 깊은 트렌드 라인을 따라간다:
- 마크다운 프로세서 인터페이스 — unified의 10년 독점 종말
- Sätteri — 처음부터 만든 Rust 마크다운/MDX 프로세서, CI 빌드 시간 120초에서 55초로 단축
- cf() 헬퍼 — 6개 이상의 Cloudflare 바인딩과 컨텍스트 주입을 한 줄로 압축
프로세싱이 인터페이스로
역사적 배경
처음부터 Astro의 마크다운 파이프라인은 unified 생태계에 하드코딩되어 있었다 — 특히 remark(마크다운 AST 파싱) + rehype(HTML AST 변환)와 수천 개의 플러그인. 그것 자체로 문제는 아니다 — unified는 방대하고 유연하다. 문제는 하드코딩이라는 점이다.
교체할 수 없다. GFM과 헤딩 앵커만 필요해도 전체 remark → rehype → stringify JS 파이프라인이 end-to-end로 실행된다.
6.4의 markdown.processor API는 이를 고정 의존성에서 교체 가능한 인터페이스로 바꾼다.
아키텍처 변경
graph TD
subgraph "6.4 이전: 하드코딩 파이프라인"
A1[astro.config] -->|고정| B1[Unified 엔진]
B1 --> C1[remarkPlugins]
B1 --> D1[rehypePlugins]
C1 --> E1[마크다운 AST]
D1 --> E1
end
subgraph "6.4+: 플러거블 파이프라인"
A2[astro.config] -->|markdown.processor| B2[프로세서 인터페이스]
B2 --> C2[Unified
기본 프로세서]
B2 --> D2[Sätteri
Rust 프로세서]
B2 --> E2[커스텀 엔진]
C2 --> F2[JS 플러그인 생태계]
D2 --> G2[네이티브 Rust 파이프라인]
E2 --> H2[사용자 정의 AST]
end
style A1 fill:#ffcccc
style A2 fill:#ccffcc
style B2 fill:#e1f5fe
핵심 변경: astro.config가 더 이상 최상위 remarkPlugins / rehypePlugins를 직접 받지 않는다. 대신 통합된 processor() 호출이 있다.
새 설정 문법
// ✅ Astro 6.4+ 권장import { defineConfig } from 'astro/config';import { unified } from '@astrojs/markdown-remark';import remarkToc from 'remark-toc';import rehypeSlug from 'rehype-slug';
export default defineConfig({ markdown: { processor: unified({ remarkPlugins: [remarkToc], rehypePlugins: [rehypeSlug], smartypants: true, gfm: true, }), },});지원 중단 일정
6.4에서 8.0까지의 기간은 약 12-18개월이다. 늦게 마이그레이션할수록 업그레이드가 더 고통스럽다.
Sätteri: Rust가 마크다운 파이프라인에 진입
무엇인가
@astrojs/markdown-sätteri는 처음부터 다시 작성한 Rust 마크다운/MDX 프로세서다. unified의 Rust 가속 버전이 아니다 — 자체 AST 사양, 자체 파서, 자체 직렬화기를 가진다. 즉, remark 플러그인을 더 빠르게 실행하는 것이 아니라 아예 실행하지 않는다.
성능 벤치마크
| 사이트 | Unified (기준) | Sätteri | 속도 향상 |
|---|---|---|---|
| Astro 문서 사이트 | 142초 | 63초 | 2.25× |
| Cloudflare 문서 사이트 | 120초 | 55초 | 2.18× |
| 중간 규모 마케팅 사이트 | 38초 | 22초 | 1.73× |
호환성이 문제
Sätteri는 remark/rehype 플러그인과 호환되지 않는다. 이는 버그가 아니라 Rust AST 파이프라인의 아키텍처적 필요성이다.
Astro 6.4의 로드맵은 Sätteri가 향후 메이저 버전에서 기본 프로세서가 될 것이라고 명시한다.
Cloudflare 배포: 6개 바인딩을 하나로 압축
cf() 추상화
cf(state, env, ctx)는 6개 바인딩을 단일 호출로 압축한다:
// ✅ Astro 6.4+import { defineConfig } from 'astro/config';import cloudflare from '@astrojs/cloudflare';
export default defineConfig({ output: 'server', adapter: cloudflare({ advancedRouting: { cf: true, }, }),});advancedRouting.cf: true는 모든 바인딩을 자동 주입한다. 수동 컨텍스트 연결이 필요 없다.
안전한 업그레이드 경로
체크리스트
| 확인 항목 | Unified 경로 | Sätteri 경로 |
|---|---|---|
| 빌드 시간 | 기준 | ~50% 더 빠름 |
remarkPlugins |
✅ 작동 | ❌ 포팅 필요 |
rehypePlugins |
✅ 작동 | ❌ 포팅 필요 |
gfm |
✅ 플러그인 | ✅ 네이티브 |
smartypants |
✅ 플러그인 | ✅ 네이티브 |
directive 문법 |
❌ 플러그인 필요 | ✅ 네이티브 |
이스케이프 해치: 혼합 사용
export default defineConfig({ markdown: { processor: unified(), contentCollections: { docs: { processor: sätteri() }, blog: { processor: unified() }, }, },});References
- Astro 6.4 Release Blog
- Native Markdown / MDX RFC
@astrojs/markdown-sätterinpm package@astrojs/cloudflareadapter docs- Hono + Astro Integration Example