Skip to content

필사 모드: Node.js & Bun & Deno 백엔드 프레임워크 2026 완벽 가이드 - Hono · Fastify · Express 5 · NestJS 11 · Elysia · tRPC · Encore TS · h3 · Effect 심층 분석

한국어
0%
정확도 0%
💡 왼쪽 원문을 읽으면서 오른쪽에 따라 써보세요. Tab 키로 힌트를 받을 수 있습니다.
원문 렌더가 준비되기 전까지 텍스트 가이드로 표시합니다.

프롤로그 — "Node만 알면 백엔드는 끝"이라는 시대는 끝났다

2018년쯤 누가 "JavaScript로 백엔드 짠다" 그러면 의문의 여지 없이 Node.js + Express였다. 2026년에 같은 말을 들으면 적어도 일곱 가지를 되묻는다. "런타임은? Node 22 LTS냐, 24냐, Bun이냐, Deno냐? 엣지냐 origin이냐? Hono야 Fastify야? ORM은 Prisma야 Drizzle이야? tRPC 끼냐? Encore TS 같은 인프라형으로 가냐? Effect까지 쓰냐?" 답에 따라 아키텍처가 완전히 갈린다.

이 글은 2026년 5월 현재 시점에서 Node.js · Bun · Deno 백엔드 프레임워크 생태계의 지도를 그린다. 런타임 차이부터 프레임워크 비교, ORM과 검증 라이브러리, 큐와 워커, 인증, 로깅, WebSocket, 클라우드 배포까지 전체를 훑는다. 마지막에 토스 · 쿠팡 · 카카오페이 · Mercari · LINE Yahoo · DeNA · freee 등 한국·일본 기업의 실제 채택 사례를 묶는다.

1장 · 2026년 JavaScript 런타임 전쟁의 지형도

먼저 런타임 자체. 2026년에는 다음 네 가지가 동시에 production에서 굴러간다.

| 런타임 | 엔진 | 강점 | 약점 |

| --- | --- | --- | --- |

| Node.js 22 LTS / 24 | V8 | 생태계, 안정성, npm 호환 100% | 시작이 느리다, 콜드 스타트 |

| Bun 1.2+ | JSC (JavaScriptCore) | 빠른 시작, 번들러·테스트 내장 | 일부 네이티브 모듈 호환성 |

| Deno 2 | V8 | 보안 우선, TS 네이티브, 표준 라이브러리 | npm 호환은 호환일 뿐 |

| Cloudflare Workers | V8 isolate | 콜드 스타트 0ms급, 글로벌 분산 | Node API 일부 미지원, CPU 제한 |

여기에 Vercel Edge Functions, Netlify Edge Functions(Deno), AWS Lambda@Edge, Deno Deploy 같은 서버리스/엣지 변형이 더 붙는다. **하나의 정답이 없다.** 워크로드, 팀, 비용, 콜드 스타트 민감도가 모두 다르다.

핵심 변화는 두 가지다. 하나, **엣지 런타임이 production 1급 시민이 됐다**. Cloudflare Workers는 글로벌 320+ POP에서 V8 isolate를 굴리며 50ms TTFB를 일상으로 만든다. 둘, **Bun과 Deno가 더 이상 실험이 아니다**. Bun 1.2는 Vercel 일부 인프라와 Discord 일부 서비스에서 production에서 돌고, Deno 2는 Netlify의 엣지 런타임으로 매일 수십억 요청을 처리한다.

2장 · Node.js 22 LTS / 24 — 여전히 디폴트, 그러나 진화

2025년 말 Node 22가 active LTS로 자리 잡고 Node 24가 current가 되면서 표준 라인업이 바뀌었다. 새로 들어온 것들을 추리면.

- **내장 테스트 러너** (`node:test`) — Jest 없이도 단위 테스트 가능. 2024년에 stable이 됐고, 2026년에는 mock·snapshot·coverage까지 들어와서 작은 프로젝트는 의존성 없이 끝낸다.

- **`--watch` 모드** — nodemon 없이 파일 변경 감지 재시작. 개발 워크플로에서 의존성 하나가 빠진다.

- **내장 `.env` 로딩** (`--env-file`) — dotenv 없이도 환경변수 파일 적재.

- **fetch / WebStreams / FormData 내장** — `node-fetch` 같은 폴리필 다 필요 없다.

- **Permission Model**(실험적) — `--allow-fs-read=/etc` 같은 식으로 Deno 스타일 권한 제어.

- **WebSocket 클라이언트 내장** — Node 22부터.

- **Test Reporter API**, **Custom ESM Loaders 안정화**, **WASI 안정화**.

여전히 Node.js의 강점은 **npm 패키지 200만 개 호환**과 **Production 검증**. Netflix · PayPal · LinkedIn · Uber · Walmart · Goldman Sachs · NASA가 메인 백엔드로 쓰는 곳이다. 보수적인 팀이라면 Node 22 LTS가 2027년 4월까지 유지보수되므로 안전한 디폴트.

3장 · Bun 1.2+ — JSC 기반의 야심작

Bun은 Jarred Sumner가 만든 JSC(Safari 엔진) 기반의 JavaScript 런타임 + 패키지 매니저 + 번들러 + 테스트 러너 + 셸. 2024년 1.0이 나왔고, 2026년 5월 기준 1.2.x가 안정 채널.

Bun의 매력은 명확하다.

- **시작 시간**: Node 대비 약 4배 빠른 콜드 스타트.

- **`bun install`**: npm 대비 약 20배 빠른 설치(캐시 적중 시 더).

- **번들러**: esbuild 수준의 속도로 TS · JSX · CSS · WASM 처리.

- **`bun test`**: Jest 호환 API로 더 빠른 실행.

