LabHub

블로그

헤드리스 CMS 2026 — Sanity / Contentful / Strapi 5 / Payload (Figma 인수) / Directus / Keystatic / Storyblok 심층 비교

한국어English日本語

프롤로그 — "콘텐츠는 어디에 살아야 하는가"

2026년 한 마케팅 PM이 한 말.

"우리는 Next.js로 새로 만들고 있어요. 콘텐츠 모델은 누가 잡지요? 마케터가 직접 텍스트랑 이미지를 바꿀 수 있어야 하고, 다국어도 돼야 하고, 빌더로 페이지 조립도 하고 싶고, 그런데 개발자가 MDX로도 쓸 수 있으면 좋겠어요."

이게 2026년의 평범한 요구사항이다. "CMS 하나 깔자"가 더 이상 정답이 아니다. 에디터 UX, 데이터 모델, API 형태, 배포 모델, 가격, 락인 이 다섯 축의 매트릭스에서 우리 팀의 위치를 찾아야 한다.

이 글은 2026년 5월 현재 헤드리스 CMS 시장 전체를 한 장에 펼치고, 각 CMS의 강점·약점·지난 12개월 변화를 짚는다. Strapi 5의 Document Service(2024.9), Payload의 Figma 인수(2024.9)에 따른 오픈소스 커뮤니티 논란, Hygraph로 개명된 GraphCMS의 현재까지 — 결정을 미루지 말고 한 번 정리하자.


1장 · 2026년 헤드리스 CMS 지도 — 네 부족

먼저 시장 전체를 네 부족으로 자른다. 한 CMS가 두 부족에 걸치는 경우도 있지만, 주된 운영 모델로 분류한다.

부족정의대표
SaaS 호스티드회사가 호스팅, API만 제공, 월 구독Sanity, Contentful, Storyblok, Hygraph, Prismic, Dato, ButterCMS, Cosmic, Hashnode, microCMS, Newt
오픈소스 셀프호스트본인 서버에 배포, DB 직접 운영Strapi 5, Payload, Directus, KeystoneJS, Ghost, WordPress, Statamic
Git 기반콘텐츠를 Git 저장소에 commit, 빌드 타임 처리Keystatic, Outstatic, decap CMS(구 Netlify CMS), Contentlayer/MDX
비주얼·페이지 빌더마케터가 드래그로 페이지 자체를 만든다Builder.io, Storyblok(비주얼 측면), Webflow, Notion

이 분류가 중요한 이유는, 에디터 UX·운영 책임·락인 정도가 부족마다 다르기 때문이다.

축으로 정리하면 이렇다.

SaaS오픈소스Git 기반비주얼
마케터 UX최고보통낮음최고
개발자 자유도보통높음매우 높음낮음
락인 위험작음거의 없음
운영 부담없음거의 없음없음
가격사용량 비례인프라 비용거의 무료사용량 비례

이제 부족별로 들어간다.


2장 · Sanity — 리얼타임의 표준

Sanity는 2017년 노르웨이에서 시작했고, 2026년 헤드리스 CMS 시장에서 개발자가 가장 좋아하는 SaaS의 자리를 점점 굳히고 있다.

핵심 특징

// schemaTypes/post.ts — Sanity Studio 스키마
import { defineField, defineType } from 'sanity'

export const post = defineType({
  name: 'post',
  type: 'document',
  fields: [
    defineField({ name: 'title', type: 'string', validation: (r) => r.required() }),
    defineField({ name: 'slug', type: 'slug', options: { source: 'title' } }),
    defineField({ name: 'body', type: 'array', of: [{ type: 'block' }] }),
    defineField({
      name: 'author',
      type: 'reference',
      to: [{ type: 'author' }],
    }),
  ],
})

GROQ 쿼리는 이렇게 생겼다.

// Next.js에서 글 목록 가져오기
import { createClient } from '@sanity/client'

const client = createClient({
  projectId: 'abc',
  dataset: 'production',
  apiVersion: '2026-05-16',
  useCdn: true,
})

const posts = await client.fetch(`
  *[_type == "post" && defined(slug.current)]
  | order(publishedAt desc)[0...10]{
    title, "slug": slug.current, publishedAt,
    author->{name, avatar}
  }
`)

2026년의 변화

강점과 약점

강점약점
리얼타임 협업 UXGROQ 학습 곡선
스키마-as-code (Git 추적)자유도가 너무 높아 초기 구조화에 시간이 듦
이미지 CDN·변환 내장가격이 사용량 따라 빠르게 오름
강력한 referencing마이그레이션은 직접 짜야 함

