본 콘텐츠는 사용자의 편의를 고려해 자동 기계 번역 서비스를 사용하였습니다. 영어 원문과 다른 오류, 누락 또는 해석상의 미묘한 차이가 포함될 수 있습니다. 필요하시다면 영어 원문을 참조하시기를 바랍니다.
소프트웨어 구축 비용이 크게 감소했습니다. 저희는 최근 AI 코딩 에이전트를 사용하여 Next.js를 일주일 만에 재구축했습니다. 하지만 지난 두 달 동안 Cloudflare의 에이전트는 WordPress 오픈 소스 프로젝트를 처음부터 다시 구축하는 더욱 야심찬 프로젝트를 진행했습니다.
WordPress는 인터넷의 40% 이상을 구동하고 있습니다. 이 플랫폼은 누구나 게시자가 될 수 있고 WordPress 개발자들로 구성된 글로벌 커뮤니티를 만드는 큰 성공을 거두었습니다. 하지만 WordPress 오픈 소스 프로젝트는 올해 24주년이 됩니다. 그 기간 동안 웹 사이트를 호스팅하는 것이 극적으로 바뀌었습니다. WordPress가 탄생했을 때 AWS EC2는 존재하지 않았습니다. 그 후 몇 년 사이에 그 작업은 가상 사설 서버를 임대하는 수준에서 JavaScript 번들을 전 세계에 분산된 네트워크에 사실상 무료로 업로드하는 수준으로 바뀌었습니다. 이제 이러한 변화를 이용하려면 인터넷에서 가장 인기 있는 CMS를 업그레이드해야 합니다.
이 새로운 CMS의 이름은 EmDash입니다. 우리는 이를 WordPress의 정신적 후계자라고 생각합니다. 전적으로 TypeScript로 작성되었습니다. 이는 서버리스이지만, 자체 하드웨어나 선택한 플랫폼에서 실행할 수 있습니다. 플러그인은 안전하게 샌드박스되어 있으며 자체 격리에서 Dynamic Workers를 통해 실행할 수 있으므로 WordPress 플러그인 아키텍처의 근본적인 보안 문제가 해결됩니다. 또한, EmDash는 콘텐츠 기반 웹 사이트를 위한 가장 빠른 웹 프레임워크인 Astro에 의해 구동됩니다.
EmDash는 완전한 오픈 소스이며 MIT 라이선스를 갖추고 있으며 GitHub에서 사용할 수 있습니다. EmDash는 WordPress 기능과의 호환을 목표로 하지만, EmDash를 만드는 데 WordPress 코드가 사용되지 않았습니다. 이를 통해 저희는 보다 관대한 MIT 라이선스로 오픈 소스 프로젝트의 라이선스를 부여할 수 있습니다. 이를 통해 더 많은 개발자가 EmDash의 개발에 적응하고, 확장하며, 참여할 수 있기를 바랍니다.
EmDash v0.1.0 여러분의 Cloudflare 계정이나 초기 개발자 베타의 일부로 현재 Node.js 서버에서 사용할 수 있습니다.
또는 EmDash Playground에서 관리자 인터페이스를 사용해 볼 수 있습니다.
WordPress의 이야기는 이전에는 볼 수 없었던 규모로 게시할 수 있게 해준 오픈 소스의 승리라고 할 수 있습니다. 인터넷에서 자란 세대에게 이와 같이 인식할 수 있는 수준의 영향을 미친 프로젝트는 거의 없습니다. WordPress의 코어에 기여한 사람들과 거기에 포함된 수천 명의 플러그인 및 테마 개발자들은 수백만 달러의 출판을 민주화하는 플랫폼을 구축했습니다. 많은 사람의 삶과 생계가 이 유비쿼터스 소프트웨어로 인해 변화되고 있습니다.
WordPress를 위한 공간은 항상 존재하겠지만, 콘텐츠 게시 세계가 성장할 여지도 훨씬 더 많습니다. 10년 전, 키보드를 시작하는 사람들은 보편적으로 WordPress를 사용해 자신의 블로그를 게시하는 방법을 배웠습니다. 오늘날에도 이런 사람이 Astro나 다른 TypeScript 프레임워크를 통해 배우고 구축할 가능성이 높아졌습니다. 이 생태계는 23년 전에 WordPress에 필요했던 것과 같은 방식으로 광범위한 사용자에게 힘을 실어줄 수 있는 옵션이 필요합니다.
EmDash는 WordPress가 구축한 기술을 기반으로 하여 누구나 약간의 비용으로 설치하여 사용할 수 있는 오픈 소스 퍼블리싱 스택을 제공하면서도 WordPress가 해결할 수 없는 핵심 문제를 해결할 수 있는 스택을 구축하기 위해 최선을 다하고 있습니다.
WordPress 플러그인 보안 위기 해결하기
WordPress의 플러그인 아키텍처는 근본적으로 안전하지 않습니다. WordPress 사이트에서 발생하는보안 문제의 96%가 플러그인에서 발생합니다. 2025년에는 WordPress 생태계에서 이전 2년을 모두 합친 것보다 심각도가 높은 취약점이 더 많았습니다.
20년이 넘는 시간 동안 WordPress 플러그인 보안이 그렇게 문제가 되는 이유는 무엇일까요?
WordPress 플러그인은 WordPress에 직접 후크하여 기능을 추가하거나 수정하는 PHP 스크립트입니다. 격리가 없습니다. WordPress 플러그인은 WordPress 사이트의 데이터베이스 및 파일 시스템에 직접 액세스할 수 있습니다. WordPress 플러그인을 설치하면 거의 모든 항목에 액세스할 수 있으므로 모든 악의적인 입력이나 에지 케이스를 완벽하게 처리할 수 있습니다.
EmDash는 이를 해결합니다. EmDash에서 각 플러그인은 Dynamic Worker라는 격리된 샌드박스에서 실행됩니다. EmDash는 기본 데이터에 대한 직접 액세스 권한을 부여하는 대신 플러그인이 매니페스트에 필요하다고 명시적으로 선언한 것을 기반으로 바인딩을 통해 기능을 제공합니다. 이 보안 모델은 EmDash 플러그인이 매니페스트에 명시적으로 선언된 작업만 수행할 수 있다는 것을 엄격하게 보장합니다. 플러그인을 설치하기 전에 OAuth 흐름을 거치고 타사 앱에 특정 범위 권한 집합을 부여하는 것과 유사하게 수행할 수 있는 권한을 부여하는 것이 정확히 무엇인지 미리 알고 신뢰할 수 있습니다.
예를 들어 콘텐츠 항목이 저장된 후 이메일을 보내는 플러그인은 다음과 같습니다.
import { definePlugin } from "emdash";
export default () =>
definePlugin({
id: "notify-on-publish",
version: "1.0.0",
capabilities: ["read:content", "email:send"],
hooks: {
"content:afterSave": async (event, ctx) => {
if (event.collection !== "posts" || event.content.status !== "published") return;
await ctx.email!.send({
to: "[email protected]",
subject: `New post published: ${event.content.title}`,
text: `"${event.content.title}" is now live.`,
});
ctx.log.info(`Notified editors about ${event.content.id}`);
},
},
});
이 플러그인은 명시적으로 두 가지 기능을 요청합니다. 콘텐츠 수명 주기에 후크하기 위한 content:afterSave 와 email:send 를 통해 ctx.email 기능에 액세스합니다. 플러그인은 이러한 기능을 사용하는 것 이외의 다른 작업을 수행할 수 없습니다. 외부 네트워크에 액세스할 수 없습니다. 네트워크 액세스가 필요한 경우, 정의의 일부로 통신해야 하는 정확한 호스트 이름을 지정하고, 특정 호스트 이름과 통신할 수 있는 기능만 부여할 수 있습니다.
그리고 모든 경우에 플러그인의 요구 사항이 정적으로 선언되기 때문에, 설치 시 플러그인이 수행할 수 있는 권한에 대해 요청하는 내용을 항상 명확하게 파악할 수 있습니다. 플랫폼이나 관리자는 승인되거나 안전한 플러그인의 허용 목록이 아니라, 요청하는 권한에 따라 특정 사용자 그룹에게 설치를 허용하거나 허용하지 않는 플러그인을 결정하는 규칙을 정의할 수 있습니다.
플러그인 보안 문제를 해결하면 마켓플레이스 종속 문제도 해결됩니다
WordPress 플러그인 보안은 WordPress.org에서 마켓플레이스의 각 플러그인을 수동으로 검토하고 승인할 정도로 실제적인 위험이 있습니다. 이 글을 쓰는 시점을 기준으로, 이 검토 대기열은 800개 이상의 플러그인을 포함하고 있으며, 이를 검토하는 데 최소 2주가 소요됩니다. WordPress 플러그인의 취약점 노출 영역은 매우 넓어서 사실상 모든 당사자들이 마켓플레이스의 평판, 평가, 리뷰에 의존합니다. 그리고 WordPress 플러그인이 WordPress 자체와 동일한 실행 컨텍스트에서 실행되고 WordPress 코드와 깊이 얽혀 있기 때문에 일부에서는 WordPress의 GPL 라이선스를 이월해야 한다는 주장이 있습니다.
이러한 현실이 결합되어 플러그인을 구축하는 개발자와 WordPress 사이트를 호스팅하는 플랫폼에 대하여 냉담한 효과를 얻습니다.
플러그인 보안이 이 문제의 근본입니다. 마켓플레이스 비즈니스는 당사자들이 서로를 쉽게 신뢰할 수 없을 때 신뢰를 제공합니다. WordPress 마켓플레이스의 경우 플러그인 보안 위험이 너무 크고 가능성이 높으므로 많은 고객이 마켓플레이스를 통해서만 플러그인을 합리적으로 신뢰할 수 있습니다. 하지만 마켓플레이스에 참여하려면 해당 코드를 마켓플레이스가 아닌 다른 모든 곳에서 무료로 배포할 수 있도록 라이선스를 부여해야 합니다. 여러분은 종속되어 있습니다.
EmDash 플러그인에는 이러한 마켓플레이스 종속을 완화하는 두 가지 중요한 속성이 있습니다.
플러그인은 모든 라이선스를 가질 수 있습니다. EmDash와 독립적으로 실행되며 코드를 공유하지 않습니다. 이는 플러그인 작성자의 선택입니다.
플러그인 코드는 보안 샌드박스에서 독립적으로 실행됩니다. 즉, EmDash 사이트에 플러그인을 제공하고 EmDash 사이트에서 코드를 확인하지 않고도 신뢰할 수 있습니다.
첫 번째 부분은 간단합니다. 플러그인 작성자가 원하는 라이선스를 선택하는 것입니다. NPM, PyPi, Packagist, 기타 레지스트리에 퍼블리싱하는 것과 동일한 방식입니다. 플러그인과 테마에 사용하는 라이선스는 EmDash 프로젝트가 아니라 모두를 위한 개방형 생태계이며 커뮤니티의 책임입니다.
두 번째 부분은 EmDash의 플러그인 아키텍처가 중앙 집중식 마켓플레이스에서 벗어나는 부분입니다.
개발자는 플러그인의 사용 또는 신뢰 여부를 결정하기 위해 플러그인을 훨씬 덜 검증한 타사 마켓플레이스에 의존해야 합니다. 콘텐츠가 저장된 후 이메일을 전송하는 위의 예시 플러그인을 생각해 보세요. 플러그인은 세 가지를 선언합니다.
플러그인에는 수만 줄의 코드가 포함될 수 있지만, 모든 것에 액세스할 수 있고 공용 인터넷과 통신할 수 있는 WordPress 플러그인과는 달리 플러그인을 추가하는 사람은 자신이 어떤 액세스 권한을 부여하는지 정확히 알고 있습니다. 경계가 명확하게 정의되면 보안 위험에 대해 정보에 입각한 결정을 내릴 수 있으며 플러그인에 제공되는 기능과 직접적으로 관련된 보다 구체적인 위험을 확대할 수 있습니다.
사이트와 플랫폼 모두 제약 조건을 제시하는 보안 모델을 신뢰할 수 있다면, 그만큼 사이트와 플랫폼에서는 플러그인을 더 많이 신뢰하고 마켓플레이스와 평판에 대한 중앙 집중식 제어에서 벗어날 수 있습니다. 다시 말해, 거주하는 도시에 식품 안전이 시행되고 있다고 신뢰하면 모험을 하고 새로운 장소를 시도하게 될 것입니다. 수프에 대표 음식이 있을지도 모른다는 사실을 믿을 수 없다면 새로운 음식점을 찾을 때마다 Google에 문의하게 되고, 모든 사람이 새로운 음식점을 여는 것이 더 어려워집니다.
모든 EmDash 사이트에는 x402 지원이 내장되어 있으며, 콘텐츠 액세스 요금이 부과됩니다
웹의 비즈니스 모델은 위험에 처해 있으며, 특히 콘텐츠 크리에이터와 퍼블리셔의 입장에서 그렇습니다. 콘텐츠를 광범위하게 액세스할 수 있도록 하는 기존 방식은 트래픽과 교환하여 모든 클라이언트가 무료로 액세스할 수 있도록 허용하지만, 광고할 사이트를 바라보는 사람이 없고 클라이언트가 대신 웹에 액세스하는 에이전트가 되면 이제는 사용할 수 없습니다. 크리에이터는 새로운 에이전트의 세계에서 지속해서 수익을 창출하고 사람들의 에이전트가 필요로 하고 비용을 지불할 것을 제공하는 새로운 종류의 웹사이트를 구축하는 방법이 필요합니다. 수십 년 전에 새로운 물결의 크리에이터가 웹 사이트를 만들어 큰 비즈니스가 되었으며(종종 WordPress를 사용하여 지원함), 오늘날에도 비슷한 기회가 있습니다.
x402 는 인터넷 네이티브 결제를 위한 개방형 중립 표준입니다. 인터넷 사용자라면 누구나 간편하게 요금을 청구하고 모든 클라이언트는 종량제 방식으로 온디맨드 요금을 지불할 수 있습니다. 클라이언트가 에이전트와 같은 HTTP 요청을 전송하고, HTTP 402 결제 필요 상태 코드를 받게 됩니다. 이에 대해 클라이언트는 온디맨드 액세스에 대해 비용을 지불하며, 서버는 클라이언트가 요청된 콘텐츠를 통과하도록 할 수 있습니다.
EmDash에는 x402 지원이 기본 제공됩니다. 즉, EmDash 사이트가 있는 사람은 누구나 구독 없이도 엔지니어링 작업 없이 콘텐츠 액세스에 대한 요금을 청구할 수 있습니다. 결제가 필요한 콘텐츠를 구성하고, 청구할 금액을 설정하고, 월렛 주소를 제공하기만 하면 됩니다. 요청/응답 흐름은 다음과 같이 마무리됩니다.
모든 EmDash 사이트에는 AI 시대를 위한 비즈니스 모델이 기본으로 제공됩니다.
WordPress는 서버리스가 아닙니다. 서버를 프로비저닝하고 관리하며, 기존 웹 애플리케이션처럼 서버를 확장 및 축소해야 합니다. 성능을 극대화하고 트래픽 급증을 처리하기 위해, 인스턴스를 사전 프로비저닝하고 일정량의 유휴 컴퓨팅을 실행하거나 성능을 제한하는 방식으로 리소스를 공유할 필요는 없습니다. 특히 서버 렌더링이 필수이며 캐시가 불가능한 콘텐츠가 있는 사이트의 경우 더욱 그렇습니다.
EmDash는 서버리스 플랫폼에서 실행되도록 구축되었으며, Cloudflare의 오픈 소스 런타임 v8 isolate 아키텍처 를 최대한 활용합니다. workerd. 요청이 들어오는 즉시 Workers 런타임은 격리를 즉시 가동하여 코드를 실행하고 응답을 제공합니다. 요청이 없으면 다시 0으로 줄어듭니다. 그리고 CPU 시간(실제 작업을 수행하는 데 소요된 시간)에 대해서만 요금이 청구됩니다.
EmDash는 Node.js 서버의 어디에서든 실행할 수 있습니다. 하지만 Cloudflare에서는 Cloudflare for Platforms 를 이용하여 수백만 개의 EmDash 인스턴스를 실행하여 즉각적으로 0 또는 처리해야 하는 RPS만큼의 RPS까지 확장할 수 있습니다. 대규모 웹 사이트가 사용하는 네트워크와 런타임과 동일한 네트워크와 런타임을 제공합니다.
비용 최적화와 성능 이점 외에도, 저희가 Cloudflare에서 이 아키텍처를 선택했습니다. 부분적으로는 우리가 비용이 저렴하고 무료 등급을 제공하며 누구나 확장 가능한 웹사이트를 구축할 수 있어야 한다고 믿기 때문입니다. Cloudflare는 플랫폼에서 이 아키텍처의 이점을 크고 작은 자체 고객에게 제공할 수 있게 되어 기쁩니다.
Astro를 통한 최신 프런트엔드 테마 및 아키텍처
EmDash는 콘텐츠 중심 웹 사이트를 위한 웹 프레임워크인 Astro를 기반으로 합니다. EmDash 테마를 만들려면 다음을 포함하는 Astro 프로젝트를 만들어야 합니다.
Pages: 콘텐츠(홈페이지, 블로그 게시물, 아카이브 등) 렌더링을 위한 Astro 라우팅
레이아웃: 공유 HTML 구조
구성 요소: 재사용 가능한 UI 요소(탐색, 카드, 푸터)
스타일: CSS 또는 Tailwind 구성
시드 파일: 생성할 콘텐츠 유형과 필드를 CMS에 알려주는 JSON
따라서 점점 더 Astro를 선택하는 프론트엔드 개발자와 이미 Astro 교육을 받은 LLM에게 테마 제작이 친숙합니다.
WordPress 테마는 믿을 수 없을 정도로 유연하기는 하지만, 플러그인과 동일한 많은 보안 위험을 안고 작동하며, 테마가 더 인기 있고 평범할수록 더 표적이 될 수 있습니다. 테마는 모든 것을 아우르는 실행 환경인 functions.php 와 통합되어 실행되며, 이는 테마를 매우 강력하면서도 잠재적으로 위험하게 만들 수 있습니다. EmDash 테마는 동적 플러그인과 마찬가지로 이러한 기대치를 바꾸어줍니다. 테마는 데이터베이스 작업을 수행할 수 없습니다.
AI 네이티브 CMS — EmDash의 MCP, CLI, 기술
CMS를 사용하면서 가장 재미 없는 부분은 문자열을 찾고 교체하고, 사용자 정의 필드를 한 형식에서 다른 형식으로 마이그레이션하고, 이름을 변경하고, 순서를 변경하고, 이동하는 등 기계적인 콘텐츠 마이그레이션 작업을 수행하는 것입니다. 이 작업은 지루하고 반복적인 작업이거나, 일회성 스크립트와 “일회성” 플러그인 및 일반적으로 작성하는 데 재미도 없고 사용하는 데도 재미 없는 도구를 필요로 하기도 합니다.
EmDash는 AI 에이전트가 프로그래밍 방식으로 관리하도록 설계되었습니다. 다음을 포함하여 에이전트에게 필요한 컨텍스트와 도구를 제공합니다.
에이전트기술: 각 EmDash 인스턴스에는 EmDash가 플러그인에 제공할 수 있는 기능, 플러그인을 트리거할 수 있는 후크, 플러그인을구성하는 방법에 대한 지침, 심지어 레거시 WordPress 테마를 EmDash로 기본적으로 포팅하는 방법 등을 에이전트에게 설명하는 에이전트 기술 이 포함되어 있습니다. 에이전트에 EmDash 코드베이스를 제공하면 EmDash는 에이전트가 필요한 방식으로 사이트를 사용자 정의하는 데 필요한 모든 것을 제공합니다.
EmDash CLI: EmDash CLI 를 사용하면 에이전트가 EmDash의 로컬 또는 원격 인스턴스와 프로그래밍 방식으로 상호 작용할 수 있습니다. 미디어를 업로드하고, 콘텐츠를 검색하며, 스키마를 생성 및 관리하고, 관리 UI에서 수행할 수 있는 것과 동일한 일련의 작업을 수행할 수 있습니다.
내장 MCP 서버: 모든 EmDash 인스턴스는 자체 원격 모델 컨텍스트 프로토콜(MCP) 서버를 제공하므로 관리 UI에서와 동일한 작업을 수행할 수 있습니다.
EmDash는 기본적으로 암호 키 기반 인증을 사용하므로 암호가 유출될 수 있고 무차별 암호 대입 공격을 통해 방어할 방법이 없습니다. 사용자 관리에는 관리자, 편집자, 작성자, 기여자 등 친숙한 역할 기반 액세스 제어가 기본적으로 포함되며 각각 필요한 작업에 엄격하게 적용됩니다. 인증은 플러그 가능하므로 SSO 공급자와 함께 작동하도록 EmDash를 설정하고 IdP 메타데이터를 기반으로 액세스를 자동으로 프로비저닝할 수 있습니다.
WordPress 사이트를 EmDash로 가져오기
WordPress 관리자로 이동하여 WXR 파일을 내보내거나, WordPress 사이트에 EmDash Exporter 플러그인 을 설치하여 사용자에게만 노출되고 사용자가 제어하는 WordPress 애플리케이션 암호로 보호되는 보안 엔드포인트를 구성함으로써 기존 WordPress 사이트를 가져올 수 있습니다. 콘텐츠를 마이그레이션하는 데 몇 분밖에 걸리지 않으며 연결된 모든 미디어를 EmDash의 미디어 라이브러리로 자동으로 가져옵니다.
WordPress에서 게시물 또는 페이지가 아닌 사용자 지정 콘텐츠 유형을 만들면 고급 사용자 지정 필드와 같은 무거운 플러그인을 설치하고 그 결과를 WordPress 게시물 테이블로 압축해 두어야 합니다. EmDash는 상황이 다릅니다. 관리자 패널에서 직접 스키마를 정의할 수 있으며, 데이터베이스에서 별도로 정렬되는 완전히 새로운 EmDash 컬렉션을 만들어낼 수 있습니다. 가져올 때 동일한 기능을 사용하여 WordPress에서 모든 사용자 지정 게시물 유형을 가져와서 EmDash 콘텐츠 유형을 생성할 수 있습니다.
맞춤형 블록의 경우 EmDash 블록 키트 에이전트 기술 을 사용하여 선택한 에이전트에 지시하고 EmDash를 위해 블록을 구축할 수 있습니다.
EmDash 버전은 0.1.0입니다. 미리 보기를 진행하고 있으며, 사용해 보시고 피드백을 주시면 감사하겠습니다. 또한 EmDash GitHub 리포지토리에 대한 기여를 환영합니다.
그냥 시험 삼아 어떤 기능이 가능한지 먼저 확인하고 싶다면, EmDash Playground에서 관리자 인터페이스를 사용해 보세요.
CLI를 통해 로컬에 새로운 EmDash 사이트를 생성하려면 다음을 실행하세요.
npm create emdash@latest
또는 아래 Cloudflare 대시보드에서도 동일한 작업을 수행할 수 있습니다.
Cloudflare는 여러분이 무엇을 구축해나갈지 기대하고 있습니다. 호스팅 플랫폼, 플러그인, 테마 작성자 등 WordPress 커뮤니티에서 활발하게 활동하고 있다면 우리는 여러분의 의견을 듣고 싶습니다. [email protected]으로 이메일을 보내거나 EmDash 프로젝트에서 확인했으면 하는 사항을 알려주세요.
EmDash의 주요 개발 소식을 계속 확인하려면 여기에 이메일 주소를 남겨주세요.