- **`Bun.serve()`**: 내장 HTTP 서버, 약 3배 throughput.

- **SQLite 내장** (`bun:sqlite`), **password hashing 내장**, **ffi 내장**.

약점도 분명하다.

- **네이티브 모듈 호환성**: `node-gyp`로 빌드되는 일부 패키지는 여전히 트러블.

- **Cluster API 부분 지원**, 일부 `process` 이벤트 차이.

- **production 검증**이 Node만큼은 아니다 — 단, 2025년 후반부터 Vercel, Discord, Tigris 등이 일부에서 사용.

**언제 Bun을 고르나**: 모노레포 빌드 속도가 병목일 때, 콜드 스타트가 중요한 서버리스 시나리오에서 Workers는 안 맞을 때, Elysia 같은 Bun 우선 프레임워크를 쓰고 싶을 때.

4장 · Deno 2 — 보안 우선, 표준 우선

Ryan Dahl(Node 창시자)이 Node의 "후회"를 모아 다시 만든 런타임. 2024년 Deno 2.0이 나오면서 큰 분기점이 됐다 — **npm 호환**이 들어왔기 때문이다.

Deno의 디자인 원칙.

1. **보안 우선** — 기본적으로 파일·네트워크·환경변수 접근이 차단. `--allow-net`, `--allow-read` 등 명시적 권한 부여.

2. **TypeScript 네이티브** — 트랜스파일 없이 `.ts` 직접 실행.

3. **표준 라이브러리** — `@std/http`, `@std/fs`, `@std/crypto`처럼 검증된 표준 라이브러리.

4. **단일 실행 파일** — `deno compile`로 자기 완결 바이너리 출력.

5. **JSR**(JavaScript Registry) — TS 우선 모듈 레지스트리.

2026년 기준 Deno의 진짜 강점은 **Deno Deploy** 플랫폼과 **Netlify Edge Functions**(Deno 기반)에서 가장 잘 드러난다. 글로벌 분산 V8 isolate에 TypeScript를 그대로 올리는 경험은 매우 매끄럽다.

약점은 **npm 패키지 호환이 잘 된다고는 해도 100%는 아니다**라는 점, 그리고 **Express 같은 일부 레거시 미들웨어가 Deno에서는 곡예를 부려야 돈다**는 것. 대신 Hono, Oak, Fresh 같은 Deno 친화 프레임워크가 잘 자리 잡았다.

5장 · Cloudflare Workers — 엣지 V8 isolate의 황금기

Workers는 Node나 Bun 같은 "런타임"이라기보다 **실행 모델 자체가 다르다**. 컨테이너 위 Node 프로세스가 아니라, V8 isolate를 글로벌 320+ POP에서 즉시 띄운다. 그래서 콜드 스타트가 사실상 0에 수렴한다.

2026년 Workers 생태계의 핵심.

- **Workers + Durable Objects** — 글로벌 분산 상태 머신. WebSocket·세션·실시간 동기화에 강력.

- **Workers KV / R2 / D1** — 키-값·오브젝트 스토리지·SQLite 기반 글로벌 DB.

- **Workers Queues** — 비동기 작업 큐, BullMQ의 엣지 대안.

- **Workers AI** — 엣지 LLM 추론(Llama·Mistral 등).

- **Workers Smart Placement** — 자동으로 origin과 가까운 POP에서 실행.

제약도 있다. **CPU 시간 50ms(무료 플랜) / 30s(유료) 제한**, **Node API 부분 지원**(`nodejs_compat` 플래그로 호환성 ON), **메모리 128MB**. 무거운 ML 추론이나 긴 trace 처리는 못 한다.

**Hono가 사실상 표준**이 됐다. Cloudflare 자체가 Hono를 워커 데모와 문서에 쓰고, Honojs/hono 저장소도 Cloudflare 직원들이 contributor로 들어가 있다.

6장 · Hono 4 — 엣지 우선, 멀티 런타임의 승자

Hono(炎, 일본어로 "불꽃")는 일본 Yusuke Wada가 만든 프레임워크. **Cloudflare Workers, Deno, Bun, Node.js, Vercel, AWS Lambda, Fastly Compute@Edge에서 같은 코드로 돈다**는 게 결정적 강점.

const app = new Hono()

app.get('/', (c) => c.text('Hello Hono!'))

app.get('/users/:id', (c) => {

const id = c.req.param('id')

return c.json({ id, name: 'Alice' })

})

export default app

특징.

- **Web Standards 기반**: Request/Response/fetch API 위에서 동작. 런타임 종속이 없다.

- **빠르다**: Workers에서 Express 대비 약 5배, Node에서 Fastify 수준.

- **타입 안전**: end-to-end 타입(`hono/client`)로 클라이언트도 서버 타입을 그대로 추론.

- **미들웨어 풍부**: JWT · OAuth · CORS · Compression · Cache · Logger · Bearer · Basic Auth 다 내장.

- **RPC 모드**(`hono/rpc`): tRPC 스타일의 타입 안전 호출.

- **Validator** 통합: Zod · Valibot · ArkType · TypeBox · class-validator 다 지원.

2026년 Hono는 **엣지 우선 프레임워크의 사실상 표준**이다. Cloudflare 공식 데모, Vercel 문서, Deno Deploy 가이드 모두 Hono를 예시로 쓴다.

7장 · Fastify 5 — Node에서 가장 빠른 정통파

Hono가 엣지의 왕이라면, **Node 런타임에서는 Fastify 5가 성능 챔피언**이다. Express와 같은 미들웨어 모델이지만 훨씬 빠르고 타입 친화적.

- **TechEmpower 벤치마크** Node 부문 상위 — Express의 약 2배 throughput.

- **JSON 스키마 기반 직렬화**: fast-json-stringify로 응답 직렬화가 약 2배 빠르다.

