LabHub

Blog

Modern Backend Frameworks 2025 — NestJS, Fastify, Hono, Elysia, Spring Boot, FastAPI, Go, Axum, tRPC, GraphQL, gRPC (S7 E2)

한국어English日本語

Prologue — the framework question is back

"Which backend framework?" feels like a 2015 question. But it's back — for real reasons:

Old favorites (Express, Django, Flask) still work. But if you're starting new in 2026, you have a better default.


1. TypeScript backends

NestJS

Fastify

Hono

Elysia

Quick table

FrameworkRuntimeCold-startType ergonomicsEcosystem
NestJSNodeSlowDI + decoratorsHuge
FastifyNodeFastJSON SchemaLarge
HonoEdge/Node/Bun/DenoVery fastGoodGrowing
ElysiaBunVery fastBest-in-classSmall

2. JVM — Spring Boot, Micronaut, Quarkus

Spring Boot

Micronaut / Quarkus

Use when


3. Python — FastAPI, Litestar, Django Ninja

FastAPI

Litestar

Django Ninja

Note


4. Go — Fiber, Echo, Chi, Gin, net/http

The net/http shift (Go 1.22+)

Third-party

Use when


5. Rust — Axum, Actix-web, Rocket

Axum

Actix-web

Use when


6. API styles — REST, tRPC, GraphQL, gRPC

REST + OpenAPI

tRPC

GraphQL

gRPC / Connect

Quick picks


7. Validation and schemas — Zod, Valibot, ArkType

Pick one across the stack — mixing is painful.


8. ORM / data layer


9. Auth — the 2025 landscape


10. Observability

Rule: instrument traces at the framework layer, logs at the service layer, metrics at the system layer.


11. Background jobs

Temporal is the 2025 pick for complex multi-step workflows.


12. Deployment — runtime + framework combos that "just work"


13. Decision tree

Q1: Edge/serverless target?
├─ Yes: Hono (edge), Elysia (Bun), FastAPI (Lambda), Quarkus (native)
└─ NoQ2

Q2: TS monorepo, FE/BE tight?
├─ Yes: Next.js API / tRPC / Hono
└─ NoQ3

Q3: Enterprise Java/Kotlin, regulated?
├─ Yes: Spring Boot (+ Virtual Threads)
└─ NoQ4

Q4: High throughput / low latency critical?
├─ Yes: Go (Fiber/Echo/Chi) or Rust (Axum)
└─ NoQ5

Q5: Python data/AI-adjacent?
├─ Yes: FastAPI / Litestar
└─ No: NestJS or Fastify

12-item adoption checklist

  1. Team language/runtime strengths mapped?
  2. Cold-start budget defined?
  3. Type sharing with frontend planned?
  4. OpenAPI or schema source-of-truth picked?
  5. ORM chosen considering scale/migrations?
  6. Background job runner chosen?
  7. Auth library decided (self-host vs managed)?
  8. Observability stack integrated from day 1?
  9. Rate limiting / abuse prevention layered in?
  10. Local dev matches prod (Docker/Bun/Node parity)?
  11. Testing strategy — unit + integration + contract?
  12. Deployment pipeline automated, rollback tested?

10 common anti-patterns

  1. Picking NestJS for a 500-line service "just in case."
  2. Using GraphQL when 3 REST endpoints would do.
  3. Ignoring cold-start on serverless — big framework + heavy DI.
  4. Shared schemas stolen from frontend types (drift hell).
  5. No schema validation at the edge (all errors surface as 500 later).
  6. ORM lazy-loading in a loop — N+1 becomes 1000+1.
  7. Long-lived DB connections in Lambda — connection storm.
  8. Auth rolled from scratch — mistakes will happen.
  9. No OpenAPI → no client codegen → manual fetch calls everywhere.
  10. Deploying to Kubernetes "because we have Kubernetes" — often overkill.

Next episode

S7 E3 — Distributed Databases 2025: CockroachDB, Spanner, TiDB, Yugabyte, Aurora DSQL, Neon, PlanetScale, Turso, D1. How to pick, not a "best of."

— End of Modern Backend Frameworks.

Comments

No comments yet.

Sign in to leave a comment