본문 바로가기
C.W.K.
Stream
Lesson 06 of 06 · published

Deno·Bun·Edge에서는 SDK보다 런타임 제약을 먼저 봐

~12 min · deno, bun, edge, cross-runtime

Level 0Observer
0 XP0/64 lessons0/13 achievements
0/150 XP to next level150 XP to go0% complete

Bun은 Node 프로젝트와 거의 같은 길이야

bun add @anthropic-ai/sdk로 설치하고 bun run app.ts로 실행할 수 있어. 별도 설정 없이 동작하는 경우가 많고 TypeScript를 바로 처리해 개발 흐름이 단순해져. 그래도 운영에 쓰는 API와 스트리밍 경로는 Bun 버전에서 직접 시험해야 해.

Deno는 가져오기와 권한을 드러내

Deno에서는 import Anthropic from "npm:@anthropic-ai/sdk";처럼 npm: 지정자를 써. 네트워크에는 --allow-net=api.anthropic.com, 환경변수에는 --allow-env처럼 필요한 권한만 열 수 있어. 실행 명령 자체가 보안 경계를 설명해 주는 셈이야.

Workers와 Vercel Edge는 웹 표준만 믿어

둘 다 V8 격리 환경이라 스트리밍과 도구 사용은 되지만 Node 전용 파일 스트림이나 Files API 도우미는 쓸 수 없어. Node에서 통과한 시험이 다른 런타임의 보증서가 되지는 않아. 실제 배포 런타임에서 사용하는 코드 경로를 따로 검증해.

원칙: 지연과 필요한 기능으로 런타임을 고르고, 그 런타임에서 SDK의 해당 경로를 직접 시험해.

Code

Bun 스크립트 (zero config)·typescript
// app.ts
import Anthropic from '@anthropic-ai/sdk';

const client = new Anthropic();
const r = await client.messages.create({
  model: 'claude-haiku-4-5-20251001',
  max_tokens: 64,
  messages: [{ role: 'user', content: 'bun says hi' }],
});
console.log(r.content);

// 실행: bun run app.ts
권한 명시한 Deno·typescript
// deno-app.ts
import Anthropic from 'npm:@anthropic-ai/sdk';

const client = new Anthropic({
  apiKey: Deno.env.get('ANTHROPIC_API_KEY'),
});
const r = await client.messages.create({
  model: 'claude-haiku-4-5-20251001',
  max_tokens: 64,
  messages: [{ role: 'user', content: 'deno says hi' }],
});
console.log(r.content);

// 실행: deno run --allow-net=api.anthropic.com --allow-env deno-app.ts

External links

Exercise

같은 최소 Messages 스크립트를 Node·Bun·Deno에서 실행해. 각 런타임에 필요했던 권한과 설정을 기록하고 운영에 쓸 하나를 골라 이유를 한 문장으로 써.
Hint
이미 잘 아는 런타임이라 고르는 것도 운영 비용을 줄이는 정당한 이유야.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.