- **Encapsulation 모델**: 플러그인 격리로 큰 코드베이스에서도 깔끔.

- **Pino 로깅 내장**: 가장 빠른 Node 로거가 디폴트.

- **TypeBox 통합**: JSON Schema와 TS 타입을 동시에.

- **Fastify v5 (2024)** — Node 20+ 요구, ESM 우선, async 미들웨어 100%, 더 엄격한 스키마.

언제 Fastify를 고르나: **Node origin 서버에서 throughput이 중요할 때**, **OpenAPI 자동 생성이 필요할 때**(@fastify/swagger), **마이크로서비스 다수가 작은 Fastify 앱들로 구성될 때**.

쿠팡이 Express에서 Fastify로 일부 서비스를 마이그레이션한 사례가 2024년 컨퍼런스에서 소개됐다. throughput 40% 개선, p99 latency 30% 감소.

8장 · Express 5 — 10년 만의 GA, 그래도 살아있다

Express 5.0은 2014년에 처음 알파가 나오고서 **거의 10년 만인 2024년 9월에 stable**이 됐다. 5.1.x가 2025년에 따라 나왔다.

5.0의 핵심 변화.

- **async/await 정식 지원** — 미들웨어가 reject한 promise를 자동으로 next(err)로 전달.

- **path-to-regexp v6** — 라우트 정규식 처리 개선, 보안 픽스(ReDoS 방어).

- **req.host / req.protocol** 동작 정규화.

- **Node 18+ 요구**.

여전히 **세계에서 가장 많이 쓰이는 Node 프레임워크**다. 다운로드 수, 의존 패키지 수, 튜토리얼·강의·StackOverflow 답변 수 모두 1위. 학습 자료가 무한해서 **신입 백엔드 첫 프로젝트로는 여전히 좋은 선택**.

약점은 분명하다. **성능 면에서 Fastify·Hono에 밀린다**, **타입 지원이 별도(`@types/express`) 필요하다**, **OpenAPI 자동화가 별도 라이브러리(express-openapi-validator)에 의존**. 신규 production 시작에서 Express를 굳이 고를 이유는 점점 줄고 있다.

9장 · Koa.js — async 미들웨어의 원조

TJ Holowaychuk(Express의 원작자)이 만든 후속작. 2026년 기준 Koa 2.x가 안정. async/await 미들웨어를 처음으로 깔끔하게 한 프레임워크.

const app = new Koa()

app.use(async (ctx, next) => {

const start = Date.now()

await next()

const ms = Date.now() - start

ctx.set('X-Response-Time', `${ms}ms`)

})

app.use(async (ctx) => {

ctx.body = 'Hello Koa'

})

app.listen(3000)

- **미들웨어가 함수 단위 onion 모델**: `await next()` 앞뒤로 자연스럽게 전후 처리.

- **`ctx` 객체에 모든 게 모임** — req/res 분리 안 함.

- **Express보다 작고 가볍다** — 익숙해지면 코드가 깔끔.

2026년 채택률은 줄었다. Hono · Fastify · Express 5가 비슷한 추상화를 제공하면서 굳이 Koa를 새로 선택할 이유가 옅어졌다. 다만 **Strapi**, **Egg.js**, **Sails** 같은 메타 프레임워크가 Koa 위에 있어서 간접 사용자는 여전히 많다.

10장 · NestJS 11 — Angular 스타일 의존성 주입

NestJS는 Kamil Mysliwiec이 만든 엔터프라이즈 지향 프레임워크. Angular의 데코레이터·모듈·DI 패턴을 백엔드에 그대로 가져왔다. **2025년 후반에 v11이 안정화**.

@Controller('users')

class UsersController {

@Get(':id')

findOne(@Param('id') id: string) {

return { id, name: 'Alice' }

}

}

@Module({ controllers: [UsersController] })

export class AppModule {}

특징.

- **모듈·컨트롤러·서비스·프로바이더** 패턴 — Spring Boot나 ASP.NET 같은 큰 코드베이스의 구조를 그대로.

- **DI 컨테이너** — 생성자 주입, 인터페이스 기반 테스트.

- **마이크로서비스 빌트인** — Redis · NATS · Kafka · gRPC · MQTT 트랜스포트.

- **GraphQL · WebSocket · Swagger · Auth · Caching** 모두 1급 모듈.

- **CLI 기반 코드 생성** — `nest g module users` 등.

NestJS v11 변화.

- **Express v5 / Fastify 5 동시 지원** — 어댑터 선택 가능.

- **Node 20+ 요구**.

- **`SWC` 빌드 디폴트** — TypeScript 컴파일 약 20배 빠름.

언제 NestJS를 고르나: **팀이 클 때**, **DI·테스트·문서 자동화 같은 엔터프라이즈 요구가 있을 때**, **모노레포에서 마이크로서비스를 다수 굴릴 때**. 너무 크다 싶으면 Hono · Fastify 같은 가벼운 쪽이 낫다.

11장 · AdonisJS 6 — JavaScript의 Laravel

Harminder Virk가 만든 풀스택 MVC 프레임워크. Laravel의 디자인을 거의 그대로 가져왔고, 2024년 v6에서 ESM과 TypeScript 우선으로 재정비됐다.

특징.

- **Lucid ORM**(Active Record), **Edge** 템플릿 엔진, **Auth · Mail · Session · Validation · Queue** 다 내장.

- **CLI 풍부**: `node ace make:controller`, `node ace migration:run` 등.

- **풀스택**: Inertia.js 통합으로 React/Vue 프론트엔드도 쉽게.

- **Routing**: 라우트 그룹, 미들웨어, 리소스 라우팅.

