Tirne: Bun, Node, Deno, Workers를 위한 명확한 Go 스타일 웹 프레임워크
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
웹 개발
대상자
- 웹 개발자, 특히 스케일링이 필요한 대규모 애플리케이션 개발자
- Hono/Elysia의 복잡성과 스케일링 문제를 겪은 개발자
- 명확하고 예측 가능한 아키텍처를 선호하는 엔지니어
핵심 요약
- 명확한 구조를 기반으로 한 Go 스타일의
net/http
패러다임 채택 - 명시적 미들웨어(
compose(fn[])
)와 에러 처리(return errors
대신throw
비추천) 강조 - Bun, Node, Deno, Cloudflare Workers 등 다중 런타임 지원
- 5가지 핵심 원칙 적용: 함수 우선, 예측 가능성, 병렬 처리, 단일 파일 관리
섹션별 세부 요약
1. 기존 프레임워크의 한계
- Hono/Elysia의 문제점:
- 플러그인 기반 미들웨어로 인한 글로벌 상태 혼란
- 데코레이터의 암묵적 동작으로 인한 디버깅 어려움
- 암시적 라우팅 로직으로 인한 추적 불가능성
- 스케일링 실패 사례:
- 30일 경과 후 유지보수가 불가능한 추상화 스프루스(abstract soup) 발생
2. Tirne의 설계 철학
- Go 인스피레이션:
- 함수가 일급 시민, 구조가 명확한
net/http
스타일 채택 - 예시 코드:
```ts
import { createRouter, json } from "tirne";
const routes = [{ method: "GET", path: "/", handler: () => json({ msg: "Hello" }) }];
Bun.serve({ fetch: createRouter(routes) });
```
- 5가지 핵심 원칙:
- 5줄 이상의 코드는 필요하지 않다.
- 함수 > 프레임워크. 항상 함수 우선.
- 에러는
return
으로 처리,throw
사용 금지. - 성인처럼 병렬 처리.
- 하나의 파일로 충분하다.
3. 비교 분석
| 항목 | Tirne ✨ | Hono 🌿 | Elysia 🧠 |
|--------------|----------|---------|-----------|
| 구조 | ✅ 순수 데이터 & 함수 | ❌ 체인식 DSL | ❌ 매직 매크로 |
| 미들웨어 | ✅ compose(fn[])
| ❌ 글로벌 스파게티 | ❌ 플러그인 지옥 |
| 타입 안정성 | ⚪️ 조합 가능 & 가독성 | ⚪️ 중간 수준 | 🔴 과도한 복잡성 |
| 런타임 | ✅ Bun, Node, Deno, Workers | ✅ 대부분 지원 | ❌ Bun만 지원 |
| 스케일링 | ✅ 예측 가능 & 명시적 | ❌ 은닉된 사이드 이펙트 | ❌ 프레임워크 결합 |
4. 설치 및 실행 예제
- Bun:
```bash
bun init
bun add tirne
touch index.ts
bun run index.ts
```
- Deno:
```bash
deno run --allow-net index.ts
// deno.json 설정 포함
```
- Cloudflare Workers:
```bash
wrangler dev
// src/index.ts에 라우트 정의
```
- Node.js:
```bash
npx ts-node index.ts
// http 모듈과 호환성 검증
```
결론
- 예측 가능하고 유지보수가 쉬운 아키텍처를 위해 Tirne을 선택하세요.
- "Zero-boilerplate"는 "zero control"을 의미하지 않도록 명시적 설계를 고수해야 합니다.
- Go 스타일의 명확한 에러 처리와 병렬 처리를 통해 생산성 향상 가능.