Skip to content

Hono

Hono - 일본어로 '불꽃🔥'을 의미한다 - 는 웹 표준을 기반으로 구축된 작고 간단하며 초고속 웹 프레임워크이다. Cloudflare Workers, Fastly Compute, Deno, Bun, Vercel, Netlify, AWS Lambda, Lambda@Edge, Node.js 등 모든 자바스크립트 런타임에서 동작한다.

빠를 뿐만 아니라 더 많은 장점을 제공한다.

ts
import { Hono } from 'hono'
const app = new Hono()

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

export default app

빠른 시작

다음 명령어를 실행하면 된다:

sh
npm create hono@latest
sh
yarn create hono
sh
pnpm create hono@latest
sh
bun create hono@latest
sh
deno init --npm hono@latest

주요 기능

  • 초고속 🚀 - RegExpRouter는 선형 루프를 사용하지 않아 매우 빠르다. 속도가 빠르다.
  • 경량화 🪶 - hono/tiny 프리셋은 14kB 미만이다. Hono는 의존성이 없고 웹 표준만 사용한다.
  • 멀티 런타임 🌍 - Cloudflare Workers, Fastly Compute, Deno, Bun, AWS Lambda, Node.js 등 다양한 환경에서 동작한다. 동일한 코드가 모든 플랫폼에서 실행된다.
  • 필수 기능 내장 🔋 - Hono는 기본 미들웨어, 커스텀 미들웨어, 서드파티 미들웨어, 헬퍼 함수를 제공한다. 필요한 모든 기능이 포함되어 있다.
  • 탁월한 개발자 경험 😃 - 깔끔한 API를 제공한다. 퍼스트클래스 TypeScript 지원을 통해 타입을 완벽하게 활용할 수 있다.

사용 사례

Hono는 Express와 유사한 간단한 웹 애플리케이션 프레임워크로, 프론트엔드 기능은 포함하지 않는다. 하지만 CDN 에지에서 실행되며, 미들웨어와 결합하면 더 큰 애플리케이션을 구축할 수 있다. 다음은 Hono의 주요 사용 사례들이다.

  • 웹 API 구축
  • 백엔드 서버의 프록시
  • CDN의 프론트엔드
  • 에지 애플리케이션
  • 라이브러리의 기본 서버
  • 풀스택 애플리케이션

Hono를 사용하는 곳은?

프로젝트플랫폼용도
cdnjsCloudflare Workers무료 오픈소스 CDN 서비스. Hono는 API 서버로 사용됨.
Cloudflare D1Cloudflare Workers서버리스 SQL 데이터베이스. Hono는 내부 API 서버로 사용됨.
Cloudflare Workers KVCloudflare Workers서버리스 키-값 데이터베이스. Hono는 내부 API 서버로 사용됨.
BaseAI로컬 AI 서버메모리가 있는 서버리스 AI 에이전트 파이프라인. 웹을 위한 오픈소스 에이전트 AI 프레임워크. Hono로 API 서버 구현.
UnkeyCloudflare Workers오픈소스 API 인증 및 권한 부여. Hono는 API 서버로 사용됨.
OpenStatusBun오픈소스 웹사이트 및 API 모니터링 플랫폼. Hono는 API 서버로 사용됨.
Deno BenchmarksDenoV8 기반의 안전한 TypeScript 런타임. Hono는 벤치마킹에 사용됨.

그 외에도 다음과 같은 프로젝트가 있다.

더 많은 사례를 확인하고 싶다면 Hono를 실제 프로덕션에서 사용하는 곳을 참고하라.

Hono를 1분 만에 이해하기

Hono를 사용해 Cloudflare Workers용 애플리케이션을 만드는 데모를 소개한다.

데모

초고속 성능

Hono는 Cloudflare Workers용 라우터 중에서 가장 빠르다.

Hono x 402,820 ops/sec ±4.78% (80 runs sampled)
itty-router x 212,598 ops/sec ±3.11% (87 runs sampled)
sunder x 297,036 ops/sec ±4.76% (77 runs sampled)
worktop x 197,345 ops/sec ±2.40% (88 runs sampled)
Fastest is Hono
✨  Done in 28.06s.

더 많은 벤치마크는 여기에서 확인할 수 있다.

경량성

Hono는 매우 가볍다. hono/tiny 프리셋을 사용하면, 압축 후 크기가 14KB 미만이다. 다양한 미들웨어와 어댑터가 있지만, 사용할 때만 번들에 포함된다. 참고로 Express의 크기는 572KB이다.

$ npx wrangler dev --minify ./src/index.ts
 ⛅️ wrangler 2.20.0
--------------------
⬣ Listening at http://0.0.0.0:8787
- http://127.0.0.1:8787
- http://192.168.128.165:8787
Total Upload: 11.47 KiB / gzip: 4.34 KiB

다중 라우터

Hono는 여러 종류의 라우터를 제공한다.

RegExpRouter는 자바스크립트 세계에서 가장 빠른 라우터다. 라우트를 매칭하기 위해 디스패치 전에 하나의 큰 정규식을 생성한다. SmartRouter와 함께 사용하면 모든 라우트 패턴을 지원한다.

LinearRouter는 라우트를 매우 빠르게 등록하므로, 매번 애플리케이션을 초기화하는 환경에 적합하다. PatternRouter는 단순히 패턴을 추가하고 매칭하기 때문에 가볍다.

라우터에 대한 더 많은 정보를 참고하자.

웹 표준

웹 표준을 활용함으로써, Hono는 다양한 플랫폼에서 동작한다.

  • Cloudflare Workers
  • Cloudflare Pages
  • Fastly Compute
  • Deno
  • Bun
  • Vercel
  • AWS Lambda
  • Lambda@Edge
  • 기타

또한 Node.js 어댑터를 사용하면, Hono는 Node.js에서도 동작한다.

웹 표준에 대한 더 많은 정보를 확인해 보자.

미들웨어 & 헬퍼

Hono는 다양한 미들웨어와 헬퍼를 제공한다. 이를 통해 "적은 코드로 더 많은 일을 할 수 있다"는 철학을 실현한다.

Hono는 기본적으로 다음과 같은 미들웨어와 헬퍼를 지원한다:

예를 들어, ETag와 요청 로깅을 추가하는 것은 Hono를 사용하면 단 몇 줄의 코드로 가능하다:

ts
import { Hono } from 'hono'
import { etag } from 'hono/etag'
import { logger } from 'hono/logger'

const app = new Hono()
app.use(etag(), logger())

미들웨어에 대한 더 많은 정보를 확인할 수 있다.

개발자 경험

Hono는 뛰어난 개발자 경험을 제공한다.

Context 객체 덕분에 Request/Response에 쉽게 접근할 수 있다. 또한 Hono는 TypeScript로 작성되어 있어 타입을 지원한다.

예를 들어, 경로 매개변수는 리터럴 타입으로 처리된다.

SS

또한, Validator와 Hono Client(hc)는 RPC 모드를 가능하게 한다. RPC 모드에서는 Zod와 같은 선호하는 검증 도구를 사용할 수 있고, 서버 측 API 스펙을 클라이언트와 쉽게 공유하여 타입 안전한 애플리케이션을 구축할 수 있다.

자세한 내용은 Hono 스택을 참고한다.

Released under the MIT License.