Hono · Fastify가 "조립형"이라면 AdonisJS는 "완성형". Laravel 출신 개발자가 Node로 넘어올 때 가장 익숙한 선택. 2026년에도 인도 · 동유럽 · 남미 커뮤니티에서 활발하다.

12장 · Elysia — Bun 네이티브, end-to-end 타입

Elysia는 SaltyAom이 만든 Bun 우선 프레임워크. **Bun 위에서 최고의 throughput**을 내고, **타입 추론이 Hono보다 더 정밀**하다.

const app = new Elysia()

.get('/users/:id', ({ params }) => ({ id: params.id, name: 'Alice' }), {

params: t.Object({ id: t.String() }),

})

.listen(3000)

export type App = typeof app

특징.

- **TechEmpower 벤치마크 상위** — 일부 시나리오에서 Hono · Fastify를 앞서기도.

- **Eden** — tRPC 스타일 타입 안전 클라이언트. 위의 `App` 타입을 import하면 자동 추론.

- **TypeBox 기반 validation** — JSON Schema 동시 생성.

- **Plugin 시스템** — Swagger · JWT · Cors · Static · WebSocket 다 있음.

- **AOT 컴파일** — 라우트를 정적으로 분석해 빠르게.

약점: **Bun 종속**. Node·Deno에서 직접 못 돈다. 그래서 "Bun을 쓸 거면 Elysia, 아니면 Hono"가 2026년 통상 결론.

13장 · h3 / Nitro / UnJS — Vue/Nuxt의 백엔드 엔진

**UnJS**는 Pooya Parsa가 이끄는 Vue/Nuxt 생태계의 유니버설 라이브러리 집합. 그 중심에 **h3**(HTTP 프레임워크)와 **Nitro**(서버 엔진)가 있다.

- **h3** — 미니멀 HTTP 프레임워크. Express와 비슷한 핸들러 모델인데 멀티 런타임 호환.

- **Nitro** — h3 위에서 도는 풀 서버 엔진. 라우팅 · 자산 · 캐시 · 스토리지 · 작업 · 미들웨어 · 어댑터를 묶어 Node · Bun · Deno · Workers · Lambda · Netlify · Cloudflare로 빌드.

Nuxt 3·4의 서버 부분은 Nitro다. SolidStart, Analog 같은 다른 메타 프레임워크도 Nitro 위에서 돈다. **백엔드만 단독으로 쓰고 싶을 때**도 `nitropack`만 가져와 쓸 수 있다.

매력은 **하나의 코드베이스로 모든 런타임 타깃**이라는 점. 약점은 Hono 대비 인지도와 자료가 적다는 점.

14장 · Encore TS — 인프라까지 코드로

Encore는 Marcus Kohlberg가 시작한 백엔드 프레임워크 + 인프라. **선언한 자원이 자동으로 클라우드에 프로비저닝**되는 게 다른 프레임워크와의 결정적 차이.

const db = new SQLDatabase('users', { migrations: './migrations' })

export const getUser = api(

{ expose: true, method: 'GET', path: '/users/:id' },

async ({ id }: { id: string }) => {

const row = await db.queryRow`SELECT * FROM users WHERE id = ${id}`

return row

},

)

- **데이터베이스 · 큐 · pub-sub · 캐시 · cron**을 코드로 선언만 하면 인프라가 자동 생성.

- **로컬 개발**: Docker 컨테이너로 모든 의존성 자동 띄우기.

- **type-safe RPC**: 함수 호출이 곧 API 호출.

- **트레이싱 · 메트릭 · 로그 자동 수집**.

- **Encore Cloud Platform**(유료) 또는 **자체 클라우드(AWS · GCP)** 배포.

언제 Encore를 고르나: **DevOps 인력이 부족한 작은 팀**, **인프라 표준화하고 싶은 스타트업**. 약점은 **lock-in 인상**과 **세밀한 인프라 제어 부족**.

15장 · Effect — 함수형 TypeScript의 야망

Effect-TS는 Michael Arnaldi가 이끄는 함수형 TS 생태계. Scala의 ZIO · Haskell의 IO 모나드 아이디어를 TypeScript로 가져왔다.

특징.

- **`Effect.gen` / `Effect.pipe`**: 비동기 오류 처리·재시도·타임아웃·취소를 타입으로 표현.

- **Schema**: Zod 대안. 더 풍부한 타입 추론과 변환.

- **Services & Layers**: DI 컨테이너 + 의존성 합성.

- **Stream / Queue / Hub**: 구조화된 동시성.

- **HttpApi**: Effect 기반 HTTP 서버 프레임워크.

const getUser = (id: string) =>

pipe(

Effect.tryPromise(() => fetch(`/users/${id}`)),

Effect.flatMap((res) => Effect.tryPromise(() => res.json())),

Effect.retry({ times: 3 }),

Effect.timeout('5 seconds'),

)

학습 곡선은 가파르다. 하지만 **복잡한 비동기 워크플로**(결제·orchestration·외부 API 다수 호출)에서는 try/catch 지옥보다 훨씬 명료해진다. 2026년에 점점 많이 보이지만, 팀 전원이 함수형에 익숙해야 한다.

16장 · tRPC 11 — end-to-end 타입 안전 RPC

tRPC는 Alex / KATT가 만든 RPC 프레임워크. **GraphQL의 타입 안전성을 schema 없이** 달성하는 게 핵심.

const t = initTRPC.create()

export const appRouter = t.router({

getUser: t.procedure

.input(z.object({ id: z.string() }))

.query(({ input }) => ({ id: input.id, name: 'Alice' })),

})

export type AppRouter = typeof appRouter

클라이언트에서 `AppRouter` 타입만 import하면 호출이 완전히 타입 안전.

- **v11(2024 후반)**: React Server Components 1급 지원, signal 기반 구독, fetch 어댑터.