누가 골라야 하나


3장 · Contentful — 엔터프라이즈의 기본값

Contentful은 2013년 베를린에서 시작했고, 2026년에도 여전히 엔터프라이즈 헤드리스 CMS의 기본값이다. 큰 기업이 RFP를 돌리면 거의 항상 들어간다.

핵심 특징

// Contentful GraphQL 쿼리
const query = `
  query {
    postCollection(limit: 10, order: publishDate_DESC) {
      items {
        title
        slug
        publishDate
        author { name }
      }
    }
  }
`

const res = await fetch(
  `https://graphql.contentful.com/content/v1/spaces/${process.env.CONTENTFUL_SPACE_ID}/environments/master`,
  {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      Authorization: `Bearer ${process.env.CONTENTFUL_TOKEN}`,
    },
    body: JSON.stringify({ query }),
  },
)

강점과 약점

강점약점
엔터프라이즈 SLA·SOC2·HIPAA가격이 매우 빠르게 오름
Locale·환경 분리 성숙무료 tier가 좁고 차이가 큼
GraphQL·REST·CDN 모두 안정스키마가 코드가 아님(UI 정의)
워크플로·승인 흐름 풍부UX는 SaaS 중 보수적

누가 골라야 하나


4장 · Strapi 5 (2024.9) — Plugins v5 + Document Service

Strapi는 프랑스 출신 오픈소스 헤드리스 CMS다. Node/TS 기반, MIT 라이선스. 2024년 9월 Strapi 5가 정식 출시됐고, 2026년 현재의 기본 진입점은 v5다.

v5의 핵심 변화

// Strapi 5 Document Service API 예시 (커스텀 라우트 안에서)
const documents = await strapi.documents('api::article.article').findMany({
  filters: { publishedAt: { $notNull: true } },
  sort: { publishedAt: 'desc' },
  populate: ['author'],
  status: 'published',
  locale: 'en',
})

// drafts와 published를 명시적으로 다루는 게 v5의 차이
const draft = await strapi.documents('api::article.article').findOne({
  documentId: 'abc123',
  status: 'draft',
})

강점과 약점

강점약점
MIT, 셀프호스트 가능운영 책임 본인이 짐(DB·이미지·백업)
플러그인 생태계i18n·draft 모델이 v4에서 v5로 가면서 갈아엎어짐
TS-friendly어드민 UI는 SaaS 경쟁자들보다 투박
Strapi Cloud 옵션도 있음큰 데이터셋에서 admin 성능 이슈 보고

누가 골라야 하나


5장 · Payload (Figma 인수 2024.9) — TS-first의 논란

Payload는 TypeScript-first 헤드리스 CMS다. 2021년 등장 후 빠르게 개발자 팬덤을 모았다. 2024년 9월 Figma가 Payload를 인수했고, 그 직후 오픈소스 커뮤니티에서 우려·논란이 일었다 — "Figma가 Payload를 자사 제품에 통합하면서 오픈소스 정체성이 흐려질 것 아니냐"는 걱정.

2026년 5월 현재까지의 관찰: Payload는 MIT 라이선스를 유지하고 있고, 코어는 계속 오픈소스로 개발 중이다. 그러나 Payload Cloud(호스티드)Figma 측 통합 기능이 이전보다 빠르게 늘고 있다. 커뮤니티 일부는 "이건 점진적 enclosure다"라고 본다.

핵심 특징

// payload.config.ts
import { buildConfig } from 'payload'
import { mongooseAdapter } from '@payloadcms/db-mongodb'

export default buildConfig({
  collections: [
    {
      slug: 'posts',
      fields: [
        { name: 'title', type: 'text', required: true },
        { name: 'slug', type: 'text', required: true, unique: true },
        {
          name: 'content',
          type: 'richText',
        },
        {
          name: 'author',
          type: 'relationship',
          relationTo: 'users',
        },
      ],
      access: {
        read: () => true,
        create: ({ req }) => Boolean(req.user),
      },
    },
  ],
  db: mongooseAdapter({ url: process.env.MONGODB_URI! }),
})
// Next.js 서버 컴포넌트에서 직접 조회
import { getPayload } from 'payload'
import config from '@/payload.config'

export default async function PostPage({ params }: { params: { slug: string } }) {
  const payload = await getPayload({ config })
  const result = await payload.find({
    collection: 'posts',
    where: { slug: { equals: params.slug } },
    limit: 1,
  })
  const post = result.docs[0]
  return <article>{post.title}</article>
}

