프레임워크에 구애받지 않는 백엔드 보일러플레이트를 만들었습니다 (Node, Bun, Express, Hono…)
Source: Dev.to
왜 하나의 프레임워크만 선택해야 할까요? 모두 가질 수 있다면? 🧠
우리는 모두 그 고민을 알고 있습니다. Express 로 프로젝트를 시작했는데, Fastify 가 속도면에서 눈에 띕니다. 혹은 Bun 이 떠오르고 Hono 나 Elysia 를 써보고 싶어지죠.
보통 프레임워크를 바꾸면 라우터, 미들웨어, 요청/응답 로직을 모두 다시 작성해야 합니다.
이제는 아닙니다.
저는 BEnder 라는 TypeScript 보일러플레이트를 만들었습니다. 이 보일러플레이트는 하부 프레임워크를 추상화해 비즈니스 로직을 한 번만 작성하면 어디서든 실행할 수 있게 해줍니다.
🧠 “Brain” 아키텍처
지저분한 routes.js 대신, BEnder는 생물학적 은유를 사용합니다:
- Neurons (디렉터리): 라우트를 자동으로 탐색하고 마운트하는 컨테이너.
- Synapses (파일): 로직을 처리하는 엔드포인트.
파일‑시스템 라우팅(Next.js와 유사)처럼 동작하지만, 백엔드 API에 맞게 엄격히 타입이 지정됩니다.
⚡ 한 번 작성, Node든 Bun든 실행
당신은 Node 팀인가요, Bun 팀인가요? 상관없습니다.
BEnder는 런타임과 설치된 패키지를 감지해 최적의 서버를 부팅합니다:
- Node.js: 기본적으로 Fastify(기본) 혹은 Express 5 를 지원합니다.
- Bun: 기본적으로 Hono 혹은 Elysia 를 지원합니다.
마법 같은 코드
진입점 (app.ts)
// 1. Initialize Infrastructure (auto-detects framework)
const { framework } = await initInfrastructure();
// 2. Initialize Neurons (Routes)
const [get, post] = [new GET(), new POST()];
// 3. Mount them universally
server.get('*', get.router).post('*', post.router);
라우트 핸들러 (“Synapse”)
export class CreateUser extends Synapse {
protected async setRouter(): Promise {
// works on Express, Fastify, Hono, AND Elysia!
this.router.post('/create', async (req: IRequest, res: IResponse) => {
// Unified Request/Response API
this.responser(res, 200, { success: true });
});
}
}
🛡️ 통합 미들웨어
보안 및 유틸리티도 추상화됩니다.
설정 (app.config.ts)
export const appConfig = {
security: {
cors: true,
helmet: true,
rateLimit: true,
},
};
BEnder는 활성화된 프레임워크에 맞는 올바른 미들웨어 패키지를 자동으로 로드합니다(예: Fastify 용 @fastify/helmet, Hono 용 hono/cors, Elysia 용 @elysiajs/limit).
🚀 직접 사용해 보기
개발자들이 몇 초 만에 견고한 백엔드를 구축할 수 있도록 오픈소스로 공개했습니다.
여기서 클론하세요: BEnder
빠른 시작
# 1. Install dependencies
npm install
# 2. Pick your flavor (e.g., Bun + Hono)
npm install hono hono-rate-limiter
# 3. Run!
bun run app.ts