← all workresearch

Example API

One CRUD + JWT API, ten implementations across .NET, Python and TypeScript — behind a single OpenAPI contract, benchmarked fairly.

.NETC#PythonTypeScriptOpenAPIk6Docker

Architecture

One OpenAPI contract→10 implementations→Black-box conformance→k6 load harness→Results dashboard

Interactive benchmark

Throughput at 4 CPU cores — .NET scales, Node/Python plateau (req/s). · median of 3 local k6 runs (repo docs/comparison.md); FastAPI’s 4-core point is its documented single-worker plateau.

The question

Does architecture — Minimal / MVC / Clean / MediatR / Vertical-Slice — actually move performance? And how do the runtimes really compare on the same workload, at what cost in code ceremony?

How it startedresearch

Wrote one OpenAPI contract, then implemented it ten ways: 5×.NET, 3×Python, 2×TS. A black-box conformance suite proves every implementation behaves identically before it is measured.

Decisions & tradeoffs

Resource-fair benchmarking with k6: identical workload, hardware parity, pinned versions, warm-up + measurement + cooldown windows. Report full tail-latency (p50/p95/p99) and coefficient of variation — not just averages.

Findings

Within .NET, architecture barely moves performance (~20% spread). Across runtimes the concurrency model dominates: multi-threaded .NET scales ~12× to four cores while single-process Node / FastAPI plateau. Code ceremony ranged from 1 file / 382 LOC to 48 files / 1,823 LOC.

Screenshots

The live results dashboard — pick an implementation, inspect it, read what each approach costs

By the numbers

10
implementations
~12×
.NET → 4 cores
1744→329
req/s @1 CPU
4
bugs found