TypeScript 파일을 변환 없이 바로 실행하고, 웹 표준 API로 서버를 구축하는 방법
브라우저 밖에서도 Request나 Response 같은 웹 표준 객체를 그대로 쓰고, TypeScript 코드를 별도의 빌드 과정 없이 바로 실행할 수 있습니다. Deno는 V8 엔진과 Rust, Tokio 위에 지어진 실행 환경으로, JavaScript와 WebAssembly를 처리합니다. 기본 설정이 안전하도록 설계되어 있어, 네트워크나 파일 시스템 접근을 명시적으로 허용해야만 동작합니다.
권한을 명시적으로 허용하는 실행 방식
Deno는 프로그램이 필요한 권한을 실행 시점에 명시적으로 지정해야 하는 방식을 취합니다. 예를 들어 네트워크에 접근하려면 --allow-net 옵션을 붙여야 하며, 이를 생략하면 서버가 시작되지 않습니다. 이러한 설계는 의도치 않은 외부 통신이나 파일 읽기 쓰기를 막아줍니다. 또한 브라우저에서 사용하는 Request, Response 같은 객체를 그대로 지원하므로, 웹 서버를 만들 때 별도의 라이브러리 없이 표준 API만으로 코드를 작성할 수 있습니다.
첫 서버를 띄우는 과정
TypeScript 파일 하나만 만들면 웹 서버를 구동할 수 있습니다. server.ts 파일에 Deno.serve 함수를 사용해 요청을 처리하고 응답을 반환하는 코드를 작성합니다. 이 파일을 deno run --allow-net server.ts 명령으로 실행하면, 로컬 포트 8000에서 서버가 올라옵니다. 별도의 빌드 단계나 패키지 매니저 설정 없이 바로 실행되는 점이 특징입니다.
설치 방법과 지원 플랫폼
Mac과 Linux에서는 Shell 명령으로, Windows에서는 PowerShell 명령으로 설치할 수 있습니다. Homebrew, Chocolatey, WinGet, Scoop 같은 패키지 매니저를 통해서도 설치 가능합니다. 소스에서 직접 빌드하는 방법도 문서에 자세히 나와 있습니다. 설치 후에는 deno 명령어를 통해 프로그램을 실행하거나 관리할 수 있습니다.
함께 쓰는 생태계
공식 문서와 표준 라이브러리가 제공되어 일반적인 유틸리티 기능을 쉽게 사용할 수 있습니다. JSR이라는 오픈소스 패키지 레지스트리도 함께 운영되어, 최신 JavaScript와 TypeScript 패키지를 공유하고 가져올 수 있습니다. 개발자 블로그에서는 제품 업데이트와 튜토리얼을 정기적으로 발행합니다.
기존 프로젝트 이식 시 고려할 점
Deno는 Node.js와 다른 권한 모델과 모듈 시스템을 사용하므로, 기존 Node.js 프로젝트의 코드를 그대로 가져와 실행하기는 어렵습니다. 웹 표준 API를 기반으로 코드를 작성하거나, Deno 전용 API를 사용할 수 있어야 합니다. 또한 특정 네이티브 모듈이나 Node.js 전용 패키지가 필요한 프로젝트에는 적합하지 않을 수 있습니다. 새로운 프로젝트나 웹 표준을 따르는 서버를 만들 때 고려해볼 만한 도구입니다.