- **Next.js · Express · Fastify · Hono · Nuxt** 어댑터.

- **subscriptions**: WebSocket / SSE.

- **batch · prefetch · 캐시** 1급.

**Next.js / Nuxt 모노레포에서 백엔드와 프론트를 같이 짤 때** 강력. 다른 언어 클라이언트나 외부 공개 API에는 안 맞는다 — 그건 OpenAPI/GraphQL의 자리.

17장 · 검증 라이브러리 — Zod · Valibot · ArkType · TypeBox

API 입력 검증과 타입 추론은 2026년 백엔드의 핵심 결정 중 하나.

| 라이브러리 | 모델 | 강점 | 약점 |

| --- | --- | --- | --- |

| Zod 3.x | object-builder | 생태계 1위, Hono · tRPC · Fastify 1급 | 트리쉐이킹 약함, 번들 크기 |

| Valibot | 모듈러 | 트리쉐이킹·번들 크기 약 10배 작음 | 생태계 작음 |

| ArkType | 타입 표현식 | 추론 빠르고, 표현이 TS-native | 학습 곡선 |

| TypeBox | JSON Schema | 표준 JSON Schema 동시 생성, Fastify 디폴트 | API가 verbose |

| Joi | 클래스 | 성숙, hapi 표준 | 타입 추론 약함 |

| Yup | 클래스 | React 폼 친화 | 백엔드에서는 줄어듦 |

**디폴트는 여전히 Zod**. 단, 번들 크기가 결정적일 때(엣지 · 모바일 동기 코드 공유)는 Valibot, 성능이 결정적일 때는 ArkType, OpenAPI 자동 생성이 중요할 때는 TypeBox.

18장 · ORM 전쟁 — Prisma 6 vs Drizzle 0.40

2025~2026년 가장 뜨거운 비교. 두 ORM은 철학이 완전히 다르다.

**Prisma 6**.

- **선언적 schema** (`schema.prisma`) — 별도 DSL.

- **migrate · introspect · studio** 등 풍부한 toolchain.

- **type-safe 쿼리** 자동 생성.

- **모든 메이저 DB 지원** — Postgres · MySQL · SQLite · MongoDB · CockroachDB · MS SQL.

- **단점**: 엣지 런타임에서 무겁다(별도 엔진 바이너리), 마이그레이션 lock-in.

**Drizzle ORM 0.40**.

- **TypeScript-first schema** — `.ts` 파일에서 직접 정의.

- **SQL에 가까운 빌더** — 학습 곡선 낮음.

- **번들 작고 엣지 친화** — Cloudflare D1 · Vercel Postgres · Turso의 사실상 표준.

- **단점**: Prisma만큼 풍부한 tooling은 아직.

**언제 Prisma**: 큰 모노레포, MongoDB 같은 다양한 백엔드, 마이그레이션 자동화 중심. **언제 Drizzle**: 엣지 배포, Workers · Vercel · Neon · Turso, SQL이 익숙한 팀.

추가로 **Kysely**(타입 안전 SQL 빌더, 가장 얇다), **MikroORM 6**(Unit of Work 패턴, 엔터프라이즈), **TypeORM 0.3**(데코레이터 기반, 점유율 하락), **Sequelize 6**(레거시), **Objection.js / Bookshelf / Knex**(쿼리 빌더 + 가벼운 ORM)도 여전히 활동.

19장 · API 패턴 — REST · GraphQL · tRPC · gRPC · OpenAPI

| 패턴 | 강점 | 약점 |

| --- | --- | --- |

| REST + OpenAPI | 보편성, 캐시, 도구 풍부 | over-fetching, 다중 라운드트립 |

| GraphQL | 단일 엔드포인트, 클라이언트 주도 페치 | 캐시 어려움, N+1, 복잡 |

| tRPC | TS end-to-end 타입, 보일러플레이트 적음 | TS-only, 외부 공개 어려움 |

| gRPC + Protobuf | 양방향 스트리밍, 다언어, 효율 | 브라우저 직접 호출 어렵다 |

| JSON-RPC | 단순, 메시지 큐 친화 | 도구 빈약 |

2026년의 실무 트렌드: **외부 공개 API는 REST + OpenAPI**, **내부 마이크로서비스는 gRPC**, **모노레포 풀스택은 tRPC**, **공개 그래프 API는 GraphQL**, **이벤트/RPC는 JSON-RPC 또는 NATS**. 하나로 통일하려 하지 말고 경계마다 맞는 걸 고른다.

20장 · 작업 큐 — BullMQ · Cloudflare Queues · Inngest

비동기 작업, 재시도, 백오프, 스케줄링이 필요한 곳.

**BullMQ**(Redis 기반).

- 가장 널리 쓰이는 Node 작업 큐. 우선순위 · 재시도 · rate limit · sandbox · UI(Bull Board)까지.

- **약점**: Redis 의존, 자체 운영 필요.

**Cloudflare Queues**.

- Workers 네이티브. 자체 운영 없이 글로벌 분산.

- **약점**: Cloudflare 생태계 lock-in.

**Inngest**(durable workflow 전문).

- 별도 글에서 다룬 durable functions 플랫폼. step 함수 단위로 자동 재시도 · 영속.

- **약점**: 외부 서비스 lock-in, 자체 호스팅 가능하지만 운영 복잡.

추가: **Hatchet**(self-hostable durable workflow, Postgres 기반), **Trigger.dev**(워커 기반 + UI), **Temporal**(다른 언어와 함께 쓸 때) — 자세한 비교는 별도 글 참고.

21장 · 인증 — Auth.js v5 · Lucia v3 · better-auth

OAuth, JWT, 세션. 2026년 풍경.

- **Auth.js v5 (구 NextAuth)** — Next.js와 강하게 통합, OAuth provider 80+.

