Part of Microservices Recipes - The Architect's Field Guide (free, open since 2017): Read online - Book GitHub - Fulcrum repo

← Home   -   Immersive Lab

Fulcrum - RVx Boundary Health Calculator

The Khan Microservice Granularity Pattern. Move the sliders to see whether a boundary adds value or is a distributed monolith. All math matches the paper exactly.

Microservice boundary (RVx)
AI agent tools (RVx-A)
Transaction topology (SCS)
Cost of waste (DMC)
Score real services (CSV)
0.60
ⓘ How to get E for a real boundary
Measure from distributed traces (AWS X-Ray or OpenTelemetry). For a representative sample of transactions crossing the boundary, E = sum(useful local compute time) / sum(total transaction time), where waiting on remote calls, serialization, and network are overhead (not useful). Code that computes it: run_study.py (AWS Lambda) and run_testbed.py (local HTTP testbed).
0.60
ⓘ How to get S for a real boundary
Measure from version-control co-change over a trailing window (e.g. 12 months). S = 1 - (change sets touching both sides of the cut) / (change sets touching this service). Use intent-unit change sets and drop mechanical repo-wide commits (monorepos deflate S). Code: gen_git_history.py.
0.40
ⓘ How to get L for a real boundary
L = clamp(static complexity / team capacity, 0, 1). Complexity from LOC, file count, and (for serverless) code size / memory / config; capacity from the owning team's effective size. With no trustworthy capacity source, hold it constant and report the run as structural (requirement N16). Code: run_study.py (measure_L from deployed Lambda config).

0.00
-
Bands: below 0.4 distributed monolith - 0.4 to 0.7 at risk - above 0.7 optimal (illustrative defaults, calibrated per domain).
E (efficiency)
-
S (distinctness)
-
L (load)
-
RVx_raw
-
Formula: RVx = raw / (1 + raw), raw = (E^1.2 × S) / (L^0.8 + 0.1)