L44 — Routing Frameworks (chi, gin, echo, fiber)

Ba module tương tác để chọn framework HTTP Go có cơ sở, không theo đám đông: 1) framework picker — cho scenario thật, gợi ý framework phù hợp; 2) middleware chain visualizer — request đi qua các lớp middleware như thế nào; 3) performance bar chart — so sánh route lookup giữa net/http, chi, gin, echo, fiber, và đặt vào bối cảnh thực tế (DB query).

1. Framework picker theo scenario

Click một scenario bên dưới — viz sẽ gợi ý framework phù hợp nhất kèm lý do, và liệt kê các alternative chấp nhận được. Quy tắc chọn: ưu tiên dev speed + ecosystem fit hơn là benchmark.

Click một scenario để xem gợi ý.

2. Middleware chain visualizer

Request đi từ ngoài cùng (Logger) vào trong (Handler), rồi quay ngược ra. Mỗi lớp middleware có thể: (a) chặn (auth fail → 401), (b) đo (logger ghi duration), (c) recover (panic → 500). Bấm ▶ Run request để thấy animation từng bước.

r := chi.NewRouter()
// Outer-most → innermost
r.Use(middleware.Logger)
r.Use(middleware.Recoverer)
r.Use(rateLimitMW(100))
r.Use(authMW)

r.Get("/users/{id}", getUser)
Bấm "Run request" để bắt đầu.

3. Route lookup performance

Benchmark route lookup khi không có DB hay business logic. Toggle "Trong context thật" để thấy chi/gin/echo/fiber khác nhau bao nhiêu khi xếp cạnh 1 DB query 15ms.

Vì sao framework difference negligible trong production? Bottleneck thật ở DB (5-50ms) + network (1-100ms) — route lookup chỉ là vài microsec. Chọn fiber thay gin tiết kiệm 2μs / 65000μs ≈ 0.003% tổng thời gian. Đổi framework theo perf chỉ hợp lý khi traffic > 10k req/s/máy.