- **Lucia v3** — 세션 기반, DB 직접 제어. 가볍고 명시적.

- **better-auth** — 2024년 후반에 떠오른 type-first 인증 라이브러리. OAuth · 2FA · 매직링크 · API key 다 내장.

- **Clerk · Auth0 · Stytch · WorkOS** — 호스티드 IDP.

선택 기준: **풀스택 모노레포라면 Auth.js or better-auth**, **백엔드 단독에 명시적 세션이 필요하면 Lucia**, **운영 부담을 외주하고 싶으면 Clerk/WorkOS**.

22장 · 테스트 — Vitest · Jest 30 · node test · Bun test · Playwright

| 도구 | 강점 |

| --- | --- |

| Vitest | Vite 네이티브, watch 모드 빠름, Jest 호환 API |

| Jest 30 | 가장 성숙, 자료 풍부, mock 강력 |

| node test | 의존성 zero, 빠른 CI |

| Bun test | Bun 위에서 가장 빠름 |

| Playwright | E2E, 브라우저 자동화 |

2026년 신규 프로젝트에서는 **Vitest가 디폴트**가 됐다. CI 환경에서는 **node test**도 점점 많이 쓰인다. E2E는 **Playwright가 사실상 표준**(Cypress 대비 멀티 브라우저 · 더 빠름).

23장 · 로깅 — Pino · Winston · Bunyan

Node 백엔드의 로깅 3대장.

- **Pino**: 가장 빠른 Node 로거. JSON 직렬화 최적화, Fastify 디폴트. 별도 transport(pino-pretty · pino-elasticsearch).

- **Winston**: 가장 풍부한 transport. file · console · http · syslog · 다양한 외부 서비스. 성능은 Pino보다 떨어짐.

- **Bunyan**: JSON 우선, CLI 도구 좋음. 인기는 줄었지만 일부 회사가 표준으로 유지.

2026년의 통상 선택: **새 프로젝트면 Pino**, **다양한 외부 sink가 필요하면 Winston**. 거기에 OpenTelemetry로 분산 트레이싱.

24장 · WebSocket — ws · uWebSockets.js · Socket.io · Hono WS

| 라이브러리 | 강점 | 언제 |

| --- | --- | --- |

| ws | 가장 단순, RFC6455 직접 | 저수준 WS, 직접 프로토콜 |

| uWebSockets.js | 가장 빠름(C++ 바인딩) | 수십만 동시 연결 |

| Socket.io 4.8 | room · ack · 재연결 · pub-sub 어댑터 | 클라이언트도 같은 라이브러리 |

| Hono WebSocket | Workers · Bun · Node 멀티 런타임 | 엣지에서 WS |

| Bun.serve WS | Bun 네이티브 빠름 | Bun 전용 |

Discord는 약 1억 동시 연결을 Elixir + Rust에서 처리하면서, 일부 API는 Node + Socket.io 기반. uWebSockets.js는 일부 거래소 · 게임 회사에서 쓴다.

25장 · 클라우드 배포 — Vercel · Workers · Lambda · Render · Railway · Fly.io

2026년 백엔드 배포 옵션.

- **Vercel**: Next.js 일급, Edge + Node + Python 다 지원. PR 단위 미리보기 환경.

- **Cloudflare Workers**: 엣지의 왕. Hono · Itty Router · Sveltekit 잘 어울림.

- **AWS Lambda**: 가장 보편적. SAM · CDK · Serverless Framework로 IaC.

- **Render**: Heroku 후계. Docker · Postgres · cron · queue까지 일관.

- **Railway**: 개발자 경험 좋은 PaaS. GitHub → 배포 즉시.

- **Fly.io**: 글로벌 Docker. Postgres · Redis 함께. 일본·한국 region 있음.

언제 무엇을 고르나.

- **풀스택 SaaS 신규**: Vercel + Neon/Supabase + Upstash + Inngest.

- **엣지 우선 API**: Cloudflare Workers + D1/R2/KV + Hono.

- **다른 AWS 서비스와 강결합**: Lambda + DynamoDB + SQS.

- **컨테이너 직접 굴리는 게 편함**: Fly.io · Render · Railway.

26장 · 미들티어와 마이너 프레임워크들

빈도가 낮아도 도메인에서 강한 것들.

- **Restify** — REST 우선의 가벼운 프레임워크. Netflix에서 일부 서비스 사용.

- **Polka · Sirv** — 미니멀리스트 라우터. 자체 빌드 도구에 묻혀 다님.

- **Marble.js** — RxJS 기반의 reactive 프레임워크. 함수형 + 스트림.

- **Ts.ED** — 데코레이터 기반. Express/Koa 어댑터.

- **FoalTS** — 풀스택 TS 프레임워크.

- **Feathers** — REST + 실시간 통합.

- **Moleculer** — 마이크로서비스 프레임워크.

이 중 어떤 것을 새로 고를 일은 드물지만, **유지보수 코드에서 만날 수 있으니** 이름과 위치는 익혀두면 도움이 된다.

27장 · 모니터링 · 관측 — OpenTelemetry · Sentry · Datadog · Grafana

2026년 백엔드 관측 스택.

- **OpenTelemetry** — 표준 trace · metric · log 스펙. 사실상 모든 도구가 호환.

- **Sentry** — 에러 트래킹의 표준. 한국·일본에서도 광범위.

- **Datadog · New Relic** — 종합 APM, 비싸지만 풍부.

- **Grafana Stack** — Prometheus + Loki + Tempo. 자체 호스팅 친화.

- **Honeycomb** — 분산 추적 특화, observability 1.0의 사상가.

Node 백엔드라면 `@opentelemetry/sdk-node`로 자동 instrumentation을 깔고, Sentry로 에러를 받아 Grafana나 Datadog에 forward하는 패턴이 흔하다.

