needhelp
← Back to blog

Astro 6.4 딥다이브: 플러거블 마크다운 파이프라인, Rust 기반 Sätteri, Cloudflare 배포 혁명

by needhelp
Astro
Frontend
Rust
Cloudflare
Markdown
SSG
Web Development

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

Share this page