Deno 2.0은 Node.js 창시자 **라이언 달(Ryan Dahl)**이 Node.js의 구조적 한계를 인정하고 처음부터 다시 설계한 현대 웹 JavaScript/TypeScript 런타임. “Node”의 철자를 재배열한 이름(Anagram). Deno 2.0에서 Node.js/npm 호환성을 대폭 강화하면서도 보안·TypeScript·ESM 기본 지원 등 초기 철학 유지. “Node.js의 대체가 아닌, 미해결 문제를 개선한 현대적 런타임”.
Node.js:
V8의 강력한 샌드박스 미활용
모든 스크립트가 파일·네트워크 무제한 접근
→ npm 의존성도 전체 시스템 접근 가능 ⚠️
Deno:
기본 모든 접근 차단 (Secure-by-Default)
명시적 권한 부여 필수:
deno run --allow-read --allow-net script.ts
3. 빌드 시스템 (GYP)
Chrome: GYP → GN 전환
Node.js: GYP 유지 (Python 기반, 직관적이지 않은 문법)
Deno: Rust 크레이트 기반 (rusty_v8)
npm의 대안: 현대적 패키지 레지스트리
- TypeScript 네이티브 지원
- ESM 전용
- 크로스 런타임 (Deno + Node.js + Bun)
- https://jsr.io
6. 안정화된 표준 라이브러리
import { serve } from "https://deno.land/std/http/server.ts";import { parse } from "https://deno.land/std/flags/mod.ts";
Node.js vs Deno 2.0 비교
항목
Node.js
Deno 2.0
창시자
Ryan Dahl
Ryan Dahl (같은 사람)
출시
2009
2020 (1.0), 2024 (2.0)
언어
C++
Rust
보안
모든 접근 허용
Secure-by-Default
TypeScript
설정 필요
기본 지원
모듈
CommonJS + ESM
ESM 기본
패키지
npm (node_modules)
URL + npm 호환
도구
각각 설치 (6+)
올인원 내장
생태계
최대 (2M+ 패키지)
npm 호환 + JSR
속도
빠름
비슷~빠름
성숙도
최고
성장 중
개발자 우려
"Deno의 초기 철학이 희석될 수 있다"
우려:
- Node.js 호환 강화 → 보안·간결함 저해?
- package.json·node_modules 지원 = 원래 거부한 것 수용
- "Node.js와 뭐가 다른 거지?" 정체성 혼란
Deno 팀 반론:
- 호환성 = 실용적 전환 경로
- 보안·TypeScript·내장 도구 등 핵심 철학은 유지
- npm 지원은 선택사항이지 강제 아님
Deno.serve({ port: 8000 }, (req: Request) => { return new Response("Hello from Deno 2.0!");});
파일 읽기 (Promise 기반)
const text = await Deno.readTextFile("./data.json");const data = JSON.parse(text);console.log(data);
권한 제어 실행
# 읽기 + 네트워크만 허용deno run --allow-read --allow-net server.ts# 환경변수 접근 허용deno run --allow-env app.ts# 모든 권한 (개발용)deno run -A app.ts
누구에게 적합한가?
적합
부적합
새 프로젝트 시작
기존 대규모 Node.js 마이그레이션
TypeScript 우선
CommonJS 레거시 다수
보안 중시 (의존성 감사)
npm 생태계 100% 의존
올인원 도구 원함
기존 ESLint·Prettier 설정 유지
최신 웹 표준 (Fetch, URL 등)
엔터프라이즈 안정성 최우선
의의
1. "창시자가 자기 작품을 비판하고 다시 만들었다"
- 기술 겸손의 모범 사례
- Node.js의 10가지 후회 → Deno로 해결
2. Secure-by-Default의 가치
- npm 공급망 공격 빈번한 시대
- 기본 접근 차단 = 보안 패러다임 전환
3. TypeScript = 새로운 기본
- 설정 없이 바로 사용
- 타입 안전성이 기본인 런타임
4. 올인원 도구 체인 트렌드
- 포매터·린터·테스트·번들러 내장
- 별도 설치·설정 시간 제거
- [[Rob Pike 프로그래밍 5가지 규칙]] 규칙 4: "단순함이 답"