Figma 인수의 함의

누가 골라야 하나


6장 · Directus — DB에서 API로 거꾸로 만든다

Directus의 출발점이 독특하다. 대부분의 CMS가 "어드민 UI → DB"로 가는데, Directus는 이미 있는 SQL DB에 붙여서 자동으로 어드민 UI와 REST/GraphQL API를 생성한다. 즉, 기존 데이터를 그대로 CMS로 만든다.

핵심 특징

-- 기존 DB의 articles 테이블
CREATE TABLE articles (
  id SERIAL PRIMARY KEY,
  title TEXT NOT NULL,
  slug TEXT UNIQUE NOT NULL,
  content TEXT,
  published_at TIMESTAMPTZ
);

이 테이블을 Directus에 연결만 하면 즉시 어드민 UI와 API가 생긴다.

# REST로 조회
curl "https://cms.example.com/items/articles?fields=*,author.*&filter[status][_eq]=published"

# GraphQL로 조회
curl -X POST https://cms.example.com/graphql \
  -H "Content-Type: application/json" \
  -d '{"query":"{ articles(filter:{status:{_eq:\"published\"}}){ title slug }}"}'

강점과 약점

강점약점
기존 DB를 그대로 사용 가능콘텐츠-only 사용 케이스에는 과한 일반화
BSL 라이선스 (소규모 무료)BSL이라 일부 기업은 검토 필요
Flows로 자동화 강력리치 텍스트·블록 모델은 SaaS 경쟁자보다 약
데이터 스키마가 SQL 그대로i18n은 직접 모델링

누가 골라야 하나


7장 · Cosmic / Builder.io — 비주얼 + 헤드리스

이 두 곳은 "마케터가 페이지를 직접 만든다"가 핵심 가치다.

Cosmic

Builder.io

// Builder.io에서 Next.js 페이지 렌더
import { builder, BuilderComponent } from '@builder.io/react'

builder.init(process.env.NEXT_PUBLIC_BUILDER_KEY!)

export default async function Page({ params }: { params: { slug: string[] } }) {
  const content = await builder
    .get('page', { url: '/' + params.slug.join('/') })
    .toPromise()

  return <BuilderComponent model="page" content={content} />
}

누가 골라야 하나 (둘 다)

단, 디자인 시스템 일관성을 잃기 쉽다. 사용 가능한 컴포넌트 카탈로그를 미리 좁혀두는 게 핵심.


8장 · Keystatic (Thinkmill) — Git 기반 TS-first

Keystatic은 호주의 Thinkmill이 만들었고, Mark Pinches가 코어 메인테이너 중 한 명이다. 2023년 등장, 2026년 현재 Git 기반 CMS의 TS-first 대표주자로 자리를 잡았다.

핵심 특징

// keystatic.config.ts
import { config, fields, collection } from '@keystatic/core'

export default config({
  storage: { kind: 'github', repo: 'me/blog' },
  collections: {
    posts: collection({
      label: 'Posts',
      slugField: 'title',
      path: 'content/posts/*',
      format: { contentField: 'content' },
      schema: {
        title: fields.slug({ name: { label: 'Title' } }),
        publishedAt: fields.date({ label: 'Published' }),
        content: fields.markdoc({ label: 'Content' }),
      },
    }),
  },
})

강점과 약점

강점약점
콘텐츠가 본인 repo에 있음 (락인 0)동시 편집은 Git workflow 한계로 약함
TS 스키마, 타입 안전마케터가 GitHub 계정·OAuth 친숙해야 함
무료 (호스팅·DB 없음)대용량 자산(이미지)은 CDN 별도 구성 필요
빌드 타임에 그대로 가져옴다단계 워크플로(승인)는 PR로 해결

누가 골라야 하나


9장 · Storyblok — 비주얼 에디터의 강자

Storyblok은 오스트리아 출신 SaaS 헤드리스 CMS. 2017년 시작, 비주얼 에디터가 가장 큰 차별점이다.

핵심 특징

// Next.js에서 Storyblok 페이지 가져오기
import { storyblokInit, apiPlugin, getStoryblokApi } from '@storyblok/react'

storyblokInit({ accessToken: process.env.STORYBLOK_TOKEN, use: [apiPlugin] })

export default async function Page({ params }: { params: { slug: string[] } }) {
  const slug = params.slug?.join('/') || 'home'
  const sb = getStoryblokApi()
  const { data } = await sb.get(`cdn/stories/${slug}`, { version: 'published' })
  return <StoryblokComponent blok={data.story.content} />
}

강점과 약점

