핵심 요약
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