
대부분의 헤드리스 CMS는 시스템 내에서 데이터 모델을 구축하기를 원합니다. Directus는 이를 뒤집어놓았습니다. 기존 SQL 데이터베이스를 감싸서 스키마를 건드리지 않고도 즉시 REST 및 GraphQL API를 제공합니다. GitHub에서 약 34,500개의 스타를 받았으며 Tripadvisor, Adobe, Mercedes-Benz 같은 회사들이 채택하고 있는 Directus는 2026년 최고의 헤드리스 CMS 옵션 중 가장 capable한 오픈소스 솔루션 중 하나입니다.
Directus CMS란 무엇인가?
Directus는 기존 SQL 데이터베이스를 즉시 REST 및 GraphQL API로 감싸는 오픈소스 헤드리스 CMS입니다. Strapi나 Payload와 달리 Directus는 자체 데이터베이스 스키마를 만들지 않습니다. 여러분의 스키마를 미러링합니다. PostgreSQL, MySQL, MariaDB, SQLite, OracleDB, CockroachDB, MS-SQL을 포함한 7가지 데이터베이스를 지원하며, Directus 공식 문서에 따르면 연매출 500만 달러 이하의 조직은 무료입니다.
데이터베이스 위에 앉아 있는 스마트 레이어라고 생각하면 됩니다. 50개 테이블이 있는 기존 PostgreSQL 데이터베이스를 가져와서 Directus에 연결하면, 몇 분 내에 완전한 관리자 UI, 역할 기반 접근 제어, REST 및 GraphQL 엔드포인트를 갖추게 됩니다. 마이그레이션 스크립트도 없고, 데이터 재구성도 없습니다.
이것이 실제로 "데이터베이스 우선"이 의미하는 바이며, Strapi에서 사용하는 코드 우선 접근 방식(콘텐츠 유형을 정의하면 데이터베이스 테이블이 생성됨) 또는 Payload CMS의 프레임워크 내장 접근 방식(CMS가 Next.js 앱 내에 존재함)과는 근본적으로 다릅니다.
데이터베이스 우선 아키텍처 설명
클라이언트 프로젝트를 위해 처음으로 Directus를 기존 PostgreSQL 데이터베이스에 연결했을 때, 놀라웠던 점은 필요한 설정이 얼마나 적었는지였습니다. Directus는 데이터베이스 스키마를 자동으로 검사합니다. 테이블은 "컬렉션"이 되고, 열은 "필드"가 되며, 이미 존재하는 것을 기반으로 관리자 인터페이스를 구축합니다.
즉, 데이터가 독점 형식으로 잠금되지 않습니다. 내일 Directus 사용을 중단하기로 결정하더라도 데이터베이스는 여전히 표준 SQL 데이터베이스입니다. Contentful이나 Sanity에서 콘텐츠가 그들의 서버에 그들의 형식으로 존재하는 상황에서 이를 시도해보세요.
Directus는 단지 CMS만이 아닙니다. 팀은 이를 composable 데이터 플랫폼으로 포지셔닝합니다. 사람들은 이를 BaaS(Backend as a Service), 내부 관리자 패널, 커스텀 대시보드에 사용합니다. CMS 사용 사례가 가장 인기 있지만, 아키텍처는 훨씬 더 많은 것을 지원합니다.
Directus의 주요 기능
Directus는 이중 REST 및 GraphQL API, 세분화된 역할 기반 권한, 기본 제공 Flows 자동화, 드래그 앤 드롭 Data Studio, 디지털 자산 관리, 50개 이상의 언어에 대한 네이티브 i18n 지원을 제공합니다. v11.15 이후로는 협업 편집 및 AI 어시스턴트를 네이티브 기능으로 포함합니다. 타사 플러그인이 아닙니다.
프로젝트에서 Directus를 평가하는 중이라면 다음이 가장 중요합니다:
이중 REST 및 GraphQL API
두 API 모두 같은 데이터에서 설정 없이 동시에 사용 가능합니다. 하나를 선택할 필요가 없습니다. 둘 다 얻습니다. 모바일 팀은 REST를 사용할 수 있고 웹 프런트엔드는 GraphQL을 사용할 수 있습니다. REST API는 예측 가능한 패턴(/items/{collection})을 따르고 GraphQL 엔드포인트는 /graphql에 있습니다.
Flows 및 자동화
Flows는 Directus의 이벤트 기반 자동화 시스템이며, Data Studio UI에 직접 구축되어 있습니다. CRUD 이벤트(항목 생성, 업데이트, 삭제), 스케줄(cron 스타일) 또는 웹훅에서 워크플로우를 트리거할 수 있습니다. 작업에는 이메일 보내기, HTTP 요청 만들기, 커스텀 JavaScript 실행, 데이터 변환이 포함됩니다.
AI로 빌드하는 팀의 경우 Directus는 심지어 네이티브 Model Context Protocol(MCP) 가이드 서버까지 갖추고 있습니다. 하지만 v11 섹션에서 자세히 다루겠습니다.
확장 및 커스터마이제이션
확장 시스템은 훅(서버 측 이벤트 핸들러), 커스텀 엔드포인트, UI 패널, 전체 모듈, Flows용 작업 노드를 지원합니다. 확장은 프런트엔드의 Vue.js와 백엔드의 순수 Node.js로 구축됩니다. v11.0 릴리스는 확장을 유형 기반 폴더에서 더 깔끔한 번들 형식으로 재구성했습니다.
Directus가 기능 측면에서 경쟁사와 어떻게 비교되는지는 다음과 같습니다:
Directus v11의 새로운 기능(2025-2026)
Directus v11은 네이티브 MCP 서버 지원(v11.13), OpenAI, Anthropic, Gemini를 지원하는 AI 어시스턴트(v11.14), 라이브 현재 위치 표시기가 있는 협업 편집(v11.15), 역할 기반 배포 권한이 있는 글로벌 초안 버전(v11.16)을 도입했습니다. 이들은 모두 기본 제공 기능이며, 커뮤니티 확장이 아닙니다.
Directus가 가장 빠르게 움직이고 있는 부분이 여기이며, 이것은 대부분의 경쟁사가 완전히 놓치고 있는 섹션입니다. 상위 6개 랭킹 가이드 중 오직 하나만 이 중 어떤 것이든 다룹니다.
MCP 서버 및 AI 어시스턴트
v11.13 릴리스는 Directus를 네이티브 MCP 서버를 갖춘 최초의 CMS 중 하나로 만들었습니다. Claude, ChatGPT, 또는 MCP 호환 AI 도구를 사용 중이라면, Directus 콘텐츠를 직접 관리할 수 있습니다. 컬렉션을 읽고, 항목을 만들고, 필드를 업데이트합니다. 모두 RBAC 권한을 존중하면서요. MCP를 처음 접한다면 Model Context Protocol(MCP) 가이드가 프로토콜을 자세히 설명합니다.
AI 어시스턴트(v11.14)는 MCP와 별도입니다. Data Studio 내에 기본 제공되는 채팅 인터페이스이며 OpenAI, Anthropic, Gemini, 심지어 Ollama를 통한 로컬 모델도 지원합니다. v11.16까지는 멀티모달이 되었습니다. AI 채팅에 이미지와 PDF를 직접 업로드하여 처리할 수 있습니다.
협업 편집 및 초안 버전
협업 편집은 라이브 현재 위치 표시기(같은 항목을 편집하는 다른 사람을 볼 수 있음) 및 충돌을 방지하기 위한 필드 수준 잠금과 함께 v11.15에서 출시되었습니다. 같은 릴리스에서는 역할 기반 배포 권한이 있는 Vercel 배포 모듈을 추가했습니다.
v11.16은 글로벌 초안 버전으로 콘텐츠 스테이징을 더 발전시켰습니다. 모든 버전이 지정된 항목은 자동으로 초안 사본을 갖습니다. 편집자는 변경사항을 라이브 버전과 비교하여 미리보기하고 준비가 되면 초안을 승격할 수 있습니다. 역할 기반 배포 권한은 콘텐츠 팀이 실수로 프로덕션에 푸시하지 않고도 변경사항을 스테이징할 수 있다는 의미입니다.
Directus 시작하기(Docker 설정)
Docker를 사용하여 2분 이내에 Directus를 로컬에서 실행할 수 있습니다. directus/directus 이미지를 포함한 docker-compose.yml 파일을 만들고, 데이터베이스 연결 및 관리자 자격 증명을 환경 변수로 설정한 다음, docker compose up을 실행하세요. Directus는 localhost:8055에서 시작됩니다.
Docker 설정은 처음부터 2분도 걸리지 않았습니다. 다음은 PostgreSQL을 포함한 완전한 docker-compose.yml입니다. Directus 컨테이너뿐만 아니라 전체 스택입니다:
실행하세요:
http://localhost:8055를 열고, 설정한 관리자 자격 증명으로 로그인하면 Data Studio에 있게 됩니다. 여기서 컬렉션(테이블)을 만들고, 필드(열)를 정의하고, 즉시 콘텐츠 관리를 시작할 수 있습니다. KEY 및 SECRET 환경 변수는 JWT 토큰 생성에 사용됩니다. 프로덕션에서는 위의 플레이스홀더가 아닌 무작위 문자열을 사용하세요.
Directus SDK로 데이터 쿼리하기
Directus JavaScript SDK는 REST와 GraphQL을 모두 통해 타입 안전한 데이터 액세스를 제공합니다. @directus/sdk을 설치하고, createDirectus()로 클라이언트를 만들고, readItems()를 사용하여 필터링, 정렬, 필드 선택이 내장된 컬렉션을 가져오세요.
SDK의 composable 패턴은 Supabase의 클라이언트 같은 라이브러리를 사용한 후 직관적으로 느껴졌습니다. 기본 클라이언트로 시작하고 함수를 구성하여 기능을 추가합니다:
항목 생성은 같은 패턴을 따릅니다:
인증의 경우 staticToken()(서버 간 통신용) 및 authentication()(로그인 흐름이 있는 사용자 대면 앱용) 중에서 선택합니다:
REST API 예제
모든 SDK 메서드에는 해당하는 REST 엔드포인트가 있습니다. curl이나 fetch를 직접 사용하는 것을 선호한다면:
GraphQL 쿼리
동일한 데이터는 /graphql에서 GraphQL을 통해 사용 가능합니다:
GraphQL을 별도로 구성하거나 활성화할 필요가 없습니다. REST와 함께 항상 사용 가능합니다.
Directus with Next.js (프레임워크 통합)
...