본문 바로가기
Backend2026년 5월 24일2분 읽기

Deno 3 npm 호환 — Node 코드 Deno로 6개월 운영기

YS
김영삼
조회 693
Deno 3 npm 호환 — Node 코드 Deno로 6개월 운영기

핵심 요약

Deno 3 GA로 npm 호환이 사실상 완전. 사내 5개 Node 백엔드 6개월 운영 — Express 그대로, Prisma 그대로, 일부 native addon만 막힘. Deno Deploy edge 배포로 한국 응답 -84ms. 권한 모델은 진가, 함정도.

1. npm: 스킴 — 그대로 import

import express from 'npm:express@4'
import { z } from 'npm:zod'

const app = express()
app.get('/', (_, res) => res.json({ hello: 'deno' }))
app.listen(8000)

package.json도 인식. node_modules 디렉토리도 옵션.

2. 권한 모델 — 운영의 보호막

deno run \
  --allow-net=:8000,db.internal:5432 \
  --allow-env=DATABASE_URL,JWT_SECRET \
  --allow-read=./public \
  server.ts

프로세스 단위 sandbox. 자격 증명 유출 사고 패턴 다수 차단.

3. Deno Deploy — edge 배포

자사 한국 사용자 응답 평균 192ms → 108ms. 서울 PoP 자동 라우팅. cold start 8ms로 Lambda 대비 압도적.

4. 막힌 것

  • sharp — libvips native, jsr:@deno/imagemagick으로 대체
  • Prisma 마이그레이션 — deno run --node-modules-dir 필요
  • cluster module — Deno는 worker, 패턴 다름

5. 함정

  • 권한 너무 넓게 — --allow-all은 의미 없음, 도메인·포트까지 좁히기
  • deno.json + package.json 공존 — task runner 우선순위 명확히
  • node_modules 캐시 — Docker 이미지 빌드 시 권한 이슈, USER 변경 주의

댓글 0

아직 댓글이 없습니다.
Ctrl+Enter로 등록