강점약점
마케터에 친화적 비주얼 에디터블록 컴포넌트 카탈로그 설계가 중요
다국어 성숙가격이 사용량 따라 빠르게 증가
글로벌 CDN콘텐츠 모델이 SaaS UI 정의 (스키마-as-code 약함)
워크플로 풍부API 응답 사이즈가 큼

누가 골라야 하나


10장 · Hygraph (구 GraphCMS) — GraphQL 우선

GraphCMS는 2022년 Hygraph로 리브랜딩했다. 이름이 바뀌었지만 GraphQL 우선 헤드리스 CMS라는 정체성은 그대로다.

핵심 특징

# Hygraph GraphQL 쿼리
query Posts {
  posts(orderBy: publishedAt_DESC, first: 10, locales: [en, ko]) {
    id
    title
    slug
    publishedAt
    author {
      name
    }
  }
}

누가 골라야 하나


11장 · Prismic / Hashnode / Outstatic — 그 외 SaaS와 Git

Prismic

Hashnode

Outstatic


12장 · Dato CMS / ButterCMS / KeystoneJS — 그 외 헤드리스

Dato CMS

ButterCMS

KeystoneJS


13장 · Ghost / WordPress headless / Webflow / Notion — 비-전통 CMS

이 네 가지는 "헤드리스 전용으로 태어나지 않았지만 헤드리스처럼 쓰는" 부족이다.

Ghost

WordPress headless

Webflow

Notion as CMS


14장 · decap CMS (구 Netlify CMS) / Statamic — Git 기반과 플랫파일

decap CMS (구 Netlify CMS)

Statamic


15장 · 한국 — 마크다운 CMS 트렌드와 카카오 컨텐츠

한국 헤드리스 CMS 사용 패턴의 2026년 특징.

마크다운/Git 기반 사용 증가

카카오 컨텐츠 / 브런치 / 네이버

SaaS 사용

한글 검색·SEO 고려


16장 · 일본 — microCMS, Newt, Storyblok 일본

일본은 로컬 SaaS CMS가 강한 시장이다.

microCMS

// microCMS 클라이언트
import { createClient } from 'microcms-js-sdk'

const client = createClient({
  serviceDomain: 'example',
  apiKey: process.env.MICROCMS_API_KEY!,
})

const data = await client.get({
  endpoint: 'posts',
  queries: { limit: 10, orders: '-publishedAt' },
})

Newt

Storyblok 일본 진출

Contentful·Sanity 사용


17장 · 누가 무엇을 골라야 하나 — 결정 가이드

사용 케이스1순위2순위비고
1인 개발자 블로그Keystatic / OutstaticHashnode락인 0, Git 친화
회사 기술 블로그SanityStrapi 5다인 협업·다국어
스타트업 마케팅 사이트Storyblok / Builder.ioSanity마케터 자율성
엔터프라이즈 본사 사이트ContentfulSanitySLA·컴플라이언스
e-commerceSanity / StoryblokBuilder.io페이지·상품 분리
다국어 글로벌 사이트Sanity / ContentfulHygraphi18n 성숙도
데이터 + CMS 통합DirectusPayload기존 DB 활용
TS 풀스택PayloadStrapi 5코드-퍼스트
셀프호스트 강제Strapi 5 / Payload / Directus / KeystoneJSGhost운영 책임 본인
일본 시장 중심microCMS / NewtStoryblok 일본로컬 UX
한국 글로벌 사이트Sanity / StoryblokContentful다국어·CDN
작가·뉴스레터GhostHashnode메일 발송 내장
WordPress 마이그레이션WP headlessStrapi 5점진적 이행
디자이너 주도 사이트WebflowBuilder.io디자인-퍼스트
초기 MVP 빠르게Notion as CMSHashnode0일 셋업

잘못된 선택의 신호

마이그레이션 비용 추정


마치며 — 콘텐츠는 자산이다

CMS를 고르는 일은 콘텐츠 자산을 어디에 둘지를 정하는 일이다. 도구는 다섯 해마다 갈아탈 수 있지만, 그동안 쌓은 콘텐츠는 본인 회사의 자산이다.

2026년 5월 현재, 한 줄 요약.

규칙은 두 가지뿐이다. 첫째, 데이터 export를 보장하는 CMS를 골라라. 둘째, 마케터가 매일 쓸 UI를 본인이 한 번 써봐라. 나머지는 카탈로그의 디테일이다.


참고 / References

댓글

아직 댓글이 없습니다.

로그인하면 댓글을 쓸 수 있습니다