28장 · 보안 — Helmet · CSRF · Rate limit · CORS

- **helmet** — 보안 헤더 자동 설정. CSP · HSTS · X-Frame · X-Content-Type 등.

- **csurf**는 deprecated. 2026년에는 **csrf-csrf** 같은 후속 라이브러리 사용.

- **express-rate-limit · @fastify/rate-limit · hono-rate-limiter** — IP / 사용자 단위 rate limiting.

- **CORS** — 정확한 origin · credentials · methods 화이트리스트.

추가로 **OWASP Top 10**(SQL injection · XSS · 인증 결함 · 보안 misconfig 등)을 코드 리뷰 체크리스트로. 2026년에도 어이없는 사고는 대부분 OWASP에 다 적혀있다.

29장 · 한국 기업 채택 사례 — 토스 · 쿠팡 · 카카오페이 · 당근

**토스**(Toss). 결제 백엔드 일부에서 Node + Hono 조합. 글로벌 분산 결제 API의 엣지 라우팅에 Cloudflare Workers + Hono를 쓴다고 2025년 토스 테크 컨퍼런스에서 공개. Slack · 사내 도구 백엔드는 Node + Fastify.

**쿠팡**. 풀필먼트 일부 API를 Express → Fastify로 마이그레이션. 2024년 컨퍼런스 발표 기준 throughput 약 40% 개선, p99 latency 약 30% 감소. 검색 일부 인덱싱 워커는 BullMQ + Node.

**카카오페이**. 백엔드 다수가 Spring Boot이지만, 일부 BFF(Backend for Frontend)는 Node + NestJS. tRPC 패턴으로 프론트와의 결합을 줄임.

**당근**(당근마켓). 채팅 · 알림 등 실시간 영역에서 Node + Socket.io 사용. 최근에는 일부 워커를 Bun으로 실험.

**라인 게임즈 · 카카오게임즈 · 넥슨**. 게임 메타 API 일부에서 Node 사용. WebSocket은 uWebSockets.js나 자체 C++ 서버와 함께.

30장 · 일본 기업 채택 사례 — Mercari · LINE Yahoo · DeNA · freee

**Mercari**. Hono를 만든 Yusuke Wada가 Cloudflare에 합류하기 전 Mercari에서 일했다. Mercari Shops 일부 백엔드는 Hono + Cloudflare Workers. 글로벌 결제 라우팅과 이미지 처리 엣지화에 Workers 사용.

**LINE Yahoo**. 메인 백엔드는 Kotlin · Java이지만, 일부 통합 BFF와 LINE 노벨 같은 신규 서비스에서 Node + NestJS. 일부 광고 시스템 백엔드에서 Bun을 실험.

**DeNA**. 모바일 게임 백엔드 일부에서 Node. 채팅·이벤트 처리에 Socket.io.

**freee**. 회계 SaaS의 일부 API에서 Node + Fastify. OpenAPI 자동 생성을 위해 Fastify + TypeBox 조합.

**Cybozu · CyberAgent · Recruit**. 사내 도구 다수에서 Node + NestJS 또는 Hono. Recruit는 일부 광고 시스템에서 Bun 실험 중.

31장 · 신규 프로젝트 결정 트리

"어떤 걸 쓸까"를 도와줄 의사결정 트리.

1. **풀스택 모노레포(Next/Nuxt)?** → tRPC + Hono/Fastify + Zod + Drizzle.

2. **엣지 우선 API?** → Cloudflare Workers + Hono + Drizzle + D1/Turso.

3. **엔터프라이즈, 큰 팀, DI 필요?** → NestJS 11 + Fastify 어댑터 + Prisma 6 + Class Validator.

4. **Bun 채택 중?** → Elysia + TypeBox + Drizzle.

5. **Laravel 출신?** → AdonisJS 6.

6. **인프라까지 자동?** → Encore TS.

7. **복잡한 비동기 워크플로?** → Effect + Hono.

8. **레거시 Express 유지보수?** → Express 5로 업그레이드, Fastify로 점진 이전 검토.

이건 가이드라인일 뿐, **팀의 친숙도가 가장 큰 변수**다. "최고의 도구" 따위 없다. 팀이 빨리 짤 수 있고 디버깅할 수 있는 도구가 최고의 도구다.

32장 · 안티패턴 — 흔히 보는 실수

- **Express에서 async 에러를 next로 안 넘긴다** — try/catch 없이 await 쓰면 unhandled rejection.

- **Prisma를 엣지에 그대로 올린다** — 별도 엔진 바이너리가 필요. Drizzle/Kysely로 교체.

- **모든 걸 tRPC로** — 외부 공개 API까지 tRPC로 묶다가 다른 언어 클라이언트가 못 붙는다.

- **Bun을 production에 무작정** — 일부 네이티브 모듈이 안 도는 걸 확인 안 하고 채택.

- **Hono RPC에 너무 의존** — 컴파일 시간이 느려지고 타입 추론이 폭발.

- **NestJS 모듈 분할 과다** — 작은 앱에 모듈을 50개 만들어서 가독성 망친다.

- **Effect를 팀 합의 없이 도입** — 한 사람만 함수형이면 PR 리뷰가 막힌다.

33장 · 성능 벤치마크의 함정

"TechEmpower 점수"만 보고 결정하면 안 된다는 게 2026년 합의.

- **`Hello World`** 벤치마크는 미들웨어 · ORM · 외부 API 호출이 빠진 비현실 시나리오.

- 실제 production은 **DB latency가 80% 이상**을 차지한다. 프레임워크가 빨라도 DB 쿼리가 느리면 무의미.

- **메모리 효율 · 가비지 컬렉터 압력 · TTFB의 p99**가 throughput보다 중요한 경우가 많다.

