Deno Deploy
데노 디플로이
Deno 런타임 기반 글로벌 엣지 서버리스 플랫폼. TypeScript 네이티브 지원.
데노 디플로이
Deno 런타임 기반 글로벌 엣지 서버리스 플랫폼. TypeScript 네이티브 지원.
Deno Deploy는 Deno 런타임을 기반으로 한 글로벌 분산 엣지 서버리스 플랫폼입니다. 전 세계 35개 이상의 리전에서 코드가 실행되어 사용자와 가장 가까운 위치에서 응답하므로, 평균 지연 시간이 20ms 이하로 매우 빠릅니다.
Node.js 창시자 Ryan Dahl이 만든 Deno는 TypeScript를 설정 없이 바로 실행할 수 있고, 보안을 기본으로 설계(기본적으로 파일/네트워크 접근 불가)했습니다. Deno Deploy는 이 Deno 런타임을 클라우드 서비스로 제공하여, 번들링이나 빌드 과정 없이 TypeScript/JavaScript를 바로 배포할 수 있습니다.
기술적으로 Deno Deploy는 V8 Isolates를 사용합니다. 각 요청이 격리된 환경에서 실행되어 콜드 스타트가 거의 없고(보통 5ms 이하), 다른 서버리스 플랫폼 대비 빠른 응답 속도를 제공합니다. Web Standard API(fetch, Request, Response 등)를 완전히 지원하여 브라우저 코드와 서버 코드를 유사하게 작성할 수 있습니다.
실무에서 Deno Deploy는 API 서버, 웹훅 처리, SSR(Server-Side Rendering), 실시간 애플리케이션에 적합합니다. Fresh 프레임워크와 결합하면 제로 빌드 스텝의 풀스택 웹 애플리케이션을 구축할 수 있습니다. GitHub 연동으로 push 시 자동 배포되는 것도 큰 장점입니다.
// main.ts - Deno Deploy 기본 서버
// 별도 빌드 없이 TypeScript 바로 실행
Deno.serve((request: Request) => {
const url = new URL(request.url);
// 라우팅
if (url.pathname === "/") {
return new Response("Hello from Deno Deploy!", {
headers: { "content-type": "text/plain" },
});
}
if (url.pathname === "/api/time") {
return Response.json({
timestamp: new Date().toISOString(),
region: Deno.env.get("DENO_REGION") || "unknown",
});
}
// 404 처리
return new Response("Not Found", { status: 404 });
});
// 로컬 테스트: deno run --allow-net main.ts
// 배포: deployctl deploy --project=my-project main.ts
"글로벌 서비스인데 레이턴시가 중요하면 Deno Deploy 고려해볼 만해요. 35개 리전에서 엣지 실행되니까 어디서든 빠르고, TypeScript를 빌드 없이 바로 배포할 수 있어서 개발 사이클이 짧아집니다."
"Deno Deploy와 Cloudflare Workers의 차이점을 말씀드리면, 둘 다 V8 Isolates 기반 엣지 컴퓨팅이지만 Deno Deploy는 Deno 런타임을 사용해서 TypeScript 네이티브 지원과 npm 패키지 호환성이 좋습니다. 또한 Deno KV라는 내장 키-값 저장소를 제공해서 별도 DB 연결 없이 간단한 데이터 저장이 가능합니다."
"Fresh 프레임워크랑 Deno Deploy 조합이 좋은 게, Islands Architecture로 JavaScript 전송량을 최소화하면서 필요한 컴포넌트만 하이드레이션해요. 빌드 스텝도 없고 배포가 즉시 반영되니까 프로토타입이나 빠른 반복 개발에 최적입니다."
Deno는 Node.js와 다른 런타임입니다. 대부분의 npm 패키지가 호환되지만, 네이티브 바이너리(bcrypt 등)나 Node.js 전용 API를 사용하는 패키지는 작동하지 않을 수 있습니다. 배포 전 로컬에서 deno run으로 테스트하세요.
Deno Deploy는 서버리스 환경입니다. 전역 변수에 상태를 저장해도 다음 요청에서 유지되지 않을 수 있습니다. 영구 저장이 필요하면 Deno KV나 외부 데이터베이스를 사용하세요.
Web Standard API(fetch, Request, Response)를 활용하고, Deno.env로 환경 변수를 관리하세요. 복잡한 애플리케이션은 Fresh 프레임워크를 사용하면 라우팅, 미들웨어, SSR을 체계적으로 구성할 수 있습니다.