- **콜드 스타트**는 서버리스에서만 중요하다. 컨테이너 origin에서는 신경 안 써도 됨.

벤치마크는 참고만 하고, **자기 워크로드로 부하 테스트(k6 · autocannon · oha)** 하는 게 진실에 가깝다.

34장 · 학습 로드맵

이미 Node를 어느 정도 할 줄 안다는 가정.

1. **Hono를 1주 안에**: Workers 무료 플랜에 Hono + D1로 Todo API 띄우기.

2. **Fastify를 2주 안에**: Postgres + Drizzle + Zod로 작은 SaaS API + OpenAPI 자동 생성.

3. **NestJS를 한 달 안에**: 책 한 권(공식 docs 또는 Ariel Weinberger 강의) + 작은 마이크로서비스 데모.

4. **tRPC를 일주일 안에**: Next.js 모노레포에 tRPC로 풀스택 CRUD.

5. **Effect를 두 달 안에**: 함수형 입문이 필요하면 더 길게.

면접 단골 — **이벤트 루프**, **백프레셔**, **클러스터 · worker_threads**, **stream API**, **CommonJS vs ESM**, **N+1 문제와 dataloader**, **GraphQL N+1 미티게이션**, **JWT vs 세션**, **rate limit 알고리즘(token bucket, sliding window)**.

35장 · 마무리 — 정답은 없지만 좋은 질문은 있다

2026년의 JavaScript 백엔드 풍경은 "Node + Express" 시대보다 훨씬 복잡해졌지만, 그건 옵션이 늘어서이지 진보가 늦어서가 아니다. **엣지 컴퓨팅이 production이 됐고**, **타입 안전성이 디폴트가 됐고**, **인프라가 코드가 됐고**, **콜드 스타트가 0에 가까워졌다**.

다음 프로젝트를 시작할 때, "어떤 프레임워크가 핫한가" 대신 이 질문을 먼저.

1. 어디서 도는가? 엣지인가, origin인가, 둘 다인가?

2. 누가 짜는가? 함수형이 가능한 팀인가, 데코레이터가 익숙한가?

3. 외부에 공개하는가? 그렇다면 OpenAPI · REST.

4. 클라이언트는 누가 짜는가? 같은 모노레포면 tRPC, 다른 언어면 gRPC/REST.

5. 운영을 누가 하는가? DevOps가 부족하면 Vercel · Railway · Encore.

6. 6개월 뒤 후회하지 않을 만한가? "트렌드"보다 "유지보수 인구"가 중요.

좋은 백엔드는 좋은 프레임워크에서 나오지 않는다. **좋은 질문**에서 나온다.

참고 자료 (References)

- Node.js Releases — [https://nodejs.org/en/about/previous-releases](https://nodejs.org/en/about/previous-releases)

- Node.js 22 LTS Blog — [https://nodejs.org/en/blog/release/v22.11.0](https://nodejs.org/en/blog/release/v22.11.0)

- Bun Documentation — [https://bun.sh/docs](https://bun.sh/docs)

- Deno 2 Release — [https://deno.com/blog/v2](https://deno.com/blog/v2)

- Cloudflare Workers — [https://developers.cloudflare.com/workers/](https://developers.cloudflare.com/workers/)

- Hono — [https://hono.dev/](https://hono.dev/)

- Fastify v5 — [https://fastify.dev/blog/2024/10/01/fastify-v5-ga/](https://fastify.dev/blog/2024/10/01/fastify-v5-ga/)

- Express 5 Release — [https://expressjs.com/2024/10/15/v5-release.html](https://expressjs.com/2024/10/15/v5-release.html)

- Koa.js — [https://koajs.com/](https://koajs.com/)

- NestJS — [https://nestjs.com/](https://nestjs.com/)

- AdonisJS 6 — [https://adonisjs.com/](https://adonisjs.com/)

- Elysia — [https://elysiajs.com/](https://elysiajs.com/)

- h3 — [https://h3.unjs.io/](https://h3.unjs.io/)

- Nitro — [https://nitro.unjs.io/](https://nitro.unjs.io/)

- Encore TS — [https://encore.dev/](https://encore.dev/)

- Effect — [https://effect.website/](https://effect.website/)

- tRPC — [https://trpc.io/](https://trpc.io/)

- Zod — [https://zod.dev/](https://zod.dev/)

- Valibot — [https://valibot.dev/](https://valibot.dev/)

- ArkType — [https://arktype.io/](https://arktype.io/)

- TypeBox — [https://github.com/sinclairzx81/typebox](https://github.com/sinclairzx81/typebox)

- Prisma — [https://www.prisma.io/](https://www.prisma.io/)

- Drizzle ORM — [https://orm.drizzle.team/](https://orm.drizzle.team/)

- Kysely — [https://kysely.dev/](https://kysely.dev/)

- BullMQ — [https://docs.bullmq.io/](https://docs.bullmq.io/)

- Auth.js — [https://authjs.dev/](https://authjs.dev/)

- Lucia — [https://lucia-auth.com/](https://lucia-auth.com/)

- Pino — [https://getpino.io/](https://getpino.io/)

- Socket.io — [https://socket.io/](https://socket.io/)

- Mercari Engineering Hono Article — [https://engineering.mercari.com/en/blog/](https://engineering.mercari.com/en/blog/)

- Toss Tech — [https://toss.tech/](https://toss.tech/)

현재 단락 (1/374)

2018년쯤 누가 "JavaScript로 백엔드 짠다" 그러면 의문의 여지 없이 Node.js + Express였다. 2026년에 같은 말을 들으면 적어도 일곱 가지를 되묻는다. ...

작성 글자: 0원문 글자: 19,843작